mirror of https://gitee.com/openkylin/linux.git
mips: merge the identical "return from syscall" per-ABI code
No need to keep 4 copies of that stuff; merged and taken to entry.S, unused public symbols there killed off. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
f925725d91
commit
45111b5398
|
@ -77,7 +77,7 @@ FEXPORT(syscall_exit)
|
||||||
and t0, a2, t0
|
and t0, a2, t0
|
||||||
bnez t0, syscall_exit_work
|
bnez t0, syscall_exit_work
|
||||||
|
|
||||||
FEXPORT(restore_all) # restore full frame
|
restore_all: # restore full frame
|
||||||
#ifdef CONFIG_MIPS_MT_SMTC
|
#ifdef CONFIG_MIPS_MT_SMTC
|
||||||
#ifdef CONFIG_MIPS_MT_SMTC_IM_BACKSTOP
|
#ifdef CONFIG_MIPS_MT_SMTC_IM_BACKSTOP
|
||||||
/* Re-arm any temporarily masked interrupts not explicitly "acked" */
|
/* Re-arm any temporarily masked interrupts not explicitly "acked" */
|
||||||
|
@ -117,7 +117,7 @@ FEXPORT(restore_all) # restore full frame
|
||||||
RESTORE_TEMP
|
RESTORE_TEMP
|
||||||
RESTORE_AT
|
RESTORE_AT
|
||||||
RESTORE_STATIC
|
RESTORE_STATIC
|
||||||
FEXPORT(restore_partial) # restore partial frame
|
restore_partial: # restore partial frame
|
||||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||||
SAVE_STATIC
|
SAVE_STATIC
|
||||||
SAVE_AT
|
SAVE_AT
|
||||||
|
@ -164,7 +164,13 @@ work_notifysig: # deal with pending signals and
|
||||||
jal do_notify_resume # a2 already loaded
|
jal do_notify_resume # a2 already loaded
|
||||||
j resume_userspace
|
j resume_userspace
|
||||||
|
|
||||||
FEXPORT(syscall_exit_work_partial)
|
FEXPORT(syscall_exit_partial)
|
||||||
|
local_irq_disable # make sure need_resched doesn't
|
||||||
|
# change between and return
|
||||||
|
LONG_L a2, TI_FLAGS($28) # current->work
|
||||||
|
li t0, _TIF_ALLWORK_MASK
|
||||||
|
and t0, a2
|
||||||
|
beqz t0, restore_partial
|
||||||
SAVE_STATIC
|
SAVE_STATIC
|
||||||
syscall_exit_work:
|
syscall_exit_work:
|
||||||
LONG_L t0, PT_STATUS(sp) # returning to kernel mode?
|
LONG_L t0, PT_STATUS(sp) # returning to kernel mode?
|
||||||
|
|
|
@ -69,18 +69,7 @@ stack_done:
|
||||||
1: sw v0, PT_R2(sp) # result
|
1: sw v0, PT_R2(sp) # result
|
||||||
|
|
||||||
o32_syscall_exit:
|
o32_syscall_exit:
|
||||||
local_irq_disable # make sure need_resched and
|
j syscall_exit_partial
|
||||||
# signals dont change between
|
|
||||||
# sampling and return
|
|
||||||
lw a2, TI_FLAGS($28) # current->work
|
|
||||||
li t0, _TIF_ALLWORK_MASK
|
|
||||||
and t0, a2
|
|
||||||
bnez t0, o32_syscall_exit_work
|
|
||||||
|
|
||||||
j restore_partial
|
|
||||||
|
|
||||||
o32_syscall_exit_work:
|
|
||||||
j syscall_exit_work_partial
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|
|
@ -72,18 +72,7 @@ NESTED(handle_sys64, PT_SIZE, sp)
|
||||||
1: sd v0, PT_R2(sp) # result
|
1: sd v0, PT_R2(sp) # result
|
||||||
|
|
||||||
n64_syscall_exit:
|
n64_syscall_exit:
|
||||||
local_irq_disable # make sure need_resched and
|
j syscall_exit_partial
|
||||||
# signals dont change between
|
|
||||||
# sampling and return
|
|
||||||
LONG_L a2, TI_FLAGS($28) # current->work
|
|
||||||
li t0, _TIF_ALLWORK_MASK
|
|
||||||
and t0, a2, t0
|
|
||||||
bnez t0, n64_syscall_exit_work
|
|
||||||
|
|
||||||
j restore_partial
|
|
||||||
|
|
||||||
n64_syscall_exit_work:
|
|
||||||
j syscall_exit_work_partial
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|
|
@ -70,18 +70,7 @@ NESTED(handle_sysn32, PT_SIZE, sp)
|
||||||
sd t1, PT_R0(sp) # save it for syscall restarting
|
sd t1, PT_R0(sp) # save it for syscall restarting
|
||||||
1: sd v0, PT_R2(sp) # result
|
1: sd v0, PT_R2(sp) # result
|
||||||
|
|
||||||
local_irq_disable # make sure need_resched and
|
j syscall_exit_partial
|
||||||
# signals dont change between
|
|
||||||
# sampling and return
|
|
||||||
LONG_L a2, TI_FLAGS($28) # current->work
|
|
||||||
li t0, _TIF_ALLWORK_MASK
|
|
||||||
and t0, a2, t0
|
|
||||||
bnez t0, n32_syscall_exit_work
|
|
||||||
|
|
||||||
j restore_partial
|
|
||||||
|
|
||||||
n32_syscall_exit_work:
|
|
||||||
j syscall_exit_work_partial
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|
|
@ -99,18 +99,7 @@ NESTED(handle_sys, PT_SIZE, sp)
|
||||||
1: sd v0, PT_R2(sp) # result
|
1: sd v0, PT_R2(sp) # result
|
||||||
|
|
||||||
o32_syscall_exit:
|
o32_syscall_exit:
|
||||||
local_irq_disable # make need_resched and
|
j syscall_exit_partial
|
||||||
# signals dont change between
|
|
||||||
# sampling and return
|
|
||||||
LONG_L a2, TI_FLAGS($28)
|
|
||||||
li t0, _TIF_ALLWORK_MASK
|
|
||||||
and t0, a2, t0
|
|
||||||
bnez t0, o32_syscall_exit_work
|
|
||||||
|
|
||||||
j restore_partial
|
|
||||||
|
|
||||||
o32_syscall_exit_work:
|
|
||||||
j syscall_exit_work_partial
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue