From: Al Viro Date: Thu, 18 Oct 2012 15:24:11 +0000 (-0400) Subject: frv: fix the broken preempt X-Git-Tag: next-20121022~3^2^3 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=b5b94e010e6eabd323b696dc005b0f409e0ce315;p=karo-tx-linux.git frv: fix the broken preempt 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 --- diff --git a/arch/frv/kernel/entry.S b/arch/frv/kernel/entry.S index bef078dcceda..dfcd263c0517 100644 --- a/arch/frv/kernel/entry.S +++ b/arch/frv/kernel/entry.S @@ -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 ###############################################################################