diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 12 | ||||
-rw-r--r-- | arch/arm/kernel/entry-common.S | 8 | ||||
-rw-r--r-- | arch/arm/kernel/entry-header.S | 16 |
3 files changed, 16 insertions, 20 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 37723bfb96a6..fc1428905472 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -118,7 +118,7 @@ __dabt_svc: | |||
118 | @ | 118 | @ |
119 | @ IRQs off again before pulling preserved data off the stack | 119 | @ IRQs off again before pulling preserved data off the stack |
120 | @ | 120 | @ |
121 | disable_irq r0 | 121 | disable_irq |
122 | 122 | ||
123 | @ | 123 | @ |
124 | @ restore SPSR and restart the instruction | 124 | @ restore SPSR and restart the instruction |
@@ -198,7 +198,7 @@ __und_svc: | |||
198 | @ | 198 | @ |
199 | @ IRQs off again before pulling preserved data off the stack | 199 | @ IRQs off again before pulling preserved data off the stack |
200 | @ | 200 | @ |
201 | 1: disable_irq r0 | 201 | 1: disable_irq |
202 | 202 | ||
203 | @ | 203 | @ |
204 | @ restore SPSR and restart the instruction | 204 | @ restore SPSR and restart the instruction |
@@ -232,7 +232,7 @@ __pabt_svc: | |||
232 | @ | 232 | @ |
233 | @ IRQs off again before pulling preserved data off the stack | 233 | @ IRQs off again before pulling preserved data off the stack |
234 | @ | 234 | @ |
235 | disable_irq r0 | 235 | disable_irq |
236 | 236 | ||
237 | @ | 237 | @ |
238 | @ restore SPSR and restart the instruction | 238 | @ restore SPSR and restart the instruction |
@@ -316,7 +316,7 @@ __dabt_usr: | |||
316 | @ | 316 | @ |
317 | @ IRQs on, then call the main handler | 317 | @ IRQs on, then call the main handler |
318 | @ | 318 | @ |
319 | enable_irq r2 | 319 | enable_irq |
320 | mov r2, sp | 320 | mov r2, sp |
321 | adr lr, ret_from_exception | 321 | adr lr, ret_from_exception |
322 | b do_DataAbort | 322 | b do_DataAbort |
@@ -418,7 +418,7 @@ call_fpe: | |||
418 | movcss r7, r5, lsr #(TIF_USING_IWMMXT + 1) | 418 | movcss r7, r5, lsr #(TIF_USING_IWMMXT + 1) |
419 | bcs iwmmxt_task_enable | 419 | bcs iwmmxt_task_enable |
420 | #endif | 420 | #endif |
421 | enable_irq r7 | 421 | enable_irq |
422 | add pc, pc, r8, lsr #6 | 422 | add pc, pc, r8, lsr #6 |
423 | mov r0, r0 | 423 | mov r0, r0 |
424 | 424 | ||
@@ -472,7 +472,7 @@ fpundefinstr: | |||
472 | __pabt_usr: | 472 | __pabt_usr: |
473 | usr_entry abt | 473 | usr_entry abt |
474 | 474 | ||
475 | enable_irq r0 @ Enable interrupts | 475 | enable_irq @ Enable interrupts |
476 | mov r0, r2 @ address (pc) | 476 | mov r0, r2 @ address (pc) |
477 | mov r1, sp @ regs | 477 | mov r1, sp @ regs |
478 | bl do_PrefetchAbort @ call abort handler | 478 | bl do_PrefetchAbort @ call abort handler |
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 53a7e0dea44d..0cd9f7bcaad7 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -30,7 +30,7 @@ | |||
30 | * stack. | 30 | * stack. |
31 | */ | 31 | */ |
32 | ret_fast_syscall: | 32 | ret_fast_syscall: |
33 | disable_irq r1 @ disable interrupts | 33 | disable_irq @ disable interrupts |
34 | ldr r1, [tsk, #TI_FLAGS] | 34 | ldr r1, [tsk, #TI_FLAGS] |
35 | tst r1, #_TIF_WORK_MASK | 35 | tst r1, #_TIF_WORK_MASK |
36 | bne fast_work_pending | 36 | bne fast_work_pending |
@@ -49,7 +49,7 @@ work_pending: | |||
49 | mov r0, sp @ 'regs' | 49 | mov r0, sp @ 'regs' |
50 | mov r2, why @ 'syscall' | 50 | mov r2, why @ 'syscall' |
51 | bl do_notify_resume | 51 | bl do_notify_resume |
52 | disable_irq r1 @ disable interrupts | 52 | disable_irq @ disable interrupts |
53 | b no_work_pending | 53 | b no_work_pending |
54 | 54 | ||
55 | work_resched: | 55 | work_resched: |
@@ -59,7 +59,7 @@ work_resched: | |||
59 | */ | 59 | */ |
60 | ENTRY(ret_to_user) | 60 | ENTRY(ret_to_user) |
61 | ret_slow_syscall: | 61 | ret_slow_syscall: |
62 | disable_irq r1 @ disable interrupts | 62 | disable_irq @ disable interrupts |
63 | ldr r1, [tsk, #TI_FLAGS] | 63 | ldr r1, [tsk, #TI_FLAGS] |
64 | tst r1, #_TIF_WORK_MASK | 64 | tst r1, #_TIF_WORK_MASK |
65 | bne work_pending | 65 | bne work_pending |
@@ -126,7 +126,7 @@ ENTRY(vector_swi) | |||
126 | ldr ip, [ip] | 126 | ldr ip, [ip] |
127 | mcr p15, 0, ip, c1, c0 @ update control register | 127 | mcr p15, 0, ip, c1, c0 @ update control register |
128 | #endif | 128 | #endif |
129 | enable_irq ip | 129 | enable_irq |
130 | 130 | ||
131 | str r4, [sp, #-S_OFF]! @ push fifth arg | 131 | str r4, [sp, #-S_OFF]! @ push fifth arg |
132 | 132 | ||
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S index 4039d8c120b5..109f4f10d314 100644 --- a/arch/arm/kernel/entry-header.S +++ b/arch/arm/kernel/entry-header.S | |||
@@ -63,25 +63,21 @@ | |||
63 | #define S_R0 0 | 63 | #define S_R0 0 |
64 | #define S_OFF 8 | 64 | #define S_OFF 8 |
65 | 65 | ||
66 | .macro set_cpsr_c, reg, mode | ||
67 | msr cpsr_c, \mode | ||
68 | .endm | ||
69 | |||
70 | #if __LINUX_ARM_ARCH__ >= 6 | 66 | #if __LINUX_ARM_ARCH__ >= 6 |
71 | .macro disable_irq, temp | 67 | .macro disable_irq |
72 | cpsid i | 68 | cpsid i |
73 | .endm | 69 | .endm |
74 | 70 | ||
75 | .macro enable_irq, temp | 71 | .macro enable_irq |
76 | cpsie i | 72 | cpsie i |
77 | .endm | 73 | .endm |
78 | #else | 74 | #else |
79 | .macro disable_irq, temp | 75 | .macro disable_irq |
80 | set_cpsr_c \temp, #PSR_I_BIT | MODE_SVC | 76 | msr cpsr_c, #PSR_I_BIT | SVC_MODE |
81 | .endm | 77 | .endm |
82 | 78 | ||
83 | .macro enable_irq, temp | 79 | .macro enable_irq |
84 | set_cpsr_c \temp, #MODE_SVC | 80 | msr cpsr_c, #SVC_MODE |
85 | .endm | 81 | .endm |
86 | #endif | 82 | #endif |
87 | 83 | ||