diff options
Diffstat (limited to 'boot/limine')
| -rw-r--r-- | boot/limine/memorymap.c | 2 | ||||
| -rw-r--r-- | boot/limine/start.c | 9 | ||||
| -rw-r--r-- | boot/limine/uacpi.c | 10 |
3 files changed, 20 insertions, 1 deletions
diff --git a/boot/limine/memorymap.c b/boot/limine/memorymap.c index 3ee9bdc..72c8de3 100644 --- a/boot/limine/memorymap.c +++ b/boot/limine/memorymap.c @@ -40,6 +40,8 @@ mem_setup_untyped(void) kprintf("Memory map provided by Limine:\n"); size_t untyped_i = 0; + size_t acpi_i = 0; + uintptr_t highest_phys = 0; for(size_t i = 0; i < _limine_memmap_resp->entry_count; i++) { struct limine_memmap_entry *entry = _limine_memmap_resp->entries[i]; diff --git a/boot/limine/start.c b/boot/limine/start.c index b371f92..9fffb0b 100644 --- a/boot/limine/start.c +++ b/boot/limine/start.c @@ -2,7 +2,6 @@ #include <stddef.h> #include "boot/cmdline.h" -#include "hal/framebuffer.h" #include "limine.h" void _start(void); @@ -53,12 +52,19 @@ static volatile struct limine_framebuffer_request framebuffer_request = { }; LIMINE_REQUEST_SECTION +static volatile struct limine_rsdp_request rsdp_request = { + .id = LIMINE_RSDP_REQUEST_ID, + .revision = 0, .response = NULL +}; + +LIMINE_REQUEST_SECTION static volatile uint64_t limine_requests_end_marker[] = LIMINE_REQUESTS_END_MARKER; void *_kernel_physptr = NULL; void *_initrd_module = NULL; struct limine_framebuffer_response *_limine_framebuffers; struct limine_memmap_response *_limine_memmap_resp = NULL; +struct limine_rsdp_response *_limine_rsdp_resp = NULL; __attribute__((noreturn)) void @@ -67,6 +73,7 @@ _start(void) _kernel_physptr = (void*)executable_address_req.response->physical_base; _limine_memmap_resp = memmap_req.response; _limine_framebuffers = framebuffer_request.response; + _limine_rsdp_resp = rsdp_request.response; if(module_req.response->module_count > 0) { _initrd_module = module_req.response->modules[0]->address; diff --git a/boot/limine/uacpi.c b/boot/limine/uacpi.c new file mode 100644 index 0000000..93b4fd1 --- /dev/null +++ b/boot/limine/uacpi.c @@ -0,0 +1,10 @@ +#include "uacpi/kernel_api.h" +#include "limine.h" + +extern struct limine_rsdp_response *_limine_rsdp_resp; + +uacpi_status uacpi_kernel_get_rsdp(uacpi_phys_addr *out_rsdp_address) +{ + *out_rsdp_address = (uintptr_t)_limine_rsdp_resp->address; + return UACPI_STATUS_OK; +} |
