|
@@ -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_PRE_COUNT)
|
|
|
-
|
|
|
- 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
|
|
|
|
|
|
|
|
|
###############################################################################
|