diff options
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 6 | ||||
-rw-r--r-- | arch/arm/mm/abort-ev4.S | 8 | ||||
-rw-r--r-- | arch/arm/mm/abort-ev4t.S | 8 | ||||
-rw-r--r-- | arch/arm/mm/abort-ev5t.S | 8 | ||||
-rw-r--r-- | arch/arm/mm/abort-ev5tj.S | 12 | ||||
-rw-r--r-- | arch/arm/mm/abort-ev6.S | 12 | ||||
-rw-r--r-- | arch/arm/mm/abort-ev7.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/abort-lv4t.S | 12 | ||||
-rw-r--r-- | arch/arm/mm/abort-nommu.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm6_7.S | 10 |
10 files changed, 38 insertions, 46 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index af2fba7a4cae..85298c093256 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -56,14 +56,12 @@ | |||
56 | .endm | 56 | .endm |
57 | 57 | ||
58 | .macro dabt_helper | 58 | .macro dabt_helper |
59 | mov r2, r4 | ||
60 | mov r3, r5 | ||
61 | 59 | ||
62 | @ | 60 | @ |
63 | @ Call the processor-specific abort handler: | 61 | @ Call the processor-specific abort handler: |
64 | @ | 62 | @ |
65 | @ r2 - aborted context pc | 63 | @ r4 - aborted context pc |
66 | @ r3 - aborted context cpsr | 64 | @ r5 - aborted context psr |
67 | @ | 65 | @ |
68 | @ The abort handler must return the aborted address in r0, and | 66 | @ The abort handler must return the aborted address in r0, and |
69 | @ the fault status register in r1. r9 must be preserved. | 67 | @ the fault status register in r1. r9 must be preserved. |
diff --git a/arch/arm/mm/abort-ev4.S b/arch/arm/mm/abort-ev4.S index 4f18f9e87bae..beb112bdc049 100644 --- a/arch/arm/mm/abort-ev4.S +++ b/arch/arm/mm/abort-ev4.S | |||
@@ -3,8 +3,8 @@ | |||
3 | /* | 3 | /* |
4 | * Function: v4_early_abort | 4 | * Function: v4_early_abort |
5 | * | 5 | * |
6 | * Params : r2 = address of aborted instruction | 6 | * Params : r4 = aborted context pc |
7 | * : r3 = saved SPSR | 7 | * : r5 = aborted context psr |
8 | * | 8 | * |
9 | * Returns : r0 = address of abort | 9 | * Returns : r0 = address of abort |
10 | * : r1 = FSR, bit 11 = write | 10 | * : r1 = FSR, bit 11 = write |
@@ -21,10 +21,8 @@ | |||
21 | ENTRY(v4_early_abort) | 21 | ENTRY(v4_early_abort) |
22 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 22 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
23 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 23 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
24 | ldr r3, [r2] @ read aborted ARM instruction | 24 | ldr r3, [r4] @ read aborted ARM instruction |
25 | bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR | 25 | bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR |
26 | tst r3, #1 << 20 @ L = 1 -> write? | 26 | tst r3, #1 << 20 @ L = 1 -> write? |
27 | orreq r1, r1, #1 << 11 @ yes. | 27 | orreq r1, r1, #1 << 11 @ yes. |
28 | mov pc, lr | 28 | mov pc, lr |
29 | |||
30 | |||
diff --git a/arch/arm/mm/abort-ev4t.S b/arch/arm/mm/abort-ev4t.S index 9910123079ce..eaa4ac023959 100644 --- a/arch/arm/mm/abort-ev4t.S +++ b/arch/arm/mm/abort-ev4t.S | |||
@@ -4,8 +4,8 @@ | |||
4 | /* | 4 | /* |
5 | * Function: v4t_early_abort | 5 | * Function: v4t_early_abort |
6 | * | 6 | * |
7 | * Params : r2 = address of aborted instruction | 7 | * Params : r4 = aborted context pc |
8 | * : r3 = saved SPSR | 8 | * : r5 = aborted context psr |
9 | * | 9 | * |
10 | * Returns : r0 = address of abort | 10 | * Returns : r0 = address of abort |
11 | * : r1 = FSR, bit 11 = write | 11 | * : r1 = FSR, bit 11 = write |
@@ -22,8 +22,8 @@ | |||
22 | ENTRY(v4t_early_abort) | 22 | ENTRY(v4t_early_abort) |
23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
25 | do_thumb_abort fsr=r1, pc=r2, psr=r3, tmp=r3 | 25 | do_thumb_abort fsr=r1, pc=r4, psr=r5, tmp=r3 |
26 | ldreq r3, [r2] @ read aborted ARM instruction | 26 | ldreq r3, [r4] @ read aborted ARM instruction |
27 | bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR | 27 | bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR |
28 | tst r3, #1 << 20 @ check write | 28 | tst r3, #1 << 20 @ check write |
29 | orreq r1, r1, #1 << 11 | 29 | orreq r1, r1, #1 << 11 |
diff --git a/arch/arm/mm/abort-ev5t.S b/arch/arm/mm/abort-ev5t.S index 800e8d42d39e..97eee7c48019 100644 --- a/arch/arm/mm/abort-ev5t.S +++ b/arch/arm/mm/abort-ev5t.S | |||
@@ -4,8 +4,8 @@ | |||
4 | /* | 4 | /* |
5 | * Function: v5t_early_abort | 5 | * Function: v5t_early_abort |
6 | * | 6 | * |
7 | * Params : r2 = address of aborted instruction | 7 | * Params : r4 = aborted context pc |
8 | * : r3 = saved SPSR | 8 | * : r5 = aborted context psr |
9 | * | 9 | * |
10 | * Returns : r0 = address of abort | 10 | * Returns : r0 = address of abort |
11 | * : r1 = FSR, bit 11 = write | 11 | * : r1 = FSR, bit 11 = write |
@@ -22,8 +22,8 @@ | |||
22 | ENTRY(v5t_early_abort) | 22 | ENTRY(v5t_early_abort) |
23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
25 | do_thumb_abort fsr=r1, pc=r2, psr=r3, tmp=r3 | 25 | do_thumb_abort fsr=r1, pc=r4, psr=r5, tmp=r3 |
26 | ldreq r3, [r2] @ read aborted ARM instruction | 26 | ldreq r3, [r4] @ read aborted ARM instruction |
27 | bic r1, r1, #1 << 11 @ clear bits 11 of FSR | 27 | bic r1, r1, #1 << 11 @ clear bits 11 of FSR |
28 | do_ldrd_abort tmp=r2, insn=r3 | 28 | do_ldrd_abort tmp=r2, insn=r3 |
29 | tst r3, #1 << 20 @ check write | 29 | tst r3, #1 << 20 @ check write |
diff --git a/arch/arm/mm/abort-ev5tj.S b/arch/arm/mm/abort-ev5tj.S index bcb58d2fc11a..9a365cf1936f 100644 --- a/arch/arm/mm/abort-ev5tj.S +++ b/arch/arm/mm/abort-ev5tj.S | |||
@@ -4,8 +4,8 @@ | |||
4 | /* | 4 | /* |
5 | * Function: v5tj_early_abort | 5 | * Function: v5tj_early_abort |
6 | * | 6 | * |
7 | * Params : r2 = address of aborted instruction | 7 | * Params : r4 = aborted context pc |
8 | * : r3 = saved SPSR | 8 | * : r5 = aborted context psr |
9 | * | 9 | * |
10 | * Returns : r0 = address of abort | 10 | * Returns : r0 = address of abort |
11 | * : r1 = FSR, bit 11 = write | 11 | * : r1 = FSR, bit 11 = write |
@@ -23,13 +23,11 @@ ENTRY(v5tj_early_abort) | |||
23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
25 | bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR | 25 | bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR |
26 | tst r3, #PSR_J_BIT @ Java? | 26 | tst r5, #PSR_J_BIT @ Java? |
27 | movne pc, lr | 27 | movne pc, lr |
28 | do_thumb_abort fsr=r1, pc=r2, psr=r3, tmp=r3 | 28 | do_thumb_abort fsr=r1, pc=r4, psr=r5, tmp=r3 |
29 | ldreq r3, [r2] @ read aborted ARM instruction | 29 | ldreq r3, [r4] @ read aborted ARM instruction |
30 | do_ldrd_abort tmp=r2, insn=r3 | 30 | do_ldrd_abort tmp=r2, insn=r3 |
31 | tst r3, #1 << 20 @ L = 0 -> write | 31 | tst r3, #1 << 20 @ L = 0 -> write |
32 | orreq r1, r1, #1 << 11 @ yes. | 32 | orreq r1, r1, #1 << 11 @ yes. |
33 | mov pc, lr | 33 | mov pc, lr |
34 | |||
35 | |||
diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S index ef526e702a5c..52db4a3fc5f2 100644 --- a/arch/arm/mm/abort-ev6.S +++ b/arch/arm/mm/abort-ev6.S | |||
@@ -4,8 +4,8 @@ | |||
4 | /* | 4 | /* |
5 | * Function: v6_early_abort | 5 | * Function: v6_early_abort |
6 | * | 6 | * |
7 | * Params : r2 = address of aborted instruction | 7 | * Params : r4 = aborted context pc |
8 | * : r3 = saved SPSR | 8 | * : r5 = aborted context psr |
9 | * | 9 | * |
10 | * Returns : r0 = address of abort | 10 | * Returns : r0 = address of abort |
11 | * : r1 = FSR, bit 11 = write | 11 | * : r1 = FSR, bit 11 = write |
@@ -33,10 +33,10 @@ ENTRY(v6_early_abort) | |||
33 | * The test below covers all the write situations, including Java bytecodes | 33 | * The test below covers all the write situations, including Java bytecodes |
34 | */ | 34 | */ |
35 | bic r1, r1, #1 << 11 @ clear bit 11 of FSR | 35 | bic r1, r1, #1 << 11 @ clear bit 11 of FSR |
36 | tst r3, #PSR_J_BIT @ Java? | 36 | tst r5, #PSR_J_BIT @ Java? |
37 | movne pc, lr | 37 | movne pc, lr |
38 | do_thumb_abort fsr=r1, pc=r2, psr=r3, tmp=r3 | 38 | do_thumb_abort fsr=r1, pc=r4, psr=r5, tmp=r3 |
39 | ldreq r3, [r2] @ read aborted ARM instruction | 39 | ldreq r3, [r4] @ read aborted ARM instruction |
40 | #ifdef CONFIG_CPU_ENDIAN_BE8 | 40 | #ifdef CONFIG_CPU_ENDIAN_BE8 |
41 | reveq r3, r3 | 41 | reveq r3, r3 |
42 | #endif | 42 | #endif |
@@ -44,5 +44,3 @@ ENTRY(v6_early_abort) | |||
44 | tst r3, #1 << 20 @ L = 0 -> write | 44 | tst r3, #1 << 20 @ L = 0 -> write |
45 | orreq r1, r1, #1 << 11 @ yes. | 45 | orreq r1, r1, #1 << 11 @ yes. |
46 | mov pc, lr | 46 | mov pc, lr |
47 | |||
48 | |||
diff --git a/arch/arm/mm/abort-ev7.S b/arch/arm/mm/abort-ev7.S index ec88b157d3bb..6cb51431a859 100644 --- a/arch/arm/mm/abort-ev7.S +++ b/arch/arm/mm/abort-ev7.S | |||
@@ -3,8 +3,8 @@ | |||
3 | /* | 3 | /* |
4 | * Function: v7_early_abort | 4 | * Function: v7_early_abort |
5 | * | 5 | * |
6 | * Params : r2 = address of aborted instruction | 6 | * Params : r4 = aborted context pc |
7 | * : r3 = saved SPSR | 7 | * : r5 = aborted context psr |
8 | * | 8 | * |
9 | * Returns : r0 = address of abort | 9 | * Returns : r0 = address of abort |
10 | * : r1 = FSR, bit 11 = write | 10 | * : r1 = FSR, bit 11 = write |
diff --git a/arch/arm/mm/abort-lv4t.S b/arch/arm/mm/abort-lv4t.S index 9fb7b0e25ea1..fea7514225a6 100644 --- a/arch/arm/mm/abort-lv4t.S +++ b/arch/arm/mm/abort-lv4t.S | |||
@@ -3,8 +3,8 @@ | |||
3 | /* | 3 | /* |
4 | * Function: v4t_late_abort | 4 | * Function: v4t_late_abort |
5 | * | 5 | * |
6 | * Params : r2 = address of aborted instruction | 6 | * Params : r4 = aborted context pc |
7 | * : r3 = saved SPSR | 7 | * : r5 = aborted context psr |
8 | * | 8 | * |
9 | * Returns : r0 = address of abort | 9 | * Returns : r0 = address of abort |
10 | * : r1 = FSR, bit 11 = write | 10 | * : r1 = FSR, bit 11 = write |
@@ -18,7 +18,7 @@ | |||
18 | * picture. Unfortunately, this does happen. We live with it. | 18 | * picture. Unfortunately, this does happen. We live with it. |
19 | */ | 19 | */ |
20 | ENTRY(v4t_late_abort) | 20 | ENTRY(v4t_late_abort) |
21 | tst r3, #PSR_T_BIT @ check for thumb mode | 21 | tst r5, #PSR_T_BIT @ check for thumb mode |
22 | #ifdef CONFIG_CPU_CP15_MMU | 22 | #ifdef CONFIG_CPU_CP15_MMU |
23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
@@ -28,7 +28,7 @@ ENTRY(v4t_late_abort) | |||
28 | mov r1, #0 | 28 | mov r1, #0 |
29 | #endif | 29 | #endif |
30 | bne .data_thumb_abort | 30 | bne .data_thumb_abort |
31 | ldr r8, [r2] @ read arm instruction | 31 | ldr r8, [r4] @ read arm instruction |
32 | tst r8, #1 << 20 @ L = 1 -> write? | 32 | tst r8, #1 << 20 @ L = 1 -> write? |
33 | orreq r1, r1, #1 << 11 @ yes. | 33 | orreq r1, r1, #1 << 11 @ yes. |
34 | and r7, r8, #15 << 24 | 34 | and r7, r8, #15 << 24 |
@@ -52,7 +52,7 @@ ENTRY(v4t_late_abort) | |||
52 | /* e */ b .data_unknown | 52 | /* e */ b .data_unknown |
53 | /* f */ | 53 | /* f */ |
54 | .data_unknown: @ Part of jumptable | 54 | .data_unknown: @ Part of jumptable |
55 | mov r0, r2 | 55 | mov r0, r4 |
56 | mov r1, r8 | 56 | mov r1, r8 |
57 | mov r2, sp | 57 | mov r2, sp |
58 | bl baddataabort | 58 | bl baddataabort |
@@ -159,7 +159,7 @@ ENTRY(v4t_late_abort) | |||
159 | b .data_unknown @ F: MUL? | 159 | b .data_unknown @ F: MUL? |
160 | 160 | ||
161 | .data_thumb_abort: | 161 | .data_thumb_abort: |
162 | ldrh r8, [r2] @ read instruction | 162 | ldrh r8, [r4] @ read instruction |
163 | tst r8, #1 << 11 @ L = 1 -> write? | 163 | tst r8, #1 << 11 @ L = 1 -> write? |
164 | orreq r1, r1, #1 << 8 @ yes | 164 | orreq r1, r1, #1 << 8 @ yes |
165 | and r7, r8, #15 << 12 | 165 | and r7, r8, #15 << 12 |
diff --git a/arch/arm/mm/abort-nommu.S b/arch/arm/mm/abort-nommu.S index 625e580945b5..9eaef6f846c3 100644 --- a/arch/arm/mm/abort-nommu.S +++ b/arch/arm/mm/abort-nommu.S | |||
@@ -3,8 +3,8 @@ | |||
3 | /* | 3 | /* |
4 | * Function: nommu_early_abort | 4 | * Function: nommu_early_abort |
5 | * | 5 | * |
6 | * Params : r2 = address of aborted instruction | 6 | * Params : r4 = aborted context pc |
7 | * : r3 = saved SPSR | 7 | * : r5 = aborted context psr |
8 | * | 8 | * |
9 | * Returns : r0 = 0 (abort address) | 9 | * Returns : r0 = 0 (abort address) |
10 | * : r1 = 0 (FSR) | 10 | * : r1 = 0 (FSR) |
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S index 5f79dc4ce3fb..e7be700db08c 100644 --- a/arch/arm/mm/proc-arm6_7.S +++ b/arch/arm/mm/proc-arm6_7.S | |||
@@ -29,8 +29,8 @@ ENTRY(cpu_arm7_dcache_clean_area) | |||
29 | /* | 29 | /* |
30 | * Function: arm6_7_data_abort () | 30 | * Function: arm6_7_data_abort () |
31 | * | 31 | * |
32 | * Params : r2 = address of aborted instruction | 32 | * Params : r4 = aborted context pc |
33 | * : sp = pointer to registers | 33 | * : r5 = aborted context psr |
34 | * | 34 | * |
35 | * Purpose : obtain information about current aborted instruction | 35 | * Purpose : obtain information about current aborted instruction |
36 | * | 36 | * |
@@ -41,7 +41,7 @@ ENTRY(cpu_arm7_dcache_clean_area) | |||
41 | ENTRY(cpu_arm7_data_abort) | 41 | ENTRY(cpu_arm7_data_abort) |
42 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 42 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
43 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 43 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
44 | ldr r8, [r2] @ read arm instruction | 44 | ldr r8, [r4] @ read arm instruction |
45 | tst r8, #1 << 20 @ L = 0 -> write? | 45 | tst r8, #1 << 20 @ L = 0 -> write? |
46 | orreq r1, r1, #1 << 11 @ yes. | 46 | orreq r1, r1, #1 << 11 @ yes. |
47 | and r7, r8, #15 << 24 | 47 | and r7, r8, #15 << 24 |
@@ -65,7 +65,7 @@ ENTRY(cpu_arm7_data_abort) | |||
65 | /* e */ b .data_unknown | 65 | /* e */ b .data_unknown |
66 | /* f */ | 66 | /* f */ |
67 | .data_unknown: @ Part of jumptable | 67 | .data_unknown: @ Part of jumptable |
68 | mov r0, r2 | 68 | mov r0, r4 |
69 | mov r1, r8 | 69 | mov r1, r8 |
70 | mov r2, sp | 70 | mov r2, sp |
71 | bl baddataabort | 71 | bl baddataabort |
@@ -74,7 +74,7 @@ ENTRY(cpu_arm7_data_abort) | |||
74 | ENTRY(cpu_arm6_data_abort) | 74 | ENTRY(cpu_arm6_data_abort) |
75 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 75 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
76 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 76 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
77 | ldr r8, [r2] @ read arm instruction | 77 | ldr r8, [r4] @ read arm instruction |
78 | tst r8, #1 << 20 @ L = 0 -> write? | 78 | tst r8, #1 << 20 @ L = 0 -> write? |
79 | orreq r1, r1, #1 << 11 @ yes. | 79 | orreq r1, r1, #1 << 11 @ yes. |
80 | and r7, r8, #14 << 24 | 80 | and r7, r8, #14 << 24 |