Blame view
arch/arm/mm/abort-ev7.S
1.11 KB
bbe888864 [ARM] armv7: add ... |
1 2 3 4 5 |
#include <linux/linkage.h> #include <asm/assembler.h> /* * Function: v7_early_abort * |
da7404725 ARM: entry: data ... |
6 7 |
* Params : r2 = pt_regs * : r4 = aborted context pc |
3e287bec6 ARM: entry: data ... |
8 |
* : r5 = aborted context psr |
bbe888864 [ARM] armv7: add ... |
9 |
* |
da7404725 ARM: entry: data ... |
10 |
* Returns : r4 - r11, r13 preserved |
bbe888864 [ARM] armv7: add ... |
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
* * Purpose : obtain information about current aborted instruction. */ .align 5 ENTRY(v7_early_abort) /* * The effect of data aborts on on the exclusive access monitor are * UNPREDICTABLE. Do a CLREX to clear the state */ clrex mrc p15, 0, r1, c5, c0, 0 @ get FSR mrc p15, 0, r0, c6, c0, 0 @ get FAR /* * V6 code adjusts the returned DFSR. * New designs should not need to patch up faults. */ |
e220ba602 arm: mm: qsd8x50:... |
29 30 31 32 33 34 35 36 |
#if defined(CONFIG_VERIFY_PERMISSION_FAULT) /* * Detect erroneous permission failures and fix */ ldr r3, =0x40d @ On permission fault and r3, r1, r3 cmp r3, #0x0d |
da7404725 ARM: entry: data ... |
37 |
bne do_DataAbort |
e220ba602 arm: mm: qsd8x50:... |
38 39 40 |
mcr p15, 0, r0, c7, c8, 0 @ Retranslate FAR isb |
0d147db0c ARM: entry: data ... |
41 42 |
mrc p15, 0, ip, c7, c4, 0 @ Read the PAR and r3, ip, #0x7b @ On translation fault |
e220ba602 arm: mm: qsd8x50:... |
43 |
cmp r3, #0x0b |
da7404725 ARM: entry: data ... |
44 |
bne do_DataAbort |
e220ba602 arm: mm: qsd8x50:... |
45 |
bic r1, r1, #0xf @ Fix up FSR FS[5:0] |
0d147db0c ARM: entry: data ... |
46 47 |
and ip, ip, #0x7e orr r1, r1, ip, LSR #1 |
e220ba602 arm: mm: qsd8x50:... |
48 |
#endif |
da7404725 ARM: entry: data ... |
49 |
b do_DataAbort |
93ed39701 [ARM] 5227/1: Add... |
50 |
ENDPROC(v7_early_abort) |