Skip to content

Commit

Permalink
ARM: entry: move disable_irq_notrace into svc_exit
Browse files Browse the repository at this point in the history
All svc exit paths need IRQs off.  Rather than placing this before
every user of svc_exit, combine it into this macro.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King committed Apr 3, 2013
1 parent 9b56feb commit f8f02ec
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 18 deletions.
18 changes: 0 additions & 18 deletions arch/arm/kernel/entry-armv.S
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,6 @@ __dabt_svc:
svc_entry
mov r2, sp
dabt_helper

@
@ IRQs off again before pulling preserved data off the stack
@
disable_irq_notrace
svc_exit r5 @ return from exception
UNWIND(.fnend )
ENDPROC(__dabt_svc)
Expand Down Expand Up @@ -283,15 +278,7 @@ __und_svc_fault:
mov r0, sp @ struct pt_regs *regs
bl __und_fault

@
@ IRQs off again before pulling preserved data off the stack
@
__und_svc_finish:
disable_irq_notrace

@
@ restore SPSR and restart the instruction
@
ldr r5, [sp, #S_PSR] @ Get SVC cpsr
svc_exit r5 @ return from exception
UNWIND(.fnend )
Expand All @@ -302,11 +289,6 @@ __pabt_svc:
svc_entry
mov r2, sp @ regs
pabt_helper

@
@ IRQs off again before pulling preserved data off the stack
@
disable_irq_notrace
svc_exit r5 @ return from exception
UNWIND(.fnend )
ENDPROC(__pabt_svc)
Expand Down
6 changes: 6 additions & 0 deletions arch/arm/kernel/entry-header.S
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,15 @@
#ifndef CONFIG_THUMB2_KERNEL
.macro svc_exit, rpsr, irq = 0
.if \irq != 0
@ IRQs already off
#ifdef CONFIG_TRACE_IRQFLAGS
@ The parent context IRQs must have been enabled to get here in
@ the first place, so there's no point checking the PSR I bit.
bl trace_hardirqs_on
#endif
.else
@ IRQs off again before pulling preserved data off the stack
disable_irq_notrace
#ifdef CONFIG_TRACE_IRQFLAGS
tst \rpsr, #PSR_I_BIT
bleq trace_hardirqs_on
Expand Down Expand Up @@ -136,12 +139,15 @@
#else /* CONFIG_THUMB2_KERNEL */
.macro svc_exit, rpsr, irq = 0
.if \irq != 0
@ IRQs already off
#ifdef CONFIG_TRACE_IRQFLAGS
@ The parent context IRQs must have been enabled to get here in
@ the first place, so there's no point checking the PSR I bit.
bl trace_hardirqs_on
#endif
.else
@ IRQs off again before pulling preserved data off the stack
disable_irq_notrace
#ifdef CONFIG_TRACE_IRQFLAGS
tst \rpsr, #PSR_I_BIT
bleq trace_hardirqs_on
Expand Down

0 comments on commit f8f02ec

Please sign in to comment.