BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / commit / 73145c0e2b43a1cca5c2cd10a53a703d3ad013bf / memory / fault.c

// Related

Nucleus

Barry Page functions + User memory functions 73145c0 (3 years, 3 months ago)
diff --git a/memory/fault.c b/memory/fault.c
index e8d66a7..dd7953f 100644
--- a/memory/fault.c
+++ b/memory/fault.c
@@ -16,8 +16,12 @@ early_page_fault_handler(struct InterruptFrame *frame, uint32_t err)
 {
 	uintptr_t addr;
 	asm volatile("mov %%cr2, %0" : "=r" (addr));
+	uint8_t present = err & (1 << 0);
+	uint8_t write   = err & (1 << 1);
+	uint8_t user    = err & (1 << 2);
 	if (!PAGE_ADDR(addr))
 		panic("Null dereference @ %#.8x", frame->eip);
+	ASSERT(!present);
 	/* Allocate a page */
 	set_page(addr, alloc_frame() | PTE_PRESENT | PTE_WRITE | PTE_GLOBAL);
 }