summaryrefslogtreecommitdiff
path: root/kernel/mboot/rsdp.c
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-08 17:55:23 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-08 17:55:23 -0400
commit0d8a06e96d70b5a6a23dd086737a8df30f709e0e (patch)
treef06e93ef53acd7e2be157a745fb6e8480b563727 /kernel/mboot/rsdp.c
parentbacktrace (diff)
downloadcomus-0d8a06e96d70b5a6a23dd086737a8df30f709e0e.tar.gz
comus-0d8a06e96d70b5a6a23dd086737a8df30f709e0e.tar.bz2
comus-0d8a06e96d70b5a6a23dd086737a8df30f709e0e.zip
refactor mboot
Diffstat (limited to '')
-rw-r--r--kernel/mboot/rsdp.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/kernel/mboot/rsdp.c b/kernel/mboot/rsdp.c
index 48afff3..f20d986 100644
--- a/kernel/mboot/rsdp.c
+++ b/kernel/mboot/rsdp.c
@@ -3,21 +3,36 @@
#include "mboot.h"
+#define MULTIBOOT_TAG_TYPE_ACPI_OLD 14
+#define MULTIBOOT_TAG_TYPE_ACPI_NEW 15
+
+struct multiboot_tag_old_acpi {
+ uint32_t type;
+ uint32_t size;
+ uint8_t rsdp[];
+};
+
+struct multiboot_tag_new_acpi {
+ uint32_t type;
+ uint32_t size;
+ uint8_t rsdp[];
+};
+
void *mboot_get_rsdp(void)
{
void *tag;
// acpi 2.0
- tag = locate_mboot_table(MBOOT_NEW_RSDP);
+ tag = locate_mboot_table(MULTIBOOT_TAG_TYPE_ACPI_NEW);
if (tag != NULL) {
- struct mboot_tag_new_rsdp *rsdp = (struct mboot_tag_new_rsdp *)tag;
+ struct multiboot_tag_new_acpi *rsdp = (struct multiboot_tag_new_acpi *)tag;
return rsdp->rsdp;
}
// acpi 1.0
- tag = locate_mboot_table(MBOOT_OLD_RSDP);
+ tag = locate_mboot_table(MULTIBOOT_TAG_TYPE_ACPI_OLD);
if (tag != NULL) {
- struct mboot_tag_old_rsdp *rsdp = (struct mboot_tag_old_rsdp *)tag;
+ struct multiboot_tag_old_acpi *rsdp = (struct multiboot_tag_old_acpi *)tag;
return rsdp->rsdp;
}