From 95d1eb6d381b3eeaf0a8c3de57d5ee554229bcd6 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Tue, 24 Jan 2023 01:55:35 +0100 Subject: parsing RSDP & MADT --- kernel/include/madt.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 kernel/include/madt.h (limited to 'kernel/include/madt.h') diff --git a/kernel/include/madt.h b/kernel/include/madt.h new file mode 100644 index 0000000..de3eb95 --- /dev/null +++ b/kernel/include/madt.h @@ -0,0 +1,55 @@ +#ifndef MADT_H +#define MADT_H + +#include + +struct MADT { + struct ACPI_header h; + uint32_t lacpi_addr; + uint32_t flags; +} __attribute__((packed)); + +struct MADT_type_header { + uint8_t type; + uint8_t len; +} __attribute__((packed)); + +struct MADT_cpu_local_apic { + struct MADT_type_header h; + uint8_t acpi_id; + uint8_t apic_id; + uint32_t flags; +} __attribute__((packed)); + +struct MADT_io_apic { + struct MADT_type_header h; + uint8_t apic_id; + uint8_t reserved; + uint32_t io_apic_addr; + uint32_t int_base; +} __attribute__((packed)); + +struct MADT_io_apic_int { + struct MADT_type_header h; + uint8_t bus_source; + uint8_t irq_source; + uint32_t global_sys_int; + uint16_t flags; +} __attribute__((packed)); + +struct MADT_lapic_nmi { + struct MADT_type_header h; + uint8_t acpi_cpu_id; + uint16_t flags; + uint8_t lint; +} __attribute__((packed)); + +struct MADT_lapic_addr { + struct MADT_type_header h; + uint16_t reserved; + uint64_t phys_addr; +} __attribute__((packed)); + +void parse_madt(void); + +#endif -- cgit v1.2.3