forked from PoliEcho-holding-org/kern
Fixed the pmm_init() page fault, but i have no clue why pag_init() sometimes causes it.
This commit is contained in:
+1
-1
@@ -28,7 +28,7 @@ void bmap_setarea(bitmap_t* map, size_t base, size_t len, int val) {
|
||||
|
||||
void bmap_setall(bitmap_t* map, int val) {
|
||||
uint8_t b = (val) ? 0xff : 0;
|
||||
memset(map->map, b, map->bytes);
|
||||
for (size_t i = 0; i < map->bytes; i++) ((uint8_t*)map->map)[i] = b;
|
||||
if (val) map->used = map->blocks;
|
||||
else map->used = 0;
|
||||
}
|
||||
|
||||
+3
-2
@@ -9,7 +9,7 @@ static uint32_t pagedirs[PAGE_DIR_COUNT][1024] __align(4096);
|
||||
static uint8_t pagedirUsed[PAGE_DIR_COUNT];
|
||||
|
||||
// TODO: Should this be initialized? If so, to what?
|
||||
size_t pag_pageCount;
|
||||
size_t pag_pageCount = 0;
|
||||
|
||||
// Invalidates the pagedir entry in the CPUs TLB cache
|
||||
static inline void invalidate(uint32_t vaddr) {
|
||||
@@ -38,8 +38,9 @@ int pag_init(void) {
|
||||
*/
|
||||
init_pagedir[1023] = ((uint32_t)init_pagedir - KERNEL_BASE) |
|
||||
PAGE_FLAG_PRESENT | PAGE_FLAG_WRITE;
|
||||
invalidate(0xFFFFF000);
|
||||
invalidate(1023 * PAGE_SIZE);
|
||||
|
||||
// TODO: This sometimes causes a #PF
|
||||
memset(pagedirs, 0, PAGE_SIZE * PAGE_DIR_COUNT);
|
||||
memset(pagedirUsed, 0, PAGE_DIR_COUNT);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user