Commit 06999fd5 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'work.alpha' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs

Pull alpha syscall glue updates from Al Viro:
 "Two old patches making alpha syscall glue a bit less mysterious"

* 'work.alpha' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  alpha: unify the glue for sigreturn-like syscalls
  alpha: use alpha_ni_syscall only for syscall zero
parents ba7d4f36 8a68060c
...@@ -473,7 +473,7 @@ entSys: ...@@ -473,7 +473,7 @@ entSys:
bne $3, strace bne $3, strace
beq $4, 1f beq $4, 1f
ldq $27, 0($5) ldq $27, 0($5)
1: jsr $26, ($27), alpha_ni_syscall 1: jsr $26, ($27), sys_ni_syscall
ldgp $gp, 0($26) ldgp $gp, 0($26)
blt $0, $syscall_error /* the call failed */ blt $0, $syscall_error /* the call failed */
stq $0, 0($sp) stq $0, 0($sp)
...@@ -587,7 +587,7 @@ strace: ...@@ -587,7 +587,7 @@ strace:
/* get the system call pointer.. */ /* get the system call pointer.. */
lda $1, NR_SYSCALLS($31) lda $1, NR_SYSCALLS($31)
lda $2, sys_call_table lda $2, sys_call_table
lda $27, alpha_ni_syscall lda $27, sys_ni_syscall
cmpult $0, $1, $1 cmpult $0, $1, $1
s8addq $0, $2, $2 s8addq $0, $2, $2
beq $1, 1f beq $1, 1f
...@@ -791,7 +791,7 @@ ret_from_kernel_thread: ...@@ -791,7 +791,7 @@ ret_from_kernel_thread:
/* /*
* Special system calls. Most of these are special in that they either * Special system calls. Most of these are special in that they either
* have to play switch_stack games or in some way use the pt_regs struct. * have to play switch_stack games.
*/ */
.macro fork_like name .macro fork_like name
...@@ -812,46 +812,41 @@ fork_like fork ...@@ -812,46 +812,41 @@ fork_like fork
fork_like vfork fork_like vfork
fork_like clone fork_like clone
.macro sigreturn_like name
.align 4 .align 4
.globl sys_sigreturn .globl sys_\name
.ent sys_sigreturn .ent sys_\name
sys_sigreturn: sys_\name:
.prologue 0 .prologue 0
lda $9, ret_from_straced lda $9, ret_from_straced
cmpult $26, $9, $9 cmpult $26, $9, $9
lda $sp, -SWITCH_STACK_SIZE($sp) lda $sp, -SWITCH_STACK_SIZE($sp)
jsr $26, do_sigreturn jsr $26, do_\name
bne $9, 1f bne $9, 1f
jsr $26, syscall_trace_leave jsr $26, syscall_trace_leave
1: br $1, undo_switch_stack 1: br $1, undo_switch_stack
br ret_from_sys_call br ret_from_sys_call
.end sys_sigreturn .end sys_\name
.endm
.align 4 sigreturn_like sigreturn
.globl sys_rt_sigreturn sigreturn_like rt_sigreturn
.ent sys_rt_sigreturn
sys_rt_sigreturn:
.prologue 0
lda $9, ret_from_straced
cmpult $26, $9, $9
lda $sp, -SWITCH_STACK_SIZE($sp)
jsr $26, do_rt_sigreturn
bne $9, 1f
jsr $26, syscall_trace_leave
1: br $1, undo_switch_stack
br ret_from_sys_call
.end sys_rt_sigreturn
.align 4 .align 4
.globl alpha_ni_syscall .globl alpha_syscall_zero
.ent alpha_ni_syscall .ent alpha_syscall_zero
alpha_ni_syscall: alpha_syscall_zero:
.prologue 0 .prologue 0
/* Special because it also implements overflow handling via /* Special because it needs to do something opposite to
syscall number 0. And if you recall, zero is a special force_successful_syscall_return(). We use the saved
trigger for "not an error". Store large non-zero there. */ 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 lda $0, -ENOSYS
unop unop
stq $0, 0($sp) stq $0, 0($sp)
ret ret
.end alpha_ni_syscall .end alpha_syscall_zero
...@@ -11,93 +11,93 @@ ...@@ -11,93 +11,93 @@
.align 3 .align 3
.globl sys_call_table .globl sys_call_table
sys_call_table: sys_call_table:
.quad alpha_ni_syscall /* 0 */ .quad alpha_syscall_zero /* 0 */
.quad sys_exit .quad sys_exit
.quad alpha_fork .quad alpha_fork
.quad sys_read .quad sys_read
.quad sys_write .quad sys_write
.quad alpha_ni_syscall /* 5 */ .quad sys_ni_syscall /* 5 */
.quad sys_close .quad sys_close
.quad sys_osf_wait4 .quad sys_osf_wait4
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_link .quad sys_link
.quad sys_unlink /* 10 */ .quad sys_unlink /* 10 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_chdir .quad sys_chdir
.quad sys_fchdir .quad sys_fchdir
.quad sys_mknod .quad sys_mknod
.quad sys_chmod /* 15 */ .quad sys_chmod /* 15 */
.quad sys_chown .quad sys_chown
.quad sys_osf_brk .quad sys_osf_brk
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_lseek .quad sys_lseek
.quad sys_getxpid /* 20 */ .quad sys_getxpid /* 20 */
.quad sys_osf_mount .quad sys_osf_mount
.quad sys_umount .quad sys_umount
.quad sys_setuid .quad sys_setuid
.quad sys_getxuid .quad sys_getxuid
.quad alpha_ni_syscall /* 25 */ .quad sys_ni_syscall /* 25 */
.quad sys_ptrace .quad sys_ptrace
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 30 */ .quad sys_ni_syscall /* 30 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_access .quad sys_access
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 35 */ .quad sys_ni_syscall /* 35 */
.quad sys_sync .quad sys_sync
.quad sys_kill .quad sys_kill
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_setpgid .quad sys_setpgid
.quad alpha_ni_syscall /* 40 */ .quad sys_ni_syscall /* 40 */
.quad sys_dup .quad sys_dup
.quad sys_alpha_pipe .quad sys_alpha_pipe
.quad sys_osf_set_program_attributes .quad sys_osf_set_program_attributes
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_open /* 45 */ .quad sys_open /* 45 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_getxgid .quad sys_getxgid
.quad sys_osf_sigprocmask .quad sys_osf_sigprocmask
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 50 */ .quad sys_ni_syscall /* 50 */
.quad sys_acct .quad sys_acct
.quad sys_sigpending .quad sys_sigpending
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_ioctl .quad sys_ioctl
.quad alpha_ni_syscall /* 55 */ .quad sys_ni_syscall /* 55 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_symlink .quad sys_symlink
.quad sys_readlink .quad sys_readlink
.quad sys_execve .quad sys_execve
.quad sys_umask /* 60 */ .quad sys_umask /* 60 */
.quad sys_chroot .quad sys_chroot
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_getpgrp .quad sys_getpgrp
.quad sys_getpagesize .quad sys_getpagesize
.quad alpha_ni_syscall /* 65 */ .quad sys_ni_syscall /* 65 */
.quad alpha_vfork .quad alpha_vfork
.quad sys_newstat .quad sys_newstat
.quad sys_newlstat .quad sys_newlstat
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 70 */ .quad sys_ni_syscall /* 70 */
.quad sys_osf_mmap .quad sys_osf_mmap
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_munmap .quad sys_munmap
.quad sys_mprotect .quad sys_mprotect
.quad sys_madvise /* 75 */ .quad sys_madvise /* 75 */
.quad sys_vhangup .quad sys_vhangup
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_getgroups .quad sys_getgroups
/* map BSD's setpgrp to sys_setpgid for binary compatibility: */ /* map BSD's setpgrp to sys_setpgid for binary compatibility: */
.quad sys_setgroups /* 80 */ .quad sys_setgroups /* 80 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_setpgid .quad sys_setpgid
.quad sys_osf_setitimer .quad sys_osf_setitimer
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 85 */ .quad sys_ni_syscall /* 85 */
.quad sys_osf_getitimer .quad sys_osf_getitimer
.quad sys_gethostname .quad sys_gethostname
.quad sys_sethostname .quad sys_sethostname
...@@ -119,19 +119,19 @@ sys_call_table: ...@@ -119,19 +119,19 @@ sys_call_table:
.quad sys_bind .quad sys_bind
.quad sys_setsockopt /* 105 */ .quad sys_setsockopt /* 105 */
.quad sys_listen .quad sys_listen
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 110 */ .quad sys_ni_syscall /* 110 */
.quad sys_sigsuspend .quad sys_sigsuspend
.quad sys_osf_sigstack .quad sys_osf_sigstack
.quad sys_recvmsg .quad sys_recvmsg
.quad sys_sendmsg .quad sys_sendmsg
.quad alpha_ni_syscall /* 115 */ .quad sys_ni_syscall /* 115 */
.quad sys_osf_gettimeofday .quad sys_osf_gettimeofday
.quad sys_osf_getrusage .quad sys_osf_getrusage
.quad sys_getsockopt .quad sys_getsockopt
.quad alpha_ni_syscall .quad sys_ni_syscall
#ifdef CONFIG_OSF4_COMPAT #ifdef CONFIG_OSF4_COMPAT
.quad sys_osf_readv /* 120 */ .quad sys_osf_readv /* 120 */
.quad sys_osf_writev .quad sys_osf_writev
...@@ -156,66 +156,66 @@ sys_call_table: ...@@ -156,66 +156,66 @@ sys_call_table:
.quad sys_mkdir .quad sys_mkdir
.quad sys_rmdir .quad sys_rmdir
.quad sys_osf_utimes .quad sys_osf_utimes
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 140 */ .quad sys_ni_syscall /* 140 */
.quad sys_getpeername .quad sys_getpeername
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_getrlimit .quad sys_getrlimit
.quad sys_setrlimit /* 145 */ .quad sys_setrlimit /* 145 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_setsid .quad sys_setsid
.quad sys_quotactl .quad sys_quotactl
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_getsockname /* 150 */ .quad sys_getsockname /* 150 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 155 */ .quad sys_ni_syscall /* 155 */
.quad sys_osf_sigaction .quad sys_osf_sigaction
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_osf_getdirentries .quad sys_osf_getdirentries
.quad sys_osf_statfs /* 160 */ .quad sys_osf_statfs /* 160 */
.quad sys_osf_fstatfs .quad sys_osf_fstatfs
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_osf_getdomainname /* 165 */ .quad sys_osf_getdomainname /* 165 */
.quad sys_setdomainname .quad sys_setdomainname
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 170 */ .quad sys_ni_syscall /* 170 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 175 */ .quad sys_ni_syscall /* 175 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 180 */ .quad sys_ni_syscall /* 180 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 185 */ .quad sys_ni_syscall /* 185 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 190 */ .quad sys_ni_syscall /* 190 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 195 */ .quad sys_ni_syscall /* 195 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
/* The OSF swapon has two extra arguments, but we ignore them. */ /* The OSF swapon has two extra arguments, but we ignore them. */
.quad sys_swapon .quad sys_swapon
.quad sys_msgctl /* 200 */ .quad sys_msgctl /* 200 */
...@@ -231,93 +231,93 @@ sys_call_table: ...@@ -231,93 +231,93 @@ sys_call_table:
.quad sys_shmctl /* 210 */ .quad sys_shmctl /* 210 */
.quad sys_shmdt .quad sys_shmdt
.quad sys_shmget .quad sys_shmget
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 215 */ .quad sys_ni_syscall /* 215 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_msync .quad sys_msync
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 220 */ .quad sys_ni_syscall /* 220 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_osf_stat .quad sys_osf_stat
.quad sys_osf_lstat /* 225 */ .quad sys_osf_lstat /* 225 */
.quad sys_osf_fstat .quad sys_osf_fstat
.quad sys_osf_statfs64 .quad sys_osf_statfs64
.quad sys_osf_fstatfs64 .quad sys_osf_fstatfs64
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 230 */ .quad sys_ni_syscall /* 230 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_getpgid .quad sys_getpgid
.quad sys_getsid .quad sys_getsid
.quad sys_sigaltstack /* 235 */ .quad sys_sigaltstack /* 235 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 240 */ .quad sys_ni_syscall /* 240 */
.quad sys_osf_sysinfo .quad sys_osf_sysinfo
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_osf_proplist_syscall .quad sys_osf_proplist_syscall
.quad alpha_ni_syscall /* 245 */ .quad sys_ni_syscall /* 245 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 250 */ .quad sys_ni_syscall /* 250 */
.quad sys_osf_usleep_thread .quad sys_osf_usleep_thread
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad sys_sysfs .quad sys_sysfs
.quad alpha_ni_syscall /* 255 */ .quad sys_ni_syscall /* 255 */
.quad sys_osf_getsysinfo .quad sys_osf_getsysinfo
.quad sys_osf_setsysinfo .quad sys_osf_setsysinfo
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 260 */ .quad sys_ni_syscall /* 260 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 265 */ .quad sys_ni_syscall /* 265 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 270 */ .quad sys_ni_syscall /* 270 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 275 */ .quad sys_ni_syscall /* 275 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 280 */ .quad sys_ni_syscall /* 280 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 285 */ .quad sys_ni_syscall /* 285 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 290 */ .quad sys_ni_syscall /* 290 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall /* 295 */ .quad sys_ni_syscall /* 295 */
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
.quad alpha_ni_syscall .quad sys_ni_syscall
/* linux-specific system calls start at 300 */ /* linux-specific system calls start at 300 */
.quad sys_bdflush /* 300 */ .quad sys_bdflush /* 300 */
.quad sys_sethae .quad sys_sethae
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment