aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/rtrap_64.S
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2013-09-17 14:53:08 -0400
committerThomas Gleixner <tglx@linutronix.de>2013-11-13 14:21:47 -0500
commit9385d949d5bd0eb642ed05ea263c3638c9f4e372 (patch)
tree1db5214cafd517285f841bb77e30c81aa2936b35 /arch/sparc/kernel/rtrap_64.S
parentaa0d53260596c1bef23547537724d4bad78e6f52 (diff)
sparc: Use preempt_schedule_irq
The low level preemption code fiddles with the PREEMPT_ACTIVE bit for no reason and calls schedule() with interrupts disabled, which is wrong to begin with. Remove the PREEMPT_ACTIVE fiddling and call the proper schedule_preempt_irq() function. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: David S. Miller <davem@davemloft.net> Cc: sparclinux@vger.kernel.org Link: http://lkml.kernel.org/r/20130917183628.966769884@linutronix.de
Diffstat (limited to 'arch/sparc/kernel/rtrap_64.S')
-rw-r--r--arch/sparc/kernel/rtrap_64.S6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
index afa2a9e3d0a0..76213db97a4a 100644
--- a/arch/sparc/kernel/rtrap_64.S
+++ b/arch/sparc/kernel/rtrap_64.S
@@ -306,12 +306,10 @@ to_kernel:
306 nop 306 nop
307 cmp %l4, 0 307 cmp %l4, 0
308 bne,pn %xcc, kern_fpucheck 308 bne,pn %xcc, kern_fpucheck
309 sethi %hi(PREEMPT_ACTIVE), %l6 309 nop
310 stw %l6, [%g6 + TI_PRE_COUNT] 310 call preempt_schedule_irq
311 call schedule
312 nop 311 nop
313 ba,pt %xcc, rtrap 312 ba,pt %xcc, rtrap
314 stw %g0, [%g6 + TI_PRE_COUNT]
315#endif 313#endif
316kern_fpucheck: ldub [%g6 + TI_FPDEPTH], %l5 314kern_fpucheck: ldub [%g6 + TI_FPDEPTH], %l5
317 brz,pt %l5, rt_continue 315 brz,pt %l5, rt_continue