STI
.set at
#endif
- ld t1, PT_EPC(sp) # skip syscall on return
- subu t0, v0, __NR_N32_Linux # check syscall number
+ dsubu t0, v0, __NR_N32_Linux # check syscall number
sltiu t0, t0, __NR_N32_Linux_syscalls + 1
+
+#ifndef CONFIG_MIPS32_O32
+ ld t1, PT_EPC(sp) # skip syscall on return
daddiu t1, 4 # skip to next instruction
- beqz t0, not_n32_scall
sd t1, PT_EPC(sp)
+#endif
+ beqz t0, not_n32_scall
dsll t0, v0, 3 # offset into table
ld t2, (sysn32_call_table - (__NR_N32_Linux * 8))(t0)
sd a3, PT_R26(sp) # save a3 for syscall restarting
+ li t1, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
- bltz t0, n32_syscall_trace_entry
+ and t0, t1, t0
+ bnez t0, n32_syscall_trace_entry
jalr t2 # Do The Real Thing (TM)
sd t0, PT_R7(sp) # set error flag
beqz t0, 1f
- negu v0 # error
+ dnegu v0 # error
sd v0, PT_R0(sp) # set flag for syscall restarting
1: sd v0, PT_R2(sp) # result
-FEXPORT(n32_syscall_exit)
local_irq_disable # make sure need_resched and
# signals dont change between
# sampling and return
n32_syscall_trace_entry:
SAVE_STATIC
- sd t2,PT_R1(sp)
+ move s0, t2
+ move a0, sp
+ li a1, 0
jal do_syscall_trace
- ld t2,PT_R1(sp)
ld a0, PT_R4(sp) # Restore argument registers
ld a1, PT_R5(sp)
ld a2, PT_R6(sp)
ld a3, PT_R7(sp)
- jalr t2
+ ld a4, PT_R8(sp)
+ ld a5, PT_R9(sp)
+ jalr s0
li t0, -EMAXERRNO - 1 # error?
sltu t0, t0, v0
sd t0, PT_R7(sp) # set error flag
beqz t0, 1f
- negu v0 # error
+ dnegu v0 # error
sd v0, PT_R0(sp) # set flag for syscall restarting
1: sd v0, PT_R2(sp) # result
- j n32_syscall_exit
+ j syscall_exit
not_n32_scall:
/* This is not an n32 compatibility syscall, pass it on to
PTR compat_sys_ioctl /* 6015 */
PTR sys_pread64
PTR sys_pwrite64
- PTR sys32_readv
- PTR sys32_writev
+ PTR compat_sys_readv
+ PTR compat_sys_writev
PTR sys_access /* 6020 */
PTR sys_pipe
- PTR sys32_select
+ PTR compat_sys_select
PTR sys_sched_yield
PTR sys_mremap
PTR sys_msync /* 6025 */
PTR sys_capget
PTR sys_capset
PTR sys32_rt_sigpending /* 6125 */
- PTR sys32_rt_sigtimedwait
+ PTR compat_sys_rt_sigtimedwait
PTR sys32_rt_sigqueueinfo
PTR sys32_rt_sigsuspend
PTR sys32_sigaltstack
PTR sys_restart_syscall
PTR sys_semtimedop /* 6215 */
PTR sys_fadvise64_64
- PTR sys_statfs64
- PTR sys_fstatfs64
+ PTR compat_sys_statfs64
+ PTR compat_sys_fstatfs64
PTR sys_sendfile64
PTR sys_timer_create /* 6220 */
PTR sys_timer_settime
PTR sys_clock_nanosleep
PTR sys_tgkill
PTR compat_sys_utimes /* 6230 */
+ PTR sys_ni_syscall /* sys_mbind */
+ PTR sys_ni_syscall /* sys_get_mempolicy */
+ PTR sys_ni_syscall /* sys_set_mempolicy */
+ PTR compat_sys_mq_open
+ PTR sys_mq_unlink /* 6235 */
+ PTR compat_sys_mq_timedsend
+ PTR compat_sys_mq_timedreceive
+ PTR compat_sys_mq_notify
+ PTR compat_sys_mq_getsetattr
+ PTR sys_ni_syscall /* 6240, sys_vserver */
+ PTR sys_waitid
+ PTR sys_ni_syscall /* available, was setaltroot */
+ PTR sys_add_key
+ PTR sys_request_key
+ PTR sys_keyctl /* 6245 */