aboutsummaryrefslogtreecommitdiff
path: root/arch/mips/kernel/scall32-o32.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel/scall32-o32.S')
-rw-r--r--arch/mips/kernel/scall32-o32.S18
1 files changed, 4 insertions, 14 deletions
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
index 4dd8e8b4fbc..a42e0e8caa7 100644
--- a/arch/mips/kernel/scall32-o32.S
+++ b/arch/mips/kernel/scall32-o32.S
@@ -94,11 +94,13 @@ syscall_trace_entry:
li a1, 0
jal do_syscall_trace
+ move t0, s0
+ RESTORE_STATIC
lw a0, PT_R4(sp) # Restore argument registers
lw a1, PT_R5(sp)
lw a2, PT_R6(sp)
lw a3, PT_R7(sp)
- jalr s0
+ jalr t0
li t0, -EMAXERRNO - 1 # error?
sltu t0, t0, v0
@@ -241,19 +243,7 @@ illegal_syscall:
sw zero, PT_R7(sp) # success
sw v0, PT_R2(sp) # result
- /* Success, so skip usual error handling garbage. */
- lw a2, TI_FLAGS($28) # syscall tracing enabled?
- li t0, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT
- and t0, a2, t0
- bnez t0, 1f
-
- j o32_syscall_exit
-
-1: SAVE_STATIC
- move a0, sp
- li a1, 1
- jal do_syscall_trace
- j syscall_exit
+ j o32_syscall_exit # continue like a normal syscall
no_mem: li v0, -ENOMEM
jr ra