#pragma once #include "include/boucane.hpp" #define ACPI_RSDP_SIGNATURE 0x2052545020445352 #define ACPI_RSDT_SIGNATURE 0x54445352 #define ACPI_MADT_SIGNATURE 0x43495041 typedef struct RSDP { u64 signature; u8 checksum; u64 oemid:48; u8 revision; u32 rsdt_addr; u32 length; } __attribute__((packed)) RSDP; typedef struct ACPI_TABLE_HEADER { u32 signature; u32 length; u8 revision; u8 checksum; u64 oemid:48; u64 oem_table_id; u32 oem_revision; u32 creator_id; u32 creator_revision; } __attribute__((packed)) ACPI_TABLE_HEADER; typedef struct RSDT { ACPI_TABLE_HEADER header; u32 first_entry_addr_ptr; } __attribute__((packed)) RSDT; typedef struct INT_CTRL_HEADER { u8 type; u8 length; } __attribute__((packed)) INT_CTRL_HEADER; char acpi_load_madt(void* rsdp_p); char acpi_checksum(void* p, char size);