elf: start writing elf loader

This commit is contained in:
RaphProductions 2025-05-08 15:17:13 +02:00
parent 175805604e
commit a6f371b4ad
12 changed files with 4706 additions and 72 deletions

View file

@ -1,3 +1,4 @@
#include "exec/elf.h"
#include "mm/pmm.h"
#include "mm/vmm.h"
#include "rt.h"
@ -35,6 +36,12 @@ static volatile struct limine_framebuffer_request framebuffer_request = {
.revision = 0
};
__attribute__((used, section(".limine_requests")))
static volatile struct limine_module_request module_request = {
.id = LIMINE_MODULE_REQUEST,
.revision = 0
};
/*__attribute__((used, section(".limine_requests")))
static volatile struct limine_entry_point_request entrypoint_request = {
.id = LIMINE_ENTRY_POINT_REQUEST,
@ -112,18 +119,23 @@ void kmain(void) {
vmm_init();
pit_init(1000);
//sched_init();
sched_init();
//user_init();
uint8_t *mem = pmm_request_page();
mem[0] = 0xCD;
mem[1] = 0x80;
struct limine_file *f = module_request.response->modules[0];
log("kmain - %s\n", f->path);
elf_load((char*)f->address);
//uint8_t *mem = pmm_request_page();
//mem[0] = 0xCD;
//mem[1] = 0x80;
//mem[2] = 0xF4;
//mem[3] = 0xFE;
pagemap_t* pm = vmm_alloc_pm();
vmm_map(pm, 0x1000, (uint64_t)mem, VMM_PRESENT | VMM_USER);
sched_create("Init", 0x1000, pm, SCHED_USER_PROCESS);
//pagemap_t* pm = vmm_alloc_pm();
//vmm_map(pm, 0x1000, (uint64_t)mem, VMM_PRESENT | VMM_USER);
//sched_create("Init", 0x1000, pm, SCHED_USER_PROCESS);
log("kernel - Soaplin initialized sucessfully.\n");