diff options
Diffstat (limited to 'src/boot.c')
-rw-r--r-- | src/boot.c | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -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(); |