]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
frv: fix the broken preempt
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 18 Oct 2012 15:24:11 +0000 (11:24 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 18 Oct 2012 16:39:14 +0000 (12:39 -0400)
For one thing, PREEMPT_ACTIVE belongs in ->preempt_count, not ->flags.
For another, it ought to just use preempt_schedule_irq() and be done
with the whole mess.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/frv/kernel/entry.S

index bef078dcceda0adc6d71013c39fb8609b6f81ab6..dfcd263c05176ea6cdbf3c169070a93fe79b8f5b 100644 (file)
@@ -1075,27 +1075,10 @@ __entry_return_from_kernel_interrupt:
        subicc          gr5,#0,gr0,icc0
        beq             icc0,#0,__entry_return_direct
 
-__entry_preempt_need_resched:
-       ldi             @(gr15,#TI_FLAGS),gr4
-       andicc          gr4,#_TIF_NEED_RESCHED,gr0,icc0
-       beq             icc0,#1,__entry_return_direct
-
-       setlos          #PREEMPT_ACTIVE,gr5
-       sti             gr5,@(gr15,#TI_FLAGS)
-
-       andi            gr23,#~PSR_PIL,gr23
-       movgs           gr23,psr
-
-       call            schedule
-       sti             gr0,@(gr15,#TI_PRE_COUNT)
-
-       movsg           psr,gr23
-       ori             gr23,#PSR_PIL_14,gr23
-       movgs           gr23,psr
-       bra             __entry_preempt_need_resched
-#else
-       bra             __entry_return_direct
+       subcc           gr0,gr0,gr0,icc2                /* set Z and clear C */
+       call            preempt_schedule_irq
 #endif
+       bra             __entry_return_direct
 
 
 ###############################################################################