diff options
| -rw-r--r-- | arch/frv/kernel/entry.S | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/arch/frv/kernel/entry.S b/arch/frv/kernel/entry.S index b1cd7e8145bb..dfcd263c0517 100644 --- a/arch/frv/kernel/entry.S +++ b/arch/frv/kernel/entry.S | |||
| @@ -1075,27 +1075,10 @@ __entry_return_from_kernel_interrupt: | |||
| 1075 | subicc gr5,#0,gr0,icc0 | 1075 | subicc gr5,#0,gr0,icc0 |
| 1076 | beq icc0,#0,__entry_return_direct | 1076 | beq icc0,#0,__entry_return_direct |
| 1077 | 1077 | ||
| 1078 | __entry_preempt_need_resched: | 1078 | subcc gr0,gr0,gr0,icc2 /* set Z and clear C */ |
| 1079 | ldi @(gr15,#TI_FLAGS),gr4 | 1079 | call preempt_schedule_irq |
| 1080 | andicc gr4,#_TIF_NEED_RESCHED,gr0,icc0 | ||
| 1081 | beq icc0,#1,__entry_return_direct | ||
| 1082 | |||
| 1083 | setlos #PREEMPT_ACTIVE,gr5 | ||
| 1084 | sti gr5,@(gr15,#TI_PRE_COUNT) | ||
| 1085 | |||
| 1086 | andi gr23,#~PSR_PIL,gr23 | ||
| 1087 | movgs gr23,psr | ||
| 1088 | |||
| 1089 | call schedule | ||
| 1090 | sti gr0,@(gr15,#TI_PRE_COUNT) | ||
| 1091 | |||
| 1092 | movsg psr,gr23 | ||
| 1093 | ori gr23,#PSR_PIL_14,gr23 | ||
| 1094 | movgs gr23,psr | ||
| 1095 | bra __entry_preempt_need_resched | ||
| 1096 | #else | ||
| 1097 | bra __entry_return_direct | ||
| 1098 | #endif | 1080 | #endif |
| 1081 | bra __entry_return_direct | ||
| 1099 | 1082 | ||
| 1100 | 1083 | ||
| 1101 | ############################################################################### | 1084 | ############################################################################### |
