Commit 1613cc11 authored by Russell King's avatar Russell King

ARM: entry: no need to increase preempt count for IRQ handlers

irq_enter() and irq_exit() already take care of the preempt_count
handling for interrupts, which increment and decrement the hardirq
bits of the preempt count.  So we can remove the preempt count handing
in our IRQ entry/exit assembly, like x86 did some 9 years ago.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 198a0a92
...@@ -220,16 +220,12 @@ __irq_svc: ...@@ -220,16 +220,12 @@ __irq_svc:
#ifdef CONFIG_TRACE_IRQFLAGS #ifdef CONFIG_TRACE_IRQFLAGS
bl trace_hardirqs_off bl trace_hardirqs_off
#endif #endif
#ifdef CONFIG_PREEMPT
get_thread_info tsk
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
add r7, r8, #1 @ increment it
str r7, [tsk, #TI_PREEMPT]
#endif
irq_handler irq_handler
#ifdef CONFIG_PREEMPT #ifdef CONFIG_PREEMPT
str r8, [tsk, #TI_PREEMPT] @ restore preempt count get_thread_info tsk
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
ldr r0, [tsk, #TI_FLAGS] @ get flags ldr r0, [tsk, #TI_FLAGS] @ get flags
teq r8, #0 @ if preempt count != 0 teq r8, #0 @ if preempt count != 0
movne r0, #0 @ force flags to 0 movne r0, #0 @ force flags to 0
...@@ -432,23 +428,8 @@ __irq_usr: ...@@ -432,23 +428,8 @@ __irq_usr:
bl trace_hardirqs_off bl trace_hardirqs_off
#endif #endif
get_thread_info tsk
#ifdef CONFIG_PREEMPT
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
add r7, r8, #1 @ increment it
str r7, [tsk, #TI_PREEMPT]
#endif
irq_handler irq_handler
#ifdef CONFIG_PREEMPT get_thread_info tsk
ldr r0, [tsk, #TI_PREEMPT]
str r8, [tsk, #TI_PREEMPT]
teq r0, r7
ARM( strne r0, [r0, -r0] )
THUMB( movne r0, #0 )
THUMB( strne r0, [r0] )
#endif
mov why, #0 mov why, #0
b ret_to_user_from_irq b ret_to_user_from_irq
UNWIND(.fnend ) UNWIND(.fnend )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment