hal x86_64 vmm minor fixes in mapping/unmapping

This commit is contained in:
2025-08-30 13:41:47 +02:00
parent 7a52f2f051
commit 60a530b900
2 changed files with 7 additions and 7 deletions

View File

@ -16,10 +16,10 @@ PgTable *hal_vmm_current_cr3(void) {
PgIndex hal_vmm_pageindex(uint64_t vaddr) {
PgIndex ret;
ret.pml4 = (vaddr & ((uint64_t)0x1ff < 39)) >> 39;
ret.pml3 = (vaddr & ((uint64_t)0x1ff < 30)) >> 30;
ret.pml2 = (vaddr & ((uint64_t)0x1ff < 21)) >> 21;
ret.pml1 = (vaddr & ((uint64_t)0x1ff < 12)) >> 12;
ret.pml4 = (vaddr >> 39) & 0x1ff;
ret.pml3 = (vaddr >> 30) & 0x1ff;
ret.pml2 = (vaddr >> 21) & 0x1ff;
ret.pml1 = (vaddr >> 12) & 0x1ff;
return ret;
}
@ -46,7 +46,7 @@ void hal_vmm_map_page(PgTable *pml4, uint64_t virtaddr, uint64_t physaddr, uint3
uint64_t *pml1 = hal_vmm_nexttable((uint64_t *)pml2, pi.pml2);
uint64_t *pte = &pml1[pi.pml1];
*pte = physaddr | (flags & 0x7);
*pte = (physaddr & ~0xFFF) | (flags & 0x7);
}
void hal_vmm_unmap_page(PgTable *pml4, uint64_t virtaddr, uint64_t physaddr) {
@ -57,7 +57,7 @@ void hal_vmm_unmap_page(PgTable *pml4, uint64_t virtaddr, uint64_t physaddr) {
uint64_t *pml1 = hal_vmm_nexttable((uint64_t *)pml2, pi.pml2);
uint64_t *pte = &pml1[pi.pml1];
*pte = physaddr & (~0x7);
*pte &= ~HAL_PG_PRESENT;
}
void hal_vmm_init(void) {

View File

@ -68,7 +68,7 @@ void kmain(void) {
hal_init_withmalloc();
/* hal_intr_enable(); */
/* kprintf(BANNER_TEXT "\n"); */
kprintf(BANNER_TEXT "\n");
for(;;);
}