X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/32b9a6d76790c73d3d2d36d9081a2581cc65d184..28c176b668c841a3b7fb093faccf0efa39257603:/lunaix-os/arch/x86/mm/fault.c diff --git a/lunaix-os/arch/x86/mm/fault.c b/lunaix-os/arch/x86/mm/fault.c new file mode 100644 index 0000000..62f9d80 --- /dev/null +++ b/lunaix-os/arch/x86/mm/fault.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include + +#include + +bool +__arch_prepare_fault_context(struct fault_context* fault) +{ + struct hart_state* ictx = fault->hstate; + + ptr_t ptr = cpu_ldeaddr(); + if (!ptr) { + return false; + } + + fault->fault_ptep = mkptep_va(VMS_SELF, ptr); + fault->fault_data = ictx->execp->err_code; + fault->fault_instn = hart_pc(ictx); + fault->fault_va = ptr; + + return true; +} \ No newline at end of file