Kernel address space isolation and make the kernel heap global to all processes.
[lunaix-os.git] / lunaix-os / kernel / asm / x86 / pfault.c
1 #include <arch/x86/interrupts.h>
2 #include <lunaix/mm/pmm.h>
3 #include <lunaix/mm/vmm.h>
4 #include <lunaix/common.h>
5 #include <lunaix/syslog.h>
6
7 static void kprintf(const char* fmt, ...) { va_list args; va_start(args, fmt); __kprintf("PFAULT", fmt, args); va_end(args); }
8
9 extern void __print_panic_msg(const char* msg, const isr_param* param);
10
11 void
12 intr_routine_page_fault (const isr_param* param) 
13 {
14     void* pg_fault_ptr = cpu_rcr2();
15     if (!pg_fault_ptr) {
16         __print_panic_msg("Null pointer reference", param);
17         goto done;
18     }
19
20     kprintf("%p", pg_fault_ptr);
21     __print_panic_msg("Page fault", param);
22
23 done:
24     while(1);
25 }