#include "paging.h" #include "kernel.h" #define invlpg(page) asm volatile("invlpg (%0)" :: "r" (page)) void paging_reinit() { map_p1.l[(uint32_t)&map_p2 >> 12] = (uint32_t)&entry_map_p2 | P1_P | P1_W | P1_G; invlpg(&map_p2); for(unsigned int i = 0; i < 1024; i++) { if(map_p2[i] & P2_P && !(map_p2[i] & P2_G)) { map_p2[i] = 0; } if(map_p1.b[0x300][i] & P1_P && !(map_p1.b[0x300][i] & P1_G)) { map_p1.b[0x300][i] = 0; } if(map_p1.b[0x3ff][i] & P1_P && !(map_p1.b[0x3ff][i] & P1_G)) { map_p1.b[0x3ff][i] = 0; } } // TODO: Set CR4.PGE. }