diff options
Diffstat (limited to 'src/arch/i386/boot/tables.c')
-rw-r--r-- | src/arch/i386/boot/tables.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/arch/i386/boot/tables.c b/src/arch/i386/boot/tables.c index 9991415..17338ef 100644 --- a/src/arch/i386/boot/tables.c +++ b/src/arch/i386/boot/tables.c @@ -116,7 +116,12 @@ struct lb_memory *write_tables(void) acpi_start++; } if (acpi_start != high_table_end) { - acpi_write_rsdp((acpi_rsdp_t *)rom_table_end, ((acpi_rsdp_t *)acpi_start)->rsdt_address); + acpi_rsdp_t *low_rsdp = (acpi_rsdp_t *)rom_table_end, + *high_rsdp = (acpi_rsdp_t *)acpi_start; + + acpi_write_rsdp(low_rsdp, + (acpi_rsdt_t *)(high_rsdp->rsdt_address), + (acpi_xsdt_t *)(high_rsdp->xsdt_address)); } else { printk_err("ERROR: Didn't find RSDP in high table.\n"); } |