summaryrefslogtreecommitdiff
path: root/src/boot.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot.c')
-rw-r--r--src/boot.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/boot.c b/src/boot.c
index c2d4a22..00cbcca 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -41,6 +41,11 @@ REQUEST struct limine_entry_point_request entry_point_request = {
.entry = bootmain
};
+REQUEST struct limine_hhdm_request hhdm_request = {
+ .id = LIMINE_HHDM_REQUEST,
+ .revision = 0
+};
+
LIMINE(".limine_requests_start") LIMINE_REQUESTS_START_MARKER
LIMINE(".limine_requests_end") LIMINE_REQUESTS_END_MARKER
@@ -60,6 +65,7 @@ bootmain(void)
assert(memmap_request.response);
assert(paging_request.response);
assert(mp_request.response);
+ assert(hhdm_request.response);
assert(framebuffer_request.response->framebuffer_count >= 1);
@@ -76,14 +82,16 @@ bootmain(void)
struct memmap *m = memmaps;
for(uint64_t i = 0; i < memmap_request.response->entry_count; i++){
struct limine_memmap_entry *e = memmap_request.response->entries[i];
- if(e->type != LIMINE_MEMMAP_USABLE)
- continue;
- m->start = e->base;
- m->size = e->length;
- m++;
- info.memmap_count++;
+ switch(e->type){
+ case LIMINE_MEMMAP_USABLE:
+ m->start = e->base;
+ m->size = e->length;
+ m++;
+ info.memmap_count++;
+ }
}
info.memmaps = memmaps;
+ info.physbase = hhdm_request.response->offset;
main(&info);
halt();