diff options
Diffstat (limited to 'arch/mips/kernel/scall32-o32.S')
-rw-r--r-- | arch/mips/kernel/scall32-o32.S | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S index 4dd8e8b4fbc2..a42e0e8caa7b 100644 --- a/arch/mips/kernel/scall32-o32.S +++ b/arch/mips/kernel/scall32-o32.S | |||
@@ -94,11 +94,13 @@ syscall_trace_entry: | |||
94 | li a1, 0 | 94 | li a1, 0 |
95 | jal do_syscall_trace | 95 | jal do_syscall_trace |
96 | 96 | ||
97 | move t0, s0 | ||
98 | RESTORE_STATIC | ||
97 | lw a0, PT_R4(sp) # Restore argument registers | 99 | lw a0, PT_R4(sp) # Restore argument registers |
98 | lw a1, PT_R5(sp) | 100 | lw a1, PT_R5(sp) |
99 | lw a2, PT_R6(sp) | 101 | lw a2, PT_R6(sp) |
100 | lw a3, PT_R7(sp) | 102 | lw a3, PT_R7(sp) |
101 | jalr s0 | 103 | jalr t0 |
102 | 104 | ||
103 | li t0, -EMAXERRNO - 1 # error? | 105 | li t0, -EMAXERRNO - 1 # error? |
104 | sltu t0, t0, v0 | 106 | sltu t0, t0, v0 |
@@ -241,19 +243,7 @@ illegal_syscall: | |||
241 | sw zero, PT_R7(sp) # success | 243 | sw zero, PT_R7(sp) # success |
242 | sw v0, PT_R2(sp) # result | 244 | sw v0, PT_R2(sp) # result |
243 | 245 | ||
244 | /* Success, so skip usual error handling garbage. */ | 246 | j o32_syscall_exit # continue like a normal syscall |
245 | lw a2, TI_FLAGS($28) # syscall tracing enabled? | ||
246 | li t0, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | ||
247 | and t0, a2, t0 | ||
248 | bnez t0, 1f | ||
249 | |||
250 | j o32_syscall_exit | ||
251 | |||
252 | 1: SAVE_STATIC | ||
253 | move a0, sp | ||
254 | li a1, 1 | ||
255 | jal do_syscall_trace | ||
256 | j syscall_exit | ||
257 | 247 | ||
258 | no_mem: li v0, -ENOMEM | 248 | no_mem: li v0, -ENOMEM |
259 | jr ra | 249 | jr ra |