From b5b94e010e6eabd323b696dc005b0f409e0ce315 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Thu, 18 Oct 2012 11:24:11 -0400 Subject: [PATCH] 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 --- arch/frv/kernel/entry.S | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) 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 ############################################################################### -- 2.39.5