aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/kernel/entry-armv.S12
-rw-r--r--arch/arm/kernel/entry-common.S8
-rw-r--r--arch/arm/kernel/entry-header.S16
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 @
2011: disable_irq r0 2011: 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 */
32ret_fast_syscall: 32ret_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
55work_resched: 55work_resched:
@@ -59,7 +59,7 @@ work_resched:
59 */ 59 */
60ENTRY(ret_to_user) 60ENTRY(ret_to_user)
61ret_slow_syscall: 61ret_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