[MIPS] ret_from_irq adjustment
Make sure that RA on top of interrupt stack is an address of ret_from_irq, so that dump_stack etc. can trace info interrupted context. Also this patch fixes except_vec_vi_handler and __smtc_ipi_vector which seems broken. Signed-off-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
441ee341ad
commit
f431baa55a
@@ -20,10 +20,7 @@
|
||||
#include <asm/mipsmtregs.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PREEMPT
|
||||
.macro preempt_stop
|
||||
.endm
|
||||
#else
|
||||
#ifndef CONFIG_PREEMPT
|
||||
.macro preempt_stop
|
||||
local_irq_disable
|
||||
.endm
|
||||
@@ -32,9 +29,16 @@
|
||||
|
||||
.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
|
||||
FEXPORT(ret_from_exception)
|
||||
preempt_stop
|
||||
FEXPORT(ret_from_irq)
|
||||
#endif
|
||||
FEXPORT(_ret_from_irq)
|
||||
LONG_L t0, PT_STATUS(sp) # returning to kernel mode?
|
||||
andi t0, t0, KU_USER
|
||||
beqz t0, resume_kernel
|
||||
|
Reference in New Issue
Block a user