.. | .. |
---|
206 | 206 | |
---|
207 | 207 | #ifdef CONFIG_PREEMPTION |
---|
208 | 208 | ldr r8, [tsk, #TI_PREEMPT] @ get preempt count |
---|
209 | | - teq r8, #0 @ if preempt count != 0 |
---|
210 | | - bne 1f @ return from exeption |
---|
211 | 209 | ldr r0, [tsk, #TI_FLAGS] @ get flags |
---|
212 | | - tst r0, #_TIF_NEED_RESCHED @ if NEED_RESCHED is set |
---|
213 | | - blne svc_preempt @ preempt! |
---|
214 | | - |
---|
215 | | - ldr r8, [tsk, #TI_PREEMPT_LAZY] @ get preempt lazy count |
---|
216 | | - teq r8, #0 @ if preempt lazy count != 0 |
---|
| 210 | + teq r8, #0 @ if preempt count != 0 |
---|
217 | 211 | movne r0, #0 @ force flags to 0 |
---|
218 | | - tst r0, #_TIF_NEED_RESCHED_LAZY |
---|
| 212 | + tst r0, #_TIF_NEED_RESCHED |
---|
219 | 213 | blne svc_preempt |
---|
220 | | -1: |
---|
221 | 214 | #endif |
---|
222 | 215 | |
---|
223 | 216 | svc_exit r5, irq = 1 @ return from exception |
---|
.. | .. |
---|
232 | 225 | 1: bl preempt_schedule_irq @ irq en/disable is done inside |
---|
233 | 226 | ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS |
---|
234 | 227 | tst r0, #_TIF_NEED_RESCHED |
---|
235 | | - bne 1b |
---|
236 | | - tst r0, #_TIF_NEED_RESCHED_LAZY |
---|
237 | 228 | reteq r8 @ go again |
---|
238 | | - ldr r0, [tsk, #TI_PREEMPT_LAZY] @ get preempt lazy count |
---|
239 | | - teq r0, #0 @ if preempt lazy count != 0 |
---|
240 | | - beq 1b |
---|
241 | | - ret r8 @ go again |
---|
242 | | - |
---|
| 229 | + b 1b |
---|
243 | 230 | #endif |
---|
244 | 231 | |
---|
245 | 232 | __und_fault: |
---|