diff options
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 18 | ||||
-rw-r--r-- | arch/arm/kernel/entry-header.S | 6 |
2 files changed, 6 insertions, 18 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 68e41defef9d..9f6a30798b6b 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -192,11 +192,6 @@ __dabt_svc: | |||
192 | svc_entry | 192 | svc_entry |
193 | mov r2, sp | 193 | mov r2, sp |
194 | dabt_helper | 194 | dabt_helper |
195 | |||
196 | @ | ||
197 | @ IRQs off again before pulling preserved data off the stack | ||
198 | @ | ||
199 | disable_irq_notrace | ||
200 | svc_exit r5 @ return from exception | 195 | svc_exit r5 @ return from exception |
201 | UNWIND(.fnend ) | 196 | UNWIND(.fnend ) |
202 | ENDPROC(__dabt_svc) | 197 | ENDPROC(__dabt_svc) |
@@ -283,15 +278,7 @@ __und_svc_fault: | |||
283 | mov r0, sp @ struct pt_regs *regs | 278 | mov r0, sp @ struct pt_regs *regs |
284 | bl __und_fault | 279 | bl __und_fault |
285 | 280 | ||
286 | @ | ||
287 | @ IRQs off again before pulling preserved data off the stack | ||
288 | @ | ||
289 | __und_svc_finish: | 281 | __und_svc_finish: |
290 | disable_irq_notrace | ||
291 | |||
292 | @ | ||
293 | @ restore SPSR and restart the instruction | ||
294 | @ | ||
295 | ldr r5, [sp, #S_PSR] @ Get SVC cpsr | 282 | ldr r5, [sp, #S_PSR] @ Get SVC cpsr |
296 | svc_exit r5 @ return from exception | 283 | svc_exit r5 @ return from exception |
297 | UNWIND(.fnend ) | 284 | UNWIND(.fnend ) |
@@ -302,11 +289,6 @@ __pabt_svc: | |||
302 | svc_entry | 289 | svc_entry |
303 | mov r2, sp @ regs | 290 | mov r2, sp @ regs |
304 | pabt_helper | 291 | pabt_helper |
305 | |||
306 | @ | ||
307 | @ IRQs off again before pulling preserved data off the stack | ||
308 | @ | ||
309 | disable_irq_notrace | ||
310 | svc_exit r5 @ return from exception | 292 | svc_exit r5 @ return from exception |
311 | UNWIND(.fnend ) | 293 | UNWIND(.fnend ) |
312 | ENDPROC(__pabt_svc) | 294 | ENDPROC(__pabt_svc) |
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S index 0bf15e5c40a2..57a1631f065a 100644 --- a/arch/arm/kernel/entry-header.S +++ b/arch/arm/kernel/entry-header.S | |||
@@ -76,12 +76,15 @@ | |||
76 | #ifndef CONFIG_THUMB2_KERNEL | 76 | #ifndef CONFIG_THUMB2_KERNEL |
77 | .macro svc_exit, rpsr, irq = 0 | 77 | .macro svc_exit, rpsr, irq = 0 |
78 | .if \irq != 0 | 78 | .if \irq != 0 |
79 | @ IRQs already off | ||
79 | #ifdef CONFIG_TRACE_IRQFLAGS | 80 | #ifdef CONFIG_TRACE_IRQFLAGS |
80 | @ The parent context IRQs must have been enabled to get here in | 81 | @ The parent context IRQs must have been enabled to get here in |
81 | @ the first place, so there's no point checking the PSR I bit. | 82 | @ the first place, so there's no point checking the PSR I bit. |
82 | bl trace_hardirqs_on | 83 | bl trace_hardirqs_on |
83 | #endif | 84 | #endif |
84 | .else | 85 | .else |
86 | @ IRQs off again before pulling preserved data off the stack | ||
87 | disable_irq_notrace | ||
85 | #ifdef CONFIG_TRACE_IRQFLAGS | 88 | #ifdef CONFIG_TRACE_IRQFLAGS |
86 | tst \rpsr, #PSR_I_BIT | 89 | tst \rpsr, #PSR_I_BIT |
87 | bleq trace_hardirqs_on | 90 | bleq trace_hardirqs_on |
@@ -136,12 +139,15 @@ | |||
136 | #else /* CONFIG_THUMB2_KERNEL */ | 139 | #else /* CONFIG_THUMB2_KERNEL */ |
137 | .macro svc_exit, rpsr, irq = 0 | 140 | .macro svc_exit, rpsr, irq = 0 |
138 | .if \irq != 0 | 141 | .if \irq != 0 |
142 | @ IRQs already off | ||
139 | #ifdef CONFIG_TRACE_IRQFLAGS | 143 | #ifdef CONFIG_TRACE_IRQFLAGS |
140 | @ The parent context IRQs must have been enabled to get here in | 144 | @ The parent context IRQs must have been enabled to get here in |
141 | @ the first place, so there's no point checking the PSR I bit. | 145 | @ the first place, so there's no point checking the PSR I bit. |
142 | bl trace_hardirqs_on | 146 | bl trace_hardirqs_on |
143 | #endif | 147 | #endif |
144 | .else | 148 | .else |
149 | @ IRQs off again before pulling preserved data off the stack | ||
150 | disable_irq_notrace | ||
145 | #ifdef CONFIG_TRACE_IRQFLAGS | 151 | #ifdef CONFIG_TRACE_IRQFLAGS |
146 | tst \rpsr, #PSR_I_BIT | 152 | tst \rpsr, #PSR_I_BIT |
147 | bleq trace_hardirqs_on | 153 | bleq trace_hardirqs_on |