44f01a6879e61ed21a9d569f52dc30c281940b57
[lunaix-os.git] / lunaix-os / arch / i386 / mm / fault.c
1 #include <lunaix/mm/fault.h>
2 #include <lunaix/mm/region.h>
3 #include <lunaix/process.h>
4 #include <lunaix/pcontext.h>
5
6 #include <sys/mm/mm_defs.h>
7
8 bool
9 __arch_prepare_fault_context(struct fault_context* fault)
10 {
11     isr_param* ictx = fault->ictx;
12
13     ptr_t ptr = cpu_ldeaddr();
14     if (!ptr) {
15         return false;
16     }
17
18     fault->fault_ptep  = mkptep_va(VMS_SELF, ptr);
19     fault->fault_data  = ictx->execp->err_code;
20     fault->fault_instn = ictx->execp->eip;
21     fault->fault_va    = ptr;
22
23     return true;
24 }