aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/acpi.hpp
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2021-04-25 12:41:24 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2021-04-25 12:41:24 +0200
commit7db6db5ae64e7ab2626bbd898c63f58e053dc1a6 (patch)
treeaac3b4b8755acbea397709a00611642c2534f053 /src/drivers/acpi.hpp
parent657372f1be95393b76a54f258ba3f937b4073abe (diff)
Debug multiboot, enable apic and ACPI table parsing
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);
+