path: root/arch/nios2
diff options
authorTobias Klauser <>2014-12-31 10:53:11 +0800
committerLey Foon Tan <>2014-12-31 11:04:58 +0800
commit1b0f44923e186b2f9383b3260f6b5fbfc77b9e4a (patch)
treedfbb1e124873c802f99f81e569f28f1256cdbfbb /arch/nios2
parent6f3d2b0075f74ab4f4aeca1622cd71f212a24c46 (diff)
nios2: Use preempt_schedule_irq
Follow aa0d53260596 ("ia64: Use preempt_schedule_irq") and use preempt_schedule_irq instead of enabling/disabling interrupts and messing around with PREEMPT_ACTIVE in the nios2 low-level preemption code ourselves. Also get rid of the now needless re-check for TIF_NEED_RESCHED, preempt_schedule_irq will already take care of rescheduling. This also fixes the following build error when building with CONFIG_PREEMPT: arch/nios2/kernel/built-in.o: In function `need_resched': arch/nios2/kernel/entry.S:374: undefined reference to `PREEMPT_ACTIVE' Cc: Thomas Gleixner <> Signed-off-by: Tobias Klauser <> Acked-by: Ley Foon Tan <>
Diffstat (limited to 'arch/nios2')
1 files changed, 2 insertions, 18 deletions
diff --git a/arch/nios2/kernel/entry.S b/arch/nios2/kernel/entry.S
index 83bca17d1008..0bdfd13ff98b 100644
--- a/arch/nios2/kernel/entry.S
+++ b/arch/nios2/kernel/entry.S
@@ -365,30 +365,14 @@ ENTRY(ret_from_interrupt)
ldw r4, TI_PREEMPT_COUNT(r1)
bne r4, r0, restore_all
ldw r4, TI_FLAGS(r1) /* ? Need resched set */
BTBZ r10, r4, TIF_NEED_RESCHED, restore_all
ldw r4, PT_ESTATUS(sp) /* ? Interrupts off */
andi r10, r4, ESTATUS_EPIE
beq r10, r0, restore_all
- movia r4, PREEMPT_ACTIVE
- stw r4, TI_PREEMPT_COUNT(r1)
- rdctl r10, status /* enable intrs again */
- ori r10, r10 ,STATUS_PIE
- wrctl status, r10
- PUSH r1
- call schedule
- POP r1
- mov r4, r0
- stw r4, TI_PREEMPT_COUNT(r1)
- rdctl r10, status /* disable intrs */
- andi r10, r10, %lo(~STATUS_PIE)
- wrctl status, r10
- br need_resched
- br restore_all
+ call preempt_schedule_irq
+ br restore_all
* A few syscall wrappers