aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/acpi.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/acpi.hpp')
-rw-r--r--src/drivers/acpi.hpp43
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);
+