From 504de44ff369f024576aa38420dcec4ffddd3798 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Tue, 17 Apr 2018 09:18:09 -0700 Subject: [PATCH] Make APIC addresses uint32_t* APIC registers need to be read/written 32 bits at a time, so best to keep these as pointers to that size. --- src/modules/main/device_manager.cpp | 5 +++-- src/modules/main/device_manager.h | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) 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;