diff options
author | Freya Murphy <freya@freyacat.org> | 2025-04-08 17:55:23 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2025-04-08 17:55:23 -0400 |
commit | 0d8a06e96d70b5a6a23dd086737a8df30f709e0e (patch) | |
tree | f06e93ef53acd7e2be157a745fb6e8480b563727 /kernel/mboot/rsdp.c | |
parent | backtrace (diff) | |
download | comus-0d8a06e96d70b5a6a23dd086737a8df30f709e0e.tar.gz comus-0d8a06e96d70b5a6a23dd086737a8df30f709e0e.tar.bz2 comus-0d8a06e96d70b5a6a23dd086737a8df30f709e0e.zip |
refactor mboot
Diffstat (limited to '')
-rw-r--r-- | kernel/mboot/rsdp.c | 23 |
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; } |