diff options
Diffstat (limited to 'arch/mips/kernel/scall64-64.S')
-rw-r--r-- | arch/mips/kernel/scall64-64.S | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S index 9085838d6ce3..47bfbd416709 100644 --- a/arch/mips/kernel/scall64-64.S +++ b/arch/mips/kernel/scall64-64.S | |||
@@ -93,13 +93,15 @@ syscall_trace_entry: | |||
93 | li a1, 0 | 93 | li a1, 0 |
94 | jal do_syscall_trace | 94 | jal do_syscall_trace |
95 | 95 | ||
96 | move t0, s0 | ||
97 | RESTORE_STATIC | ||
96 | ld a0, PT_R4(sp) # Restore argument registers | 98 | ld a0, PT_R4(sp) # Restore argument registers |
97 | ld a1, PT_R5(sp) | 99 | ld a1, PT_R5(sp) |
98 | ld a2, PT_R6(sp) | 100 | ld a2, PT_R6(sp) |
99 | ld a3, PT_R7(sp) | 101 | ld a3, PT_R7(sp) |
100 | ld a4, PT_R8(sp) | 102 | ld a4, PT_R8(sp) |
101 | ld a5, PT_R9(sp) | 103 | ld a5, PT_R9(sp) |
102 | jalr s0 | 104 | jalr t0 |
103 | 105 | ||
104 | li t0, -EMAXERRNO - 1 # error? | 106 | li t0, -EMAXERRNO - 1 # error? |
105 | sltu t0, t0, v0 | 107 | sltu t0, t0, v0 |
@@ -174,19 +176,7 @@ illegal_syscall: | |||
174 | sd zero, PT_R7(sp) # success | 176 | sd zero, PT_R7(sp) # success |
175 | sd v0, PT_R2(sp) # result | 177 | sd v0, PT_R2(sp) # result |
176 | 178 | ||
177 | /* Success, so skip usual error handling garbage. */ | 179 | j n64_syscall_exit # continue like a normal syscall |
178 | li t0, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | ||
179 | LONG_L a2, TI_FLAGS($28) # syscall tracing enabled? | ||
180 | and t0, a2, t0 | ||
181 | bnez t0, 1f | ||
182 | |||
183 | j n64_syscall_exit | ||
184 | |||
185 | 1: SAVE_STATIC | ||
186 | move a0, sp | ||
187 | li a1, 1 | ||
188 | jal do_syscall_trace | ||
189 | j syscall_exit | ||
190 | 180 | ||
191 | no_mem: li v0, -ENOMEM | 181 | no_mem: li v0, -ENOMEM |
192 | jr ra | 182 | jr ra |