/*    System Call Table
 *
 *    Copyright (C) 1999-2004 Matthew Wilcox <willy at parisc-linux.org>
 *    Copyright (C) 2000-2001 John Marvin <jsm at parisc-linux.org>
 *    Copyright (C) 2000 Alan Modra <amodra at parisc-linux.org>
 *    Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org>
 *    Copyright (C) 2000 Philipp Rumpf <prumpf with tux.org>
 *    Copyright (C) 2000 Michael Ang <mang with subcarrier.org>
 *    Copyright (C) 2000 David Huggins-Daines <dhd with pobox.org>
 *    Copyright (C) 2000 Grant Grundler <grundler at parisc-linux.org>
 *    Copyright (C) 2001 Richard Hirst <rhirst with parisc-linux.org>
 *    Copyright (C) 2001-2002 Ryan Bradetich <rbrad at parisc-linux.org>
 *    Copyright (C) 2001-2007 Helge Deller <deller at parisc-linux.org>
 *    Copyright (C) 2000-2001 Thomas Bogendoerfer <tsbogend at parisc-linux.org>
 *    Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org>
 *    Copyright (C) 2005-2006 Kyle McMartin <kyle at parisc-linux.org>
 *
 *    This program is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#undef ENTRY_SAME
#undef ENTRY_DIFF
#undef ENTRY_UHOH
#undef ENTRY_COMP
#undef ENTRY_OURS
#if defined(CONFIG_64BIT) && !defined(SYSCALL_TABLE_64BIT)
/* Use ENTRY_SAME for 32-bit syscalls which are the same on wide and
 * narrow palinux.  Use ENTRY_DIFF for those where a 32-bit specific
 * implementation is required on wide palinux.  Use ENTRY_COMP where
 * the compatability layer has a useful 32-bit implementation.
 */
#define ENTRY_SAME(_name_) .dword sys_##_name_
#define ENTRY_DIFF(_name_) .dword sys32_##_name_
#define ENTRY_UHOH(_name_) .dword sys32_##unimplemented
#define ENTRY_OURS(_name_) .dword parisc_##_name_
#define ENTRY_COMP(_name_) .dword compat_sys_##_name_
#elif defined(CONFIG_64BIT) && defined(SYSCALL_TABLE_64BIT)
#define ENTRY_SAME(_name_) .dword sys_##_name_
#define ENTRY_DIFF(_name_) .dword sys_##_name_
#define ENTRY_UHOH(_name_) .dword sys_##_name_
#define ENTRY_OURS(_name_) .dword sys_##_name_
#define ENTRY_COMP(_name_) .dword sys_##_name_
#else
#define ENTRY_SAME(_name_) .word sys_##_name_
#define ENTRY_DIFF(_name_) .word sys_##_name_
#define ENTRY_UHOH(_name_) .word sys_##_name_
#define ENTRY_OURS(_name_) .word parisc_##_name_
#define ENTRY_COMP(_name_) .word sys_##_name_
#endif

	ENTRY_SAME(restart_syscall)	/* 0 */
	ENTRY_SAME(exit)
	ENTRY_SAME(fork_wrapper)
	ENTRY_SAME(read)
	ENTRY_SAME(write)
	ENTRY_SAME(open)		/* 5 */
	ENTRY_SAME(close)
	ENTRY_SAME(waitpid)
	ENTRY_SAME(creat)
	ENTRY_SAME(link)
	ENTRY_SAME(unlink)		/* 10 */
	ENTRY_DIFF(execve_wrapper)
	ENTRY_SAME(chdir)
	/* See comments in kernel/time.c!!! Maybe we don't need this? */
	ENTRY_COMP(time)
	ENTRY_SAME(mknod)
	ENTRY_SAME(chmod)		/* 15 */
	ENTRY_SAME(lchown)
	ENTRY_SAME(socket)
	/* struct stat is MAYBE identical wide and narrow ?? */
	ENTRY_COMP(newstat)
	ENTRY_DIFF(lseek)
	ENTRY_SAME(getpid)		/* 20 */
	/* the 'void * data' parameter may need re-packing in wide */
	ENTRY_COMP(mount)
	/* concerned about struct sockaddr in wide/narrow */
	/* ---> I think sockaddr is OK unless the compiler packs the struct */
	/*      differently to align the char array */
	ENTRY_SAME(bind)
	ENTRY_SAME(setuid)
	ENTRY_SAME(getuid)
	ENTRY_COMP(stime)		/* 25 */
	ENTRY_SAME(ptrace)
	ENTRY_SAME(alarm)
	/* see stat comment */
	ENTRY_COMP(newfstat)
	ENTRY_SAME(pause)
	/* struct utimbuf uses time_t which might vary */
	ENTRY_COMP(utime)		/* 30 */
	/* struct sockaddr... */
	ENTRY_SAME(connect)
	ENTRY_SAME(listen)
	ENTRY_SAME(access)
	ENTRY_SAME(nice)
	/* struct sockaddr... */
	ENTRY_SAME(accept)		/* 35 */
	ENTRY_SAME(sync)
	ENTRY_SAME(kill)
	ENTRY_SAME(rename)
	ENTRY_SAME(mkdir)
	ENTRY_SAME(rmdir)		/* 40 */
	ENTRY_SAME(dup)
	ENTRY_SAME(pipe)
	ENTRY_COMP(times)
	/* struct sockaddr... */
	ENTRY_SAME(getsockname)
	/* it seems possible brk() could return a >4G pointer... */
	ENTRY_SAME(brk)			/* 45 */
	ENTRY_SAME(setgid)
	ENTRY_SAME(getgid)
	ENTRY_SAME(signal)
	ENTRY_SAME(geteuid)
	ENTRY_SAME(getegid)		/* 50 */
	ENTRY_SAME(acct)
	ENTRY_SAME(umount)
	/* struct sockaddr... */
	ENTRY_SAME(getpeername)
	ENTRY_COMP(ioctl)
	ENTRY_COMP(fcntl)		/* 55 */
	ENTRY_SAME(socketpair)
	ENTRY_SAME(setpgid)
	ENTRY_SAME(send)
	ENTRY_OURS(newuname)
	ENTRY_SAME(umask)		/* 60 */
	ENTRY_SAME(chroot)
	ENTRY_SAME(ustat)
	ENTRY_SAME(dup2)
	ENTRY_SAME(getppid)
	ENTRY_SAME(getpgrp)		/* 65 */
	ENTRY_SAME(setsid)
	ENTRY_SAME(pivot_root)
	/* I don't like this */
	ENTRY_UHOH(sgetmask)
	ENTRY_UHOH(ssetmask)
	ENTRY_SAME(setreuid)		/* 70 */
	ENTRY_SAME(setregid)
	ENTRY_SAME(mincore)
	ENTRY_COMP(sigpending)
	ENTRY_SAME(sethostname)
	/* Following 3 have linux-common-code structs containing longs -( */
	ENTRY_COMP(setrlimit)		/* 75 */
	ENTRY_COMP(getrlimit)
	ENTRY_COMP(getrusage)
	/* struct timeval and timezone are maybe?? consistent wide and narrow */
	ENTRY_DIFF(gettimeofday)
	ENTRY_DIFF(settimeofday)
	ENTRY_SAME(getgroups)		/* 80 */
	ENTRY_SAME(setgroups)
	/* struct socketaddr... */
	ENTRY_SAME(sendto)
	ENTRY_SAME(symlink)
	/* see stat comment */
	ENTRY_COMP(newlstat)
	ENTRY_SAME(readlink)		/* 85 */
	ENTRY_SAME(ni_syscall)	/* was uselib */
	ENTRY_SAME(swapon)
	ENTRY_SAME(reboot)
	ENTRY_SAME(mmap2)
	ENTRY_SAME(mmap)		/* 90 */
	ENTRY_SAME(munmap)
	ENTRY_SAME(truncate)
	ENTRY_SAME(ftruncate)
	ENTRY_SAME(fchmod)
	ENTRY_SAME(fchown)		/* 95 */
	ENTRY_SAME(getpriority)
	ENTRY_SAME(setpriority)
	ENTRY_SAME(recv)
	ENTRY_COMP(statfs)
	ENTRY_COMP(fstatfs)		/* 100 */
	ENTRY_SAME(stat64)
	ENTRY_SAME(ni_syscall)	/* was socketcall */
	ENTRY_SAME(syslog)
	/* even though manpage says struct timeval contains longs, ours has
	 * time_t and suseconds_t -- both of which are safe wide/narrow */
	ENTRY_COMP(setitimer)
	ENTRY_COMP(getitimer)		/* 105 */
	ENTRY_SAME(capget)
	ENTRY_SAME(capset)
	ENTRY_OURS(pread64)
	ENTRY_OURS(pwrite64)
	ENTRY_SAME(getcwd)		/* 110 */
	ENTRY_SAME(vhangup)
	ENTRY_SAME(fstat64)
	ENTRY_SAME(vfork_wrapper)
	/* struct rusage contains longs... */
	ENTRY_COMP(wait4)
	ENTRY_SAME(swapoff)		/* 115 */
	ENTRY_COMP(sysinfo)
	ENTRY_SAME(shutdown)
	ENTRY_SAME(fsync)
	ENTRY_SAME(madvise)
	ENTRY_SAME(clone_wrapper)	/* 120 */
	ENTRY_SAME(setdomainname)
	ENTRY_DIFF(sendfile)
	/* struct sockaddr... */
	ENTRY_SAME(recvfrom)
	/* struct timex contains longs */
	ENTRY_COMP(adjtimex)
	ENTRY_SAME(mprotect)		/* 125 */
	/* old_sigset_t forced to 32 bits.  Beware glibc sigset_t */
	ENTRY_COMP(sigprocmask)
	ENTRY_SAME(ni_syscall)	/* create_module */
	ENTRY_SAME(init_module)
	ENTRY_SAME(delete_module)
	ENTRY_SAME(ni_syscall)		/* 130: get_kernel_syms */
	/* time_t inside struct dqblk */
	ENTRY_SAME(quotactl)
	ENTRY_SAME(getpgid)
	ENTRY_SAME(fchdir)
	ENTRY_SAME(bdflush)
	ENTRY_SAME(sysfs)		/* 135 */
	ENTRY_OURS(personality)
	ENTRY_SAME(ni_syscall)	/* for afs_syscall */
	ENTRY_SAME(setfsuid)
	ENTRY_SAME(setfsgid)
	/* I think this might work */
	ENTRY_SAME(llseek)		/* 140 */
	/* struct linux_dirent has longs, like 'unsigned long d_ino' which
	 * almost definitely should be 'ino_t d_ino' but it's too late now */
	ENTRY_DIFF(getdents)
	/* it is POSSIBLE that select will be OK because even though fd_set
	 * contains longs, the macros and sizes are clever. */
	ENTRY_COMP(select)
	ENTRY_SAME(flock)
	ENTRY_SAME(msync)
	/* struct iovec contains pointers */
	ENTRY_COMP(readv)		/* 145 */
	ENTRY_COMP(writev)
	ENTRY_SAME(getsid)
	ENTRY_SAME(fdatasync)
	/* struct __sysctl_args is a mess */
	ENTRY_DIFF(sysctl)
	ENTRY_SAME(mlock)		/* 150 */
	ENTRY_SAME(munlock)
	ENTRY_SAME(mlockall)
	ENTRY_SAME(munlockall)
	/* struct sched_param is ok for now */
	ENTRY_SAME(sched_setparam)
	ENTRY_SAME(sched_getparam)	/* 155 */
	ENTRY_SAME(sched_setscheduler)
	ENTRY_SAME(sched_getscheduler)
	ENTRY_SAME(sched_yield)
	ENTRY_SAME(sched_get_priority_max)
	ENTRY_SAME(sched_get_priority_min)	/* 160 */
	/* These 2 would've worked if someone had defined struct timespec
	 * carefully, like timeval for example (which is about the same).
	 * Unfortunately it contains a long :-( */
	ENTRY_DIFF(sched_rr_get_interval)
	ENTRY_COMP(nanosleep)
	ENTRY_SAME(mremap)
	ENTRY_SAME(setresuid)
	ENTRY_SAME(getresuid)		/* 165 */
	ENTRY_DIFF(sigaltstack_wrapper)
	ENTRY_SAME(ni_syscall)		/* query_module */
	ENTRY_SAME(poll)
	/* structs contain pointers and an in_addr... */
	ENTRY_COMP(nfsservctl)
	ENTRY_SAME(setresgid)		/* 170 */
	ENTRY_SAME(getresgid)
	ENTRY_SAME(prctl)
	/* signals need a careful review */
	ENTRY_SAME(rt_sigreturn_wrapper)
	ENTRY_DIFF(rt_sigaction)
	ENTRY_DIFF(rt_sigprocmask)	/* 175 */
	ENTRY_DIFF(rt_sigpending)
	ENTRY_COMP(rt_sigtimedwait)
	/* even though the struct siginfo_t is different, it appears like
	 * all the paths use values which should be same wide and narrow.
	 * Also the struct is padded to 128 bytes which means we don't have
	 * to worry about faulting trying to copy in a larger 64-bit
	 * struct from a 32-bit user-space app.
	 */
	ENTRY_COMP(rt_sigqueueinfo)
	ENTRY_COMP(rt_sigsuspend)
	ENTRY_SAME(chown)		/* 180 */
	/* setsockopt() used by iptables: SO_SET_REPLACE/SO_SET_ADD_COUNTERS */
	ENTRY_COMP(setsockopt)
	ENTRY_COMP(getsockopt)
	ENTRY_COMP(sendmsg)
	ENTRY_COMP(recvmsg)
	ENTRY_SAME(semop)		/* 185 */
	ENTRY_SAME(semget)
	ENTRY_DIFF(semctl)
	ENTRY_DIFF(msgsnd)
	ENTRY_DIFF(msgrcv)
	ENTRY_SAME(msgget)		/* 190 */
	ENTRY_SAME(msgctl)
	ENTRY_SAME(shmat)
	ENTRY_SAME(shmdt)
	ENTRY_SAME(shmget)
	ENTRY_SAME(shmctl)		/* 195 */
	ENTRY_SAME(ni_syscall)		/* streams1 */
	ENTRY_SAME(ni_syscall)		/* streams2 */
	ENTRY_SAME(lstat64)
	ENTRY_OURS(truncate64)
	ENTRY_OURS(ftruncate64)		/* 200 */
	ENTRY_SAME(getdents64)
	ENTRY_COMP(fcntl64)
	ENTRY_SAME(ni_syscall)	/* attrctl -- dead */
	ENTRY_SAME(ni_syscall)	/* acl_get -- dead */
	ENTRY_SAME(ni_syscall)		/* 205 (acl_set -- dead) */
	ENTRY_SAME(gettid)
	ENTRY_OURS(readahead)
	ENTRY_SAME(tkill)
	ENTRY_SAME(sendfile64)
	ENTRY_COMP(futex)		/* 210 */
	ENTRY_COMP(sched_setaffinity)
	ENTRY_COMP(sched_getaffinity)
	ENTRY_SAME(ni_syscall)	/* set_thread_area */
	ENTRY_SAME(ni_syscall)	/* get_thread_area */
	ENTRY_SAME(io_setup)		/* 215 */
	ENTRY_SAME(io_destroy)
	ENTRY_SAME(io_getevents)
	ENTRY_SAME(io_submit)
	ENTRY_SAME(io_cancel)
	ENTRY_SAME(alloc_hugepages)	/* 220 */
	ENTRY_SAME(free_hugepages)
	ENTRY_SAME(exit_group)
	ENTRY_DIFF(lookup_dcookie)
	ENTRY_SAME(epoll_create)
	ENTRY_SAME(epoll_ctl)		/* 225 */
	ENTRY_SAME(epoll_wait)
 	ENTRY_SAME(remap_file_pages)
	ENTRY_SAME(semtimedop)
	ENTRY_SAME(mq_open)
	ENTRY_SAME(mq_unlink)		/* 230 */
	ENTRY_SAME(mq_timedsend)
	ENTRY_SAME(mq_timedreceive)
	ENTRY_SAME(mq_notify)
	ENTRY_SAME(mq_getsetattr)
	ENTRY_COMP(waitid)		/* 235 */
	ENTRY_OURS(fadvise64_64)
	ENTRY_SAME(set_tid_address)
	ENTRY_SAME(setxattr)
	ENTRY_SAME(lsetxattr)
	ENTRY_SAME(fsetxattr)		/* 240 */
	ENTRY_SAME(getxattr)
	ENTRY_SAME(lgetxattr)
	ENTRY_SAME(fgetxattr)
	ENTRY_SAME(listxattr)
	ENTRY_SAME(llistxattr)		/* 245 */
	ENTRY_SAME(flistxattr)
	ENTRY_SAME(removexattr)
	ENTRY_SAME(lremovexattr)
	ENTRY_SAME(fremovexattr)
	ENTRY_COMP(timer_create)	/* 250 */
	ENTRY_COMP(timer_settime)
	ENTRY_COMP(timer_gettime)
	ENTRY_SAME(timer_getoverrun)
	ENTRY_SAME(timer_delete)
	ENTRY_COMP(clock_settime)	/* 255 */
	ENTRY_COMP(clock_gettime)
	ENTRY_COMP(clock_getres)
	ENTRY_COMP(clock_nanosleep)
	ENTRY_SAME(tgkill)
	ENTRY_COMP(mbind)		/* 260 */
	ENTRY_COMP(get_mempolicy)
	ENTRY_COMP(set_mempolicy)
	ENTRY_SAME(ni_syscall)	/* 263: reserved for vserver */
	ENTRY_SAME(add_key)
	ENTRY_SAME(request_key)		/* 265 */
	ENTRY_SAME(keyctl)
	ENTRY_SAME(ioprio_set)
	ENTRY_SAME(ioprio_get)
	ENTRY_SAME(inotify_init)
	ENTRY_SAME(inotify_add_watch)	/* 270 */
	ENTRY_SAME(inotify_rm_watch)
	ENTRY_SAME(migrate_pages)
	ENTRY_COMP(pselect6)
	ENTRY_COMP(ppoll)
	ENTRY_COMP(openat)		/* 275 */
	ENTRY_SAME(mkdirat)
	ENTRY_SAME(mknodat)
	ENTRY_SAME(fchownat)
	ENTRY_COMP(futimesat)
	ENTRY_SAME(fstatat64)		/* 280 */
	ENTRY_SAME(unlinkat)
	ENTRY_SAME(renameat)
	ENTRY_SAME(linkat)
	ENTRY_SAME(symlinkat)
	ENTRY_SAME(readlinkat)		/* 285 */
	ENTRY_SAME(fchmodat)
	ENTRY_SAME(faccessat)
	ENTRY_SAME(unshare)
	ENTRY_COMP(set_robust_list)
	ENTRY_COMP(get_robust_list)	/* 290 */
	ENTRY_SAME(splice)
	ENTRY_OURS(sync_file_range)
	ENTRY_SAME(tee)
	ENTRY_COMP(vmsplice)
	ENTRY_COMP(move_pages)		/* 295 */
	ENTRY_SAME(getcpu)
	ENTRY_SAME(epoll_pwait)
	ENTRY_COMP(statfs64)
	ENTRY_COMP(fstatfs64)
	/* Nothing yet */

