From da094d011f52a8f1ce879810cd1a4bbbe34f08d4 Mon Sep 17 00:00:00 2001 From: Tyler Murphy <=> Date: Sat, 22 Jul 2023 11:05:30 -0400 Subject: paging is not very fun --- kernel/src/arch/i686/acpi.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'kernel/src/arch/i686/acpi.c') diff --git a/kernel/src/arch/i686/acpi.c b/kernel/src/arch/i686/acpi.c index 7807558..17155ce 100644 --- a/kernel/src/arch/i686/acpi.c +++ b/kernel/src/arch/i686/acpi.c @@ -1,3 +1,5 @@ +#include "arch/i686/mboot.h" +#include "arch/i686/paging.h" #include #include #include @@ -73,20 +75,25 @@ static void read_s5_addr(void) { } } -void acpi_init(void *ptr) { - - struct RootSystemDescriptionPointer *rsdp = ptr; +void acpi_init(void) { + struct BootTag *tag; + if (!get_boot_tag(ID_RSDP, &tag)) { + panic("Could not find RSDP"); + } + struct RootSystemDescriptionPointer *rsdp = tag->data.rsdp; if (!checksum((uint8_t*) rsdp, sizeof(struct RootSystemDescriptionPointer))) { panic("RSDP checksum failed to validate"); } - uintptr_t rsdt_ptr = rsdp->rsdt_address; rsdt = (void *) rsdt_ptr; + ident_map_addr(rsdt, 1000); if (!checksum((uint8_t*) &rsdt->header, rsdt->header.length)) { panic("RSDT checksum failed to validate"); } - + return; + fadt = find_fadt(); + if (fadt == NULL) { panic("Could not find FADT"); } @@ -98,6 +105,7 @@ void acpi_init(void *ptr) { read_s5_addr(); outb(fadt->smi_command_port,fadt->acpi_enable); + panic("C"); } void acpi_poweroff(void) { -- cgit v1.2.3-freya