Since the enabling and disabling of IRQs within preempt_schedule_irq() is contained in a need_resched() loop, we don't need the outer arch code loop.
Unified · Split
| @@ -302,11 +302,7 @@ ENTRY(csky_irq) · 301 unmodified lines | |||
| 302 | ldw r12, (r9, TINFO_FLAGS) | 302 | ldw r12, (r9, TINFO_FLAGS) |
| 303 | btsti r12, TIF_NEED_RESCHED | 303 | btsti r12, TIF_NEED_RESCHED |
| 304 | bf 2f | 304 | bf 2f |
| 305 | 1: | ||
| 306 | jbsr preempt_schedule_irq /* irq en/disable is done inside */ | 305 | jbsr preempt_schedule_irq /* irq en/disable is done inside */ |
| 307 | ldw r7, (r9, TINFO_FLAGS) /* get new tasks TI_FLAGS */ | ||
| 308 | btsti r7, TIF_NEED_RESCHED | ||
| 309 | bt 1b /* go again */ | ||
| 310 | #endif | 306 | #endif |
| 311 | 2: | 307 | 2: |
| 312 | jmpi ret_from_exception | 308 | jmpi ret_from_exception |