aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/entry.S
diff options
context:
space:
mode:
authorFranck Bui-Huu <vagabon.xyz@gmail.com>2007-02-13 14:50:18 +0100
committerRalf Baechle <ralf@linux-mips.org>2007-02-13 22:40:51 +0000
commit7da8a581f5ec0ecac5f0afc9ec26ce13b780d48d (patch)
treea94025dbba3d4c1f5a10440872d08287cf991570 /arch/mips/kernel/entry.S
parent6f3aa38e191326a82d5dcae1f6cdc88b1d9a8d32 (diff)
downloadkernel_goldelico_gta04-7da8a581f5ec0ecac5f0afc9ec26ce13b780d48d.zip
kernel_goldelico_gta04-7da8a581f5ec0ecac5f0afc9ec26ce13b780d48d.tar.gz
kernel_goldelico_gta04-7da8a581f5ec0ecac5f0afc9ec26ce13b780d48d.tar.bz2
[MIPS] Make entry.S a little more readable.
When CONFIG_PREEMPT is not set, it also moves one branch instruction from ret_from_irq() to ret_from_exception(). Therefore we favour the return from irq case which should be more common than the other one. Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com> Acked-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/entry.S')
-rw-r--r--arch/mips/kernel/entry.S19
1 files changed, 8 insertions, 11 deletions
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index f10b6a1..0b78fcb 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -21,24 +21,21 @@
#endif
#ifndef CONFIG_PREEMPT
- .macro preempt_stop
- local_irq_disable
- .endm
#define resume_kernel restore_all
+#else
+#define __ret_from_irq ret_from_exception
#endif
.text
.align 5
-FEXPORT(ret_from_irq)
- LONG_S s0, TI_REGS($28)
-#ifdef CONFIG_PREEMPT
-FEXPORT(ret_from_exception)
-#else
- b _ret_from_irq
+#ifndef CONFIG_PREEMPT
FEXPORT(ret_from_exception)
- preempt_stop
+ local_irq_disable # preempt stop
+ b __ret_from_irq
#endif
-FEXPORT(_ret_from_irq)
+FEXPORT(ret_from_irq)
+ LONG_S s0, TI_REGS($28)
+FEXPORT(__ret_from_irq)
LONG_L t0, PT_STATUS(sp) # returning to kernel mode?
andi t0, t0, KU_USER
beqz t0, resume_kernel