kernel/arm: check for access flag fault in page fault handler

Change-Id: Icc782a692e5dcd861958ffea934386b4d4e569c7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6428
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
David Karoly
2023-05-09 20:10:12 +00:00
committed by Adrien Destugues
parent bbb4db9276
commit c13766fc00
2 changed files with 3 additions and 0 deletions
@@ -28,6 +28,7 @@
#define FSR_LPAE 0x200 #define FSR_LPAE 0x200
#define FSR_FS_ALIGNMENT_FAULT 0x01 #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_L1 0x0d
#define FSR_FS_PERMISSION_FAULT_L2 0x0f #define FSR_FS_PERMISSION_FAULT_L2 0x0f
+2
View File
@@ -356,6 +356,8 @@ arch_arm_page_fault(struct iframe *frame, addr_t far, uint32 fsr, bool isWrite,
far); far);
} else if (!isExec && ((fsr & 0x060f) == FSR_FS_ALIGNMENT_FAULT)) { } else if (!isExec && ((fsr & 0x060f) == FSR_FS_ALIGNMENT_FAULT)) {
panic("unhandled alignment exception\n"); 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) { } else if ((frame->spsr & CPSR_I) != 0) {
// interrupts disabled // interrupts disabled