1
0
Fork 0

fix/kernel: Fixed accidental flag in adm64 paging API

This commit is contained in:
Kevin Alavik 2025-05-14 19:43:54 +02:00
parent b11edf4457
commit ea1156334e
Signed by: cmpsb
GPG key ID: 10D1CC0526FDC6D7
2 changed files with 6 additions and 2 deletions

View file

@ -5,6 +5,7 @@
"idt.h": "c", "idt.h": "c",
"limine.h": "c", "limine.h": "c",
"stddef.h": "c", "stddef.h": "c",
"stdint.h": "c" "stdint.h": "c",
"typeinfo": "c"
} }
} }

View file

@ -205,14 +205,16 @@ void paging_init(void)
/* Map kernel sections */ /* Map kernel sections */
uint64_t text_start = ALIGN_DOWN((uint64_t)__text_start, PAGE_SIZE); uint64_t text_start = ALIGN_DOWN((uint64_t)__text_start, PAGE_SIZE);
uint64_t text_end = ALIGN_UP((uint64_t)__text_end, PAGE_SIZE); uint64_t text_end = ALIGN_UP((uint64_t)__text_end, PAGE_SIZE);
PRINT_SECTION(".text", text_start, text_end);
for (uint64_t addr = text_start; addr < text_end; addr += PAGE_SIZE) for (uint64_t addr = text_start; addr < text_end; addr += PAGE_SIZE)
{ {
uint64_t phys = addr - kvirt + kphys; uint64_t phys = addr - kvirt + kphys;
vmap(kernel_pagemap, addr, phys, VMM_PRESENT | VMM_NX); vmap(kernel_pagemap, addr, phys, VMM_PRESENT);
} }
uint64_t rodata_start = ALIGN_DOWN((uint64_t)__rodata_start, PAGE_SIZE); uint64_t rodata_start = ALIGN_DOWN((uint64_t)__rodata_start, PAGE_SIZE);
uint64_t rodata_end = ALIGN_UP((uint64_t)__rodata_end, PAGE_SIZE); uint64_t rodata_end = ALIGN_UP((uint64_t)__rodata_end, PAGE_SIZE);
PRINT_SECTION(".rodata", rodata_start, rodata_end);
for (uint64_t addr = rodata_start; addr < rodata_end; addr += PAGE_SIZE) for (uint64_t addr = rodata_start; addr < rodata_end; addr += PAGE_SIZE)
{ {
uint64_t phys = addr - kvirt + kphys; uint64_t phys = addr - kvirt + kphys;
@ -221,6 +223,7 @@ void paging_init(void)
uint64_t data_start = ALIGN_DOWN((uint64_t)__data_start, PAGE_SIZE); uint64_t data_start = ALIGN_DOWN((uint64_t)__data_start, PAGE_SIZE);
uint64_t data_end = ALIGN_UP((uint64_t)__data_end, PAGE_SIZE); uint64_t data_end = ALIGN_UP((uint64_t)__data_end, PAGE_SIZE);
PRINT_SECTION(".data", data_start, data_end);
for (uint64_t addr = data_start; addr < data_end; addr += PAGE_SIZE) for (uint64_t addr = data_start; addr < data_end; addr += PAGE_SIZE)
{ {
uint64_t phys = addr - kvirt + kphys; uint64_t phys = addr - kvirt + kphys;