fix: Fixed some issues regarding creating new page map levels

This commit is contained in:
Kevin Alavik 2025-05-08 19:22:40 +02:00
parent 442b26df09
commit 6488abfcba
No known key found for this signature in database
GPG key ID: 0570047215B43EBD
4 changed files with 13 additions and 3 deletions

View file

@ -3,6 +3,7 @@
#include "mm/pmm.h"
#include "mm/vma.h"
#include "mm/vmm.h"
#include "mm/liballoc/liballoc.h"
#include "mm/memop.h"
#include "rt.h"
#include "sched/sched.h"
@ -131,6 +132,11 @@ void kmain(void) {
asm("hlt");
}
char *a = kmalloc(1);
*a = 32;
log("Allocated 1 byte at 0x%.16llx\n", (uint64_t)a);
kfree(a);
pit_init(1000);
sched_init();
//user_init();

View file

@ -1,6 +1,9 @@
// Copyright: Durand Miller <clutter@djm.co.za>
#include <mm/liballoc/liballoc.h>
// very dirty way of disabling logging in liballoc
#define log(...) (void)0
#define VERSION "1.1"
#define ALIGNMENT 16ul

View file

@ -152,9 +152,10 @@ static uint64_t *__vmm_get_next_lvl(uint64_t *level, uint64_t entry, uint64_t fl
if (!(level[entry] & 1)){
uint64_t *pml = HIGHER_HALF(pmm_request_page());
memset(pml, 0, PMM_PAGE_SIZE);
level[entry] = (uint64_t)PHYSICAL(pml);
level[entry] = ((uint64_t)PHYSICAL(pml) & 0x000FFFFFFFFFF000ULL) | flags;
} else {
level[entry] |= (flags & ~VMM_NX) & 0xFF;
}
level[entry] |= (flags & 0xFFF); // N'ajoute que les flags pertinents
return HIGHER_HALF(PTE_GET_ADDR(level[entry]));
}

View file

@ -47,7 +47,7 @@ void exception_handler(registers_t *regs) {
log("ints - PF: Faulting page flags: %p\n", vmm_get_flags(vmm_current_pm, cr2));
}
dump_backtrace(regs);
// dump_backtrace(regs);
asm ("cli");
while (1)
asm ("hlt");