diff --git a/src/modules/main/device_manager.cpp b/src/modules/main/device_manager.cpp index 1d95f42..ad9c947 100644 --- a/src/modules/main/device_manager.cpp +++ b/src/modules/main/device_manager.cpp @@ -123,10 +123,11 @@ device_manager::load_apic(const acpi_apic *apic) { console *cons = console::get(); - m_local_apic = reinterpret_cast(apic->local_address); + m_local_apic = reinterpret_cast(apic->local_address); cons->puts(" "); cons->put_hex(apic->local_address); + uint8_t const *p = apic->controller_data; uint8_t const *end = p + acpi_table_entries(apic, 1); @@ -142,7 +143,7 @@ device_manager::load_apic(const acpi_apic *apic) break; case 1: // I/O APIC - m_io_apic = reinterpret_cast(read_from(p+4)); + m_io_apic = reinterpret_cast(read_from(p+4)); m_global_interrupt_base = read_from(p+8); cons->puts(" "); cons->put_hex((uint64_t)m_io_apic); diff --git a/src/modules/main/device_manager.h b/src/modules/main/device_manager.h index 5477ae4..7bfe6ab 100644 --- a/src/modules/main/device_manager.h +++ b/src/modules/main/device_manager.h @@ -15,8 +15,8 @@ public: uint8_t * io_apic() const; private: - uint8_t *m_local_apic; - uint8_t *m_io_apic; + uint32_t *m_local_apic; + uint32_t *m_io_apic; uint32_t m_global_interrupt_base;