diff options
Diffstat (limited to 'src/drivers/acpi.hpp')
| -rw-r--r-- | src/drivers/acpi.hpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/drivers/acpi.hpp b/src/drivers/acpi.hpp new file mode 100644 index 0000000..7bbcdb0 --- /dev/null +++ b/src/drivers/acpi.hpp @@ -0,0 +1,43 @@ +#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); + |
