Store pertinent ACPI table pointers

This commit is contained in:
Josh Holtrop 2023-09-17 11:22:58 -04:00
parent 3412d9ece9
commit fa4de31aa4

View File

@ -9,7 +9,7 @@ import hulk.memory;
struct Acpi struct Acpi
{ {
static uint signature(string s) private static uint signature(string s)
{ {
return s[0] | (s[1] << 8) | (s[2] << 16) | (s[3] << 24); return s[0] | (s[1] << 8) | (s[2] << 16) | (s[3] << 24);
} }
@ -111,7 +111,11 @@ struct Acpi
} }
} }
public static __gshared ulong apic_address; public __gshared ulong apic_address;
public __gshared MADT * madt;
public __gshared MCFG * mcfg;
public static void initialize(ulong acpi_xsdt_phys) public static void initialize(ulong acpi_xsdt_phys)
{ {
@ -148,11 +152,13 @@ struct Acpi
(signature >> 24u) & 0xFFu); (signature >> 24u) & 0xFFu);
if (signature == APIC_SIGNATURE) if (signature == APIC_SIGNATURE)
{ {
(cast(MADT *)address).initialize(); madt = cast(MADT *)address;
madt.initialize();
} }
else if (signature == MCFG_SIGNATURE) else if (signature == MCFG_SIGNATURE)
{ {
(cast(MCFG *)address).initialize(); mcfg = cast(MCFG *)address;
mcfg.initialize();
} }
} }
} }