From 4cda542d863839c5b0e026ccee297ca5ff3dd9cd Mon Sep 17 00:00:00 2001 From: Miguel Date: Sun, 9 Sep 2018 17:28:59 +0200 Subject: switched to apic/ioapic finally --- kernel/acpi.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'kernel/acpi.c') diff --git a/kernel/acpi.c b/kernel/acpi.c index 8b139bf..f424312 100644 --- a/kernel/acpi.c +++ b/kernel/acpi.c @@ -1,9 +1,9 @@ #include "kernel.h" +#include "acpi.h" + #include -#include "smp.h" #include "lib/string/string.h" - typedef struct acpi_rsdt_struct { char sig[4]; @@ -49,14 +49,14 @@ typedef struct }acpi_madt; -uint8_t *apci_get_next_entry(uint8_t *addr,smp_processors *procdata) +static uint8_t *apci_get_next_entry(uint8_t *addr,acpi_information *procdata) { //klog("Examining MADT Entry at 0x%08X",addr); if(*addr==0) { - klog("Type 0: LocalAPIC (enabled=%d)",addr[4]&1); + klog("Type 0: LocalAPIC (enabled=%d) (id=0x%08X)",addr[4]&1,addr[3]); // usable if(addr[4]&1) { @@ -90,11 +90,11 @@ uint8_t *apci_get_next_entry(uint8_t *addr,smp_processors *procdata) } -void acpi_check_madt(uint32_t *madt,smp_processors *procdata) +static void acpi_check_madt(uint32_t *madt,acpi_information *procdata) { acpi_madt *table=(acpi_madt *)*madt; -// klog("Looking for MADT Table at %08X.",table); +// klog("Looking for MADT Table at %08X.",table); if(!strcmp_l("APIC",table->sig,4)) { klog("Found MADT Table at 0x%08X",table); @@ -106,6 +106,7 @@ void acpi_check_madt(uint32_t *madt,smp_processors *procdata) procdata->local_apic_address=table->apic_local; klog("Local Apic Address: 0x%08X",table->apic_local); + procdata->flags=table->flags; klog("Flags (Dual 8259): %d",table->flags); @@ -116,7 +117,7 @@ void acpi_check_madt(uint32_t *madt,smp_processors *procdata) } } -void acpi_read_rsdt(acpi_rsdt *rsdt,smp_processors *procdata) +static void acpi_read_rsdt(acpi_rsdt *rsdt,acpi_information *procdata) { klog("Reading RSDT Table at 0x%08X",rsdt); @@ -142,7 +143,7 @@ void acpi_read_rsdt(acpi_rsdt *rsdt,smp_processors *procdata) // 0x7ffff - 0x9ffff (max) // 0xe0000 - 0xfffff -bool acpi_find(smp_processors *procdata) +bool acpi_fill(acpi_information *procdata) { klog("Looking for RSDP Table"); char *search=(char *)0x9f000; //will be 16 bit aligned; @@ -160,7 +161,7 @@ bool acpi_find(smp_processors *procdata) if(checksum==0) { - klog("RSDP Table found at 0x%08X",search); + klog("RSD Pointer found at 0x%08X",search); acpi_rsdp *rsdp=(acpi_rsdp *)search; acpi_read_rsdt(rsdp->ptr_rsdt,procdata); return true; -- cgit v1.2.3