Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[linux-2.6] / arch / arm / mm / abort-ev7.S
1 #include <linux/linkage.h>
2 #include <asm/assembler.h>
3 /*
4  * Function: v7_early_abort
5  *
6  * Params  : r2 = address of aborted instruction
7  *         : r3 = saved SPSR
8  *
9  * Returns : r0 = address of abort
10  *         : r1 = FSR, bit 11 = write
11  *         : r2-r8 = corrupted
12  *         : r9 = preserved
13  *         : sp = pointer to registers
14  *
15  * Purpose : obtain information about current aborted instruction.
16  */
17         .align  5
18 ENTRY(v7_early_abort)
19         /*
20          * The effect of data aborts on on the exclusive access monitor are
21          * UNPREDICTABLE. Do a CLREX to clear the state
22          */
23         clrex
24
25         mrc     p15, 0, r1, c5, c0, 0           @ get FSR
26         mrc     p15, 0, r0, c6, c0, 0           @ get FAR
27
28         /*
29          * V6 code adjusts the returned DFSR.
30          * New designs should not need to patch up faults.
31          */
32         mov     pc, lr
33 ENDPROC(v7_early_abort)