diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2013-09-17 14:53:08 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2013-11-13 14:21:47 -0500 |
commit | 9385d949d5bd0eb642ed05ea263c3638c9f4e372 (patch) | |
tree | 1db5214cafd517285f841bb77e30c81aa2936b35 /arch/sparc/kernel/rtrap_64.S | |
parent | aa0d53260596c1bef23547537724d4bad78e6f52 (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.S | 6 |
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 |
316 | kern_fpucheck: ldub [%g6 + TI_FPDEPTH], %l5 | 314 | kern_fpucheck: ldub [%g6 + TI_FPDEPTH], %l5 |
317 | brz,pt %l5, rt_continue | 315 | brz,pt %l5, rt_continue |