diff --git a/headers/private/system/arch/arm/arch_cpu_defs.h b/headers/private/system/arch/arm/arch_cpu_defs.h index 2ca5a8bc70..c7c6f17ece 100644 --- a/headers/private/system/arch/arm/arch_cpu_defs.h +++ b/headers/private/system/arch/arm/arch_cpu_defs.h @@ -28,6 +28,7 @@ #define FSR_LPAE 0x200 #define FSR_FS_ALIGNMENT_FAULT 0x01 +#define FSR_FS_ACCESS_FLAG_FAULT 0x06 #define FSR_FS_PERMISSION_FAULT_L1 0x0d #define FSR_FS_PERMISSION_FAULT_L2 0x0f diff --git a/src/system/kernel/arch/arm/arch_int.cpp b/src/system/kernel/arch/arm/arch_int.cpp index 206f21c02f..3d4cba603f 100644 --- a/src/system/kernel/arch/arm/arch_int.cpp +++ b/src/system/kernel/arch/arm/arch_int.cpp @@ -356,6 +356,8 @@ arch_arm_page_fault(struct iframe *frame, addr_t far, uint32 fsr, bool isWrite, far); } else if (!isExec && ((fsr & 0x060f) == FSR_FS_ALIGNMENT_FAULT)) { panic("unhandled alignment exception\n"); + } else if ((fsr & 0x060f) == FSR_FS_ACCESS_FLAG_FAULT) { + panic("unhandled access flag fault\n"); } else if ((frame->spsr & CPSR_I) != 0) { // interrupts disabled