fix: Fixed some issues regarding creating new page map levels #1
4 changed files with 13 additions and 3 deletions
|
@ -3,6 +3,7 @@
|
||||||
#include "mm/pmm.h"
|
#include "mm/pmm.h"
|
||||||
#include "mm/vma.h"
|
#include "mm/vma.h"
|
||||||
#include "mm/vmm.h"
|
#include "mm/vmm.h"
|
||||||
|
#include "mm/liballoc/liballoc.h"
|
||||||
#include "mm/memop.h"
|
#include "mm/memop.h"
|
||||||
#include "rt.h"
|
#include "rt.h"
|
||||||
#include "sched/sched.h"
|
#include "sched/sched.h"
|
||||||
|
@ -131,6 +132,11 @@ void kmain(void) {
|
||||||
asm("hlt");
|
asm("hlt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *a = kmalloc(1);
|
||||||
|
*a = 32;
|
||||||
|
log("Allocated 1 byte at 0x%.16llx\n", (uint64_t)a);
|
||||||
|
kfree(a);
|
||||||
|
|
||||||
pit_init(1000);
|
pit_init(1000);
|
||||||
sched_init();
|
sched_init();
|
||||||
//user_init();
|
//user_init();
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
// Copyright: Durand Miller <clutter@djm.co.za>
|
// Copyright: Durand Miller <clutter@djm.co.za>
|
||||||
#include <mm/liballoc/liballoc.h>
|
#include <mm/liballoc/liballoc.h>
|
||||||
|
|
||||||
|
// very dirty way of disabling logging in liballoc
|
||||||
|
#define log(...) (void)0
|
||||||
|
|
||||||
#define VERSION "1.1"
|
#define VERSION "1.1"
|
||||||
#define ALIGNMENT 16ul
|
#define ALIGNMENT 16ul
|
||||||
|
|
||||||
|
|
|
@ -152,9 +152,10 @@ static uint64_t *__vmm_get_next_lvl(uint64_t *level, uint64_t entry, uint64_t fl
|
||||||
if (!(level[entry] & 1)){
|
if (!(level[entry] & 1)){
|
||||||
uint64_t *pml = HIGHER_HALF(pmm_request_page());
|
uint64_t *pml = HIGHER_HALF(pmm_request_page());
|
||||||
memset(pml, 0, PMM_PAGE_SIZE);
|
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]));
|
return HIGHER_HALF(PTE_GET_ADDR(level[entry]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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));
|
log("ints - PF: Faulting page flags: %p\n", vmm_get_flags(vmm_current_pm, cr2));
|
||||||
}
|
}
|
||||||
|
|
||||||
dump_backtrace(regs);
|
// dump_backtrace(regs);
|
||||||
asm ("cli");
|
asm ("cli");
|
||||||
while (1)
|
while (1)
|
||||||
asm ("hlt");
|
asm ("hlt");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue