mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
alpha: use alpha_ni_syscall only for syscall zero
Once upon a time it used to have a C part that printed a warning about unimplemented OSF syscalls. That's what it's been doing all over the OSF syscall range, while the native Linux syscall range uses sys_ni_syscall(). With those warnings about unimplemented OSF syscalls gone (circa 2.4), alpha_ni_syscall() has shrunk to that little bit of asm and the only reason it hasn't been replaced with sys_ni_syscall() everywhere is that extra twist needed in case of syscall #0. Let's keep it only for syscall #0 and replace the rest with sys_ni_syscall. And use sys_ni_syscall for "number out range" in ptraced-call case, as we'd been doing for normal codepath since 2.1.86... Acked-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
5c60a7389d
commit
060581c158
2 changed files with 173 additions and 168 deletions
|
@ -473,7 +473,7 @@ entSys:
|
|||
bne $3, strace
|
||||
beq $4, 1f
|
||||
ldq $27, 0($5)
|
||||
1: jsr $26, ($27), alpha_ni_syscall
|
||||
1: jsr $26, ($27), sys_ni_syscall
|
||||
ldgp $gp, 0($26)
|
||||
blt $0, $syscall_error /* the call failed */
|
||||
stq $0, 0($sp)
|
||||
|
@ -587,7 +587,7 @@ strace:
|
|||
/* get the system call pointer.. */
|
||||
lda $1, NR_SYSCALLS($31)
|
||||
lda $2, sys_call_table
|
||||
lda $27, alpha_ni_syscall
|
||||
lda $27, sys_ni_syscall
|
||||
cmpult $0, $1, $1
|
||||
s8addq $0, $2, $2
|
||||
beq $1, 1f
|
||||
|
@ -843,15 +843,20 @@ sys_rt_sigreturn:
|
|||
.end sys_rt_sigreturn
|
||||
|
||||
.align 4
|
||||
.globl alpha_ni_syscall
|
||||
.ent alpha_ni_syscall
|
||||
alpha_ni_syscall:
|
||||
.globl alpha_syscall_zero
|
||||
.ent alpha_syscall_zero
|
||||
alpha_syscall_zero:
|
||||
.prologue 0
|
||||
/* Special because it also implements overflow handling via
|
||||
syscall number 0. And if you recall, zero is a special
|
||||
trigger for "not an error". Store large non-zero there. */
|
||||
/* Special because it needs to do something opposite to
|
||||
force_successful_syscall_return(). We use the saved
|
||||
syscall number for that, zero meaning "not an error".
|
||||
That works nicely, but for real syscall 0 we need to
|
||||
make sure that this logics doesn't get confused.
|
||||
Store a non-zero there - -ENOSYS we need in register
|
||||
for our return value will do just fine.
|
||||
*/
|
||||
lda $0, -ENOSYS
|
||||
unop
|
||||
stq $0, 0($sp)
|
||||
ret
|
||||
.end alpha_ni_syscall
|
||||
.end alpha_syscall_zero
|
||||
|
|
|
@ -11,93 +11,93 @@
|
|||
.align 3
|
||||
.globl sys_call_table
|
||||
sys_call_table:
|
||||
.quad alpha_ni_syscall /* 0 */
|
||||
.quad alpha_syscall_zero /* 0 */
|
||||
.quad sys_exit
|
||||
.quad alpha_fork
|
||||
.quad sys_read
|
||||
.quad sys_write
|
||||
.quad alpha_ni_syscall /* 5 */
|
||||
.quad sys_ni_syscall /* 5 */
|
||||
.quad sys_close
|
||||
.quad sys_osf_wait4
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_link
|
||||
.quad sys_unlink /* 10 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_chdir
|
||||
.quad sys_fchdir
|
||||
.quad sys_mknod
|
||||
.quad sys_chmod /* 15 */
|
||||
.quad sys_chown
|
||||
.quad sys_osf_brk
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_lseek
|
||||
.quad sys_getxpid /* 20 */
|
||||
.quad sys_osf_mount
|
||||
.quad sys_umount
|
||||
.quad sys_setuid
|
||||
.quad sys_getxuid
|
||||
.quad alpha_ni_syscall /* 25 */
|
||||
.quad sys_ni_syscall /* 25 */
|
||||
.quad sys_ptrace
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 30 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 30 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_access
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 35 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 35 */
|
||||
.quad sys_sync
|
||||
.quad sys_kill
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_setpgid
|
||||
.quad alpha_ni_syscall /* 40 */
|
||||
.quad sys_ni_syscall /* 40 */
|
||||
.quad sys_dup
|
||||
.quad sys_alpha_pipe
|
||||
.quad sys_osf_set_program_attributes
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_open /* 45 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_getxgid
|
||||
.quad sys_osf_sigprocmask
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 50 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 50 */
|
||||
.quad sys_acct
|
||||
.quad sys_sigpending
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ioctl
|
||||
.quad alpha_ni_syscall /* 55 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall /* 55 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_symlink
|
||||
.quad sys_readlink
|
||||
.quad sys_execve
|
||||
.quad sys_umask /* 60 */
|
||||
.quad sys_chroot
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_getpgrp
|
||||
.quad sys_getpagesize
|
||||
.quad alpha_ni_syscall /* 65 */
|
||||
.quad sys_ni_syscall /* 65 */
|
||||
.quad alpha_vfork
|
||||
.quad sys_newstat
|
||||
.quad sys_newlstat
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 70 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 70 */
|
||||
.quad sys_osf_mmap
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_munmap
|
||||
.quad sys_mprotect
|
||||
.quad sys_madvise /* 75 */
|
||||
.quad sys_vhangup
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_getgroups
|
||||
/* map BSD's setpgrp to sys_setpgid for binary compatibility: */
|
||||
.quad sys_setgroups /* 80 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_setpgid
|
||||
.quad sys_osf_setitimer
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 85 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 85 */
|
||||
.quad sys_osf_getitimer
|
||||
.quad sys_gethostname
|
||||
.quad sys_sethostname
|
||||
|
@ -119,19 +119,19 @@ sys_call_table:
|
|||
.quad sys_bind
|
||||
.quad sys_setsockopt /* 105 */
|
||||
.quad sys_listen
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 110 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 110 */
|
||||
.quad sys_sigsuspend
|
||||
.quad sys_osf_sigstack
|
||||
.quad sys_recvmsg
|
||||
.quad sys_sendmsg
|
||||
.quad alpha_ni_syscall /* 115 */
|
||||
.quad sys_ni_syscall /* 115 */
|
||||
.quad sys_osf_gettimeofday
|
||||
.quad sys_osf_getrusage
|
||||
.quad sys_getsockopt
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
#ifdef CONFIG_OSF4_COMPAT
|
||||
.quad sys_osf_readv /* 120 */
|
||||
.quad sys_osf_writev
|
||||
|
@ -156,66 +156,66 @@ sys_call_table:
|
|||
.quad sys_mkdir
|
||||
.quad sys_rmdir
|
||||
.quad sys_osf_utimes
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 140 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 140 */
|
||||
.quad sys_getpeername
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_getrlimit
|
||||
.quad sys_setrlimit /* 145 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_setsid
|
||||
.quad sys_quotactl
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_getsockname /* 150 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 155 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 155 */
|
||||
.quad sys_osf_sigaction
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_osf_getdirentries
|
||||
.quad sys_osf_statfs /* 160 */
|
||||
.quad sys_osf_fstatfs
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_osf_getdomainname /* 165 */
|
||||
.quad sys_setdomainname
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 170 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 175 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 180 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 185 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 190 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 195 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 170 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 175 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 180 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 185 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 190 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 195 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
/* The OSF swapon has two extra arguments, but we ignore them. */
|
||||
.quad sys_swapon
|
||||
.quad sys_msgctl /* 200 */
|
||||
|
@ -231,93 +231,93 @@ sys_call_table:
|
|||
.quad sys_shmctl /* 210 */
|
||||
.quad sys_shmdt
|
||||
.quad sys_shmget
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 215 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 215 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_msync
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 220 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 220 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_osf_stat
|
||||
.quad sys_osf_lstat /* 225 */
|
||||
.quad sys_osf_fstat
|
||||
.quad sys_osf_statfs64
|
||||
.quad sys_osf_fstatfs64
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 230 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 230 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_getpgid
|
||||
.quad sys_getsid
|
||||
.quad sys_sigaltstack /* 235 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 240 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 240 */
|
||||
.quad sys_osf_sysinfo
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_osf_proplist_syscall
|
||||
.quad alpha_ni_syscall /* 245 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 250 */
|
||||
.quad sys_ni_syscall /* 245 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 250 */
|
||||
.quad sys_osf_usleep_thread
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_sysfs
|
||||
.quad alpha_ni_syscall /* 255 */
|
||||
.quad sys_ni_syscall /* 255 */
|
||||
.quad sys_osf_getsysinfo
|
||||
.quad sys_osf_setsysinfo
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 260 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 265 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 270 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 275 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 280 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 285 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 290 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall /* 295 */
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 260 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 265 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 270 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 275 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 280 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 285 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 290 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall /* 295 */
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
.quad sys_ni_syscall
|
||||
/* linux-specific system calls start at 300 */
|
||||
.quad sys_bdflush /* 300 */
|
||||
.quad sys_sethae
|
||||
|
|
Loading…
Reference in a new issue