diff options
author | Tyler Murphy <=> | 2023-07-22 11:05:30 -0400 |
---|---|---|
committer | Tyler Murphy <=> | 2023-07-22 11:05:30 -0400 |
commit | da094d011f52a8f1ce879810cd1a4bbbe34f08d4 (patch) | |
tree | 4649b04705b49c2eb5f8691a5d9951351f65df04 /kernel/src/arch/i686/acpi.c | |
parent | refactoring (diff) | |
download | finix-main.tar.gz finix-main.tar.bz2 finix-main.zip |
Diffstat (limited to 'kernel/src/arch/i686/acpi.c')
-rw-r--r-- | kernel/src/arch/i686/acpi.c | 18 |
1 files changed, 13 insertions, 5 deletions
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 <panic.h> #include <string.h> #include <stdbool.h> @@ -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) { |