diff options
author | Dave Estes <cestes@quicinc.com> | 2009-08-11 17:58:49 -0400 |
---|---|---|
committer | Daniel Walker <dwalker@codeaurora.org> | 2010-05-03 14:15:05 -0400 |
commit | e220ba60223a9d63e70217e5b112160df8c21cea (patch) | |
tree | cdbdcbd9865d10ed0d3b977bc254c1ee0328e460 /arch/arm/mm/abort-ev7.S | |
parent | ee3c454b8da04815c1884ed85fe89d2d131c0e51 (diff) |
arm: mm: qsd8x50: Fix incorrect permission faults
Handle incorrectly reported permission faults for qsd8650. On
permission faults, retry MVA to PA conversion. If retry detects
translation fault. Report as translation fault.
Cc: Jamie Lokier <jamie@shareable.org>
Signed-off-by: Dave Estes <cestes@quicinc.com>
Diffstat (limited to 'arch/arm/mm/abort-ev7.S')
-rw-r--r-- | arch/arm/mm/abort-ev7.S | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mm/abort-ev7.S b/arch/arm/mm/abort-ev7.S index 2e6dc040c654..ec88b157d3bb 100644 --- a/arch/arm/mm/abort-ev7.S +++ b/arch/arm/mm/abort-ev7.S | |||
@@ -29,5 +29,26 @@ ENTRY(v7_early_abort) | |||
29 | * V6 code adjusts the returned DFSR. | 29 | * V6 code adjusts the returned DFSR. |
30 | * New designs should not need to patch up faults. | 30 | * New designs should not need to patch up faults. |
31 | */ | 31 | */ |
32 | |||
33 | #if defined(CONFIG_VERIFY_PERMISSION_FAULT) | ||
34 | /* | ||
35 | * Detect erroneous permission failures and fix | ||
36 | */ | ||
37 | ldr r3, =0x40d @ On permission fault | ||
38 | and r3, r1, r3 | ||
39 | cmp r3, #0x0d | ||
40 | movne pc, lr | ||
41 | |||
42 | mcr p15, 0, r0, c7, c8, 0 @ Retranslate FAR | ||
43 | isb | ||
44 | mrc p15, 0, r2, c7, c4, 0 @ Read the PAR | ||
45 | and r3, r2, #0x7b @ On translation fault | ||
46 | cmp r3, #0x0b | ||
47 | movne pc, lr | ||
48 | bic r1, r1, #0xf @ Fix up FSR FS[5:0] | ||
49 | and r2, r2, #0x7e | ||
50 | orr r1, r1, r2, LSR #1 | ||
51 | #endif | ||
52 | |||
32 | mov pc, lr | 53 | mov pc, lr |
33 | ENDPROC(v7_early_abort) | 54 | ENDPROC(v7_early_abort) |