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:
committed by
Adrien Destugues
parent
bbb4db9276
commit
c13766fc00
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user