diff options
| -rw-r--r-- | arch/mips/kernel/scall32-o32.S | 1 | ||||
| -rw-r--r-- | arch/mips/kernel/scall64-o32.S | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S index c5bf845c7dd4..6e8de80bb446 100644 --- a/arch/mips/kernel/scall32-o32.S +++ b/arch/mips/kernel/scall32-o32.S | |||
| @@ -181,6 +181,7 @@ illegal_syscall: | |||
| 181 | sll t1, t0, 2 | 181 | sll t1, t0, 2 |
| 182 | beqz v0, einval | 182 | beqz v0, einval |
| 183 | lw t2, sys_call_table(t1) # syscall routine | 183 | lw t2, sys_call_table(t1) # syscall routine |
| 184 | sw a0, PT_R2(sp) # call routine directly on restart | ||
| 184 | 185 | ||
| 185 | /* Some syscalls like execve get their arguments from struct pt_regs | 186 | /* Some syscalls like execve get their arguments from struct pt_regs |
| 186 | and claim zero arguments in the syscall table. Thus we have to | 187 | and claim zero arguments in the syscall table. Thus we have to |
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 4fdca4fb7943..d07b210fbeff 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S | |||
| @@ -186,6 +186,7 @@ LEAF(sys32_syscall) | |||
| 186 | dsll t1, t0, 3 | 186 | dsll t1, t0, 3 |
| 187 | beqz v0, einval | 187 | beqz v0, einval |
| 188 | ld t2, sys32_call_table(t1) # syscall routine | 188 | ld t2, sys32_call_table(t1) # syscall routine |
| 189 | sd a0, PT_R2(sp) # call routine directly on restart | ||
| 189 | 190 | ||
| 190 | move a0, a1 # shift argument registers | 191 | move a0, a1 # shift argument registers |
| 191 | move a1, a2 | 192 | move a1, a2 |
