[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>
This commit is contained in:
committed by
Ralf Baechle
parent
6f3aa38e19
commit
7da8a581f5
@@ -21,24 +21,21 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_PREEMPT
|
#ifndef CONFIG_PREEMPT
|
||||||
.macro preempt_stop
|
|
||||||
local_irq_disable
|
|
||||||
.endm
|
|
||||||
#define resume_kernel restore_all
|
#define resume_kernel restore_all
|
||||||
|
#else
|
||||||
|
#define __ret_from_irq ret_from_exception
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 5
|
.align 5
|
||||||
|
#ifndef CONFIG_PREEMPT
|
||||||
|
FEXPORT(ret_from_exception)
|
||||||
|
local_irq_disable # preempt stop
|
||||||
|
b __ret_from_irq
|
||||||
|
#endif
|
||||||
FEXPORT(ret_from_irq)
|
FEXPORT(ret_from_irq)
|
||||||
LONG_S s0, TI_REGS($28)
|
LONG_S s0, TI_REGS($28)
|
||||||
#ifdef CONFIG_PREEMPT
|
FEXPORT(__ret_from_irq)
|
||||||
FEXPORT(ret_from_exception)
|
|
||||||
#else
|
|
||||||
b _ret_from_irq
|
|
||||||
FEXPORT(ret_from_exception)
|
|
||||||
preempt_stop
|
|
||||||
#endif
|
|
||||||
FEXPORT(_ret_from_irq)
|
|
||||||
LONG_L t0, PT_STATUS(sp) # returning to kernel mode?
|
LONG_L t0, PT_STATUS(sp) # returning to kernel mode?
|
||||||
andi t0, t0, KU_USER
|
andi t0, t0, KU_USER
|
||||||
beqz t0, resume_kernel
|
beqz t0, resume_kernel
|
||||||
|
Reference in New Issue
Block a user