From patchwork Wed Nov 21 04:14:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Firoz Khan X-Patchwork-Id: 10691923 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B2F195A4 for ; Wed, 21 Nov 2018 04:15:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 98C09294F7 for ; Wed, 21 Nov 2018 04:15:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 888812B332; Wed, 21 Nov 2018 04:15:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9FD3A294F7 for ; Wed, 21 Nov 2018 04:15:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727701AbeKUOsH (ORCPT ); Wed, 21 Nov 2018 09:48:07 -0500 Received: from mail-pl1-f195.google.com ([209.85.214.195]:35750 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727723AbeKUOsG (ORCPT ); Wed, 21 Nov 2018 09:48:06 -0500 Received: by mail-pl1-f195.google.com with SMTP id v1-v6so3511497plo.2 for ; Tue, 20 Nov 2018 20:15:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=4AeL83+pLQ3qcsD3hWRmdCxc5Kst2CGdi+1ANtIielc=; b=aEoTuWFCHQljfNBCVT3g6aJXt5gww3ul4A5Sn3zUsu9KzzJ3Q3iSo8MkWxSDcd4ZkG 3aQVdHO2fEZhQbU4MsRYpJCUSGSHQ0wJ5i7rW+/RBCPEQZfQZVOTlV22KeaoSPQyUJKB XhqddUga652dIKerd9T9gcDTCsmXZjZ7d/NMw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=4AeL83+pLQ3qcsD3hWRmdCxc5Kst2CGdi+1ANtIielc=; b=U5DAHddxXRc6c5atNYRLEb4pYnTCa6oxg4s0T5paq8Hz0bXeK+4FvOcppTfFCvBq8O aOehHcO+cZ73yzpo4tiUHuUFgJlQRj+6qKs0/7t4vXFX1pWpcIbMqvP+a4wJrtHeB4Rf WANzX6pZwpaEcsRPxX4mEAqljK7TgLiie8saA/+zBnM5AWlXS4pCT+vhCbOjjwyVYG8T Tw63ZJp1JElR73+Y3UaT92/QnwO6O1caRiKiB95PLiFb5vmEknxv6ovg6TbGAtu/TcEM xjG6EpIeFc+doOtcfPaRVHO5lcSll8Je8ZbzmpgRPQkYij5FXksNuG6DwlJ33DN30eW5 P3Ng== X-Gm-Message-State: AA+aEWZYES3W8iIHRaYKLLKbcNuGfvycEQeNb12FPIkOsg9/jtGnnMGe FnYCwMQMX1QoSTgGswqqNWWdSdnO0NQ= X-Google-Smtp-Source: AFSGD/U5upH66wV1jUYeI5Re7BUxORMHvfde0fEHlc0CIfH8E8yr1gYhiqhyAVOcE61t4f0D6pmOGA== X-Received: by 2002:a65:520a:: with SMTP id o10mr4698566pgp.276.1542773723439; Tue, 20 Nov 2018 20:15:23 -0800 (PST) Received: from qualcomm-HP-ZBook-14-G2.qualcomm.com (blr-bdr-fw-01_globalnat_allzones-outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id v124-v6sm10818712pfb.182.2018.11.20.20.15.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 20 Nov 2018 20:15:22 -0800 (PST) From: Firoz Khan To: linux-parisc@vger.kernel.org, "James E . J . Bottomley" , Helge Deller , Geert Uytterhoeven , Thomas Gleixner , Greg Kroah-Hartman , Philippe Ombredanne , Kate Stewart Cc: y2038@lists.linaro.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, arnd@arndb.de, deepa.kernel@gmail.com, marcin.juszkiewicz@linaro.org, firoz.khan@linaro.org Subject: [PATCH v8 5/6] parisc: generate uapi header and system call table files Date: Wed, 21 Nov 2018 09:44:29 +0530 Message-Id: <1542773670-25460-6-git-send-email-firoz.khan@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1542773670-25460-1-git-send-email-firoz.khan@linaro.org> References: <1542773670-25460-1-git-send-email-firoz.khan@linaro.org> Sender: linux-parisc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP System call table generation script must be run to gener- ate unistd_32/64.h and syscall_table_32/64/c32.h files. This patch will have changes which will invokes the script. This patch will generate unistd_32/64.h and syscall_table- _32/64/c32.h files by the syscall table generation script invoked by parisc/Makefile and the generated files against the removed files must be identical. The generated uapi header file will be included in uapi/- asm/unistd.h and generated system call table header file will be included by kernel/syscall.S file. Signed-off-by: Firoz Khan Acked-by: Helge Deller --- arch/parisc/Makefile | 3 + arch/parisc/include/asm/Kbuild | 3 + arch/parisc/include/uapi/asm/Kbuild | 2 + arch/parisc/include/uapi/asm/unistd.h | 369 +-------------------------- arch/parisc/kernel/syscall.S | 11 +- arch/parisc/kernel/syscall_table.S | 459 ---------------------------------- 6 files changed, 20 insertions(+), 827 deletions(-) delete mode 100644 arch/parisc/kernel/syscall_table.S diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index d047a09..1c4ea91 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile @@ -156,3 +156,6 @@ define archhelp @echo ' copy to $$(INSTALL_PATH)' @echo ' zinstall - Install compressed vmlinuz kernel' endef + +archheaders: + $(Q)$(MAKE) $(build)=arch/parisc/kernel/syscalls all diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild index 2013d63..0b1e354 100644 --- a/arch/parisc/include/asm/Kbuild +++ b/arch/parisc/include/asm/Kbuild @@ -1,3 +1,6 @@ +generated-y += syscall_table_32.h +generated-y += syscall_table_64.h +generated-y += syscall_table_c32.h generic-y += barrier.h generic-y += current.h generic-y += device.h diff --git a/arch/parisc/include/uapi/asm/Kbuild b/arch/parisc/include/uapi/asm/Kbuild index adb5c64..d31b426 100644 --- a/arch/parisc/include/uapi/asm/Kbuild +++ b/arch/parisc/include/uapi/asm/Kbuild @@ -1,6 +1,8 @@ # UAPI Header export list include include/uapi/asm-generic/Kbuild.asm +generated-y += unistd_32.h +generated-y += unistd_64.h generic-y += auxvec.h generic-y += bpf_perf_event.h generic-y += kvm_para.h diff --git a/arch/parisc/include/uapi/asm/unistd.h b/arch/parisc/include/uapi/asm/unistd.h index 63e9aae..98dc953 100644 --- a/arch/parisc/include/uapi/asm/unistd.h +++ b/arch/parisc/include/uapi/asm/unistd.h @@ -2,371 +2,10 @@ #ifndef _UAPI_ASM_PARISC_UNISTD_H_ #define _UAPI_ASM_PARISC_UNISTD_H_ -/* - * Linux system call numbers. - * - * Cary Coutant says that we should just use another syscall gateway - * page to avoid clashing with the HPUX space, and I think he's right: - * it will would keep a branch out of our syscall entry path, at the - * very least. If we decide to change it later, we can ``just'' tweak - * the LINUX_GATEWAY_ADDR define at the bottom and make __NR_Linux be - * 1024 or something. Oh, and recompile libc. =) - */ - -#define __NR_restart_syscall 0 -#define __NR_exit 1 -#define __NR_fork 2 -#define __NR_read 3 -#define __NR_write 4 -#define __NR_open 5 -#define __NR_close 6 -#define __NR_waitpid 7 -#define __NR_creat 8 -#define __NR_link 9 -#define __NR_unlink 10 -#define __NR_execve 11 -#define __NR_chdir 12 -#define __NR_time 13 -#define __NR_mknod 14 -#define __NR_chmod 15 -#define __NR_lchown 16 -#define __NR_socket 17 -#define __NR_stat 18 -#define __NR_lseek 19 -#define __NR_getpid 20 -#define __NR_mount 21 -#define __NR_bind 22 -#define __NR_setuid 23 -#define __NR_getuid 24 -#define __NR_stime 25 -#define __NR_ptrace 26 -#define __NR_alarm 27 -#define __NR_fstat 28 -#define __NR_pause 29 -#define __NR_utime 30 -#define __NR_connect 31 -#define __NR_listen 32 -#define __NR_access 33 -#define __NR_nice 34 -#define __NR_accept 35 -#define __NR_sync 36 -#define __NR_kill 37 -#define __NR_rename 38 -#define __NR_mkdir 39 -#define __NR_rmdir 40 -#define __NR_dup 41 -#define __NR_pipe 42 -#define __NR_times 43 -#define __NR_getsockname 44 -#define __NR_brk 45 -#define __NR_setgid 46 -#define __NR_getgid 47 -#define __NR_signal 48 -#define __NR_geteuid 49 -#define __NR_getegid 50 -#define __NR_acct 51 -#define __NR_umount2 52 -#define __NR_getpeername 53 -#define __NR_ioctl 54 -#define __NR_fcntl 55 -#define __NR_socketpair 56 -#define __NR_setpgid 57 -#define __NR_send 58 -#define __NR_uname 59 -#define __NR_umask 60 -#define __NR_chroot 61 -#define __NR_ustat 62 -#define __NR_dup2 63 -#define __NR_getppid 64 -#define __NR_getpgrp 65 -#define __NR_setsid 66 -#define __NR_pivot_root 67 -#define __NR_sgetmask 68 -#define __NR_ssetmask 69 -#define __NR_setreuid 70 -#define __NR_setregid 71 -#define __NR_mincore 72 -#define __NR_sigpending 73 -#define __NR_sethostname 74 -#define __NR_setrlimit 75 -#define __NR_getrlimit 76 -#define __NR_getrusage 77 -#define __NR_gettimeofday 78 -#define __NR_settimeofday 79 -#define __NR_getgroups 80 -#define __NR_setgroups 81 -#define __NR_sendto 82 -#define __NR_symlink 83 -#define __NR_lstat 84 -#define __NR_readlink 85 -#define __NR_uselib 86 -#define __NR_swapon 87 -#define __NR_reboot 88 -#define __NR_mmap2 89 -#define __NR_mmap 90 -#define __NR_munmap 91 -#define __NR_truncate 92 -#define __NR_ftruncate 93 -#define __NR_fchmod 94 -#define __NR_fchown 95 -#define __NR_getpriority 96 -#define __NR_setpriority 97 -#define __NR_recv 98 -#define __NR_statfs 99 -#define __NR_fstatfs 100 -#define __NR_stat64 101 -/* #define __NR_socketcall 102 */ -#define __NR_syslog 103 -#define __NR_setitimer 104 -#define __NR_getitimer 105 -#define __NR_capget 106 -#define __NR_capset 107 -#define __NR_pread64 108 -#define __NR_pwrite64 109 -#define __NR_getcwd 110 -#define __NR_vhangup 111 -#define __NR_fstat64 112 -#define __NR_vfork 113 -#define __NR_wait4 114 -#define __NR_swapoff 115 -#define __NR_sysinfo 116 -#define __NR_shutdown 117 -#define __NR_fsync 118 -#define __NR_madvise 119 -#define __NR_clone 120 -#define __NR_setdomainname 121 -#define __NR_sendfile 122 -#define __NR_recvfrom 123 -#define __NR_adjtimex 124 -#define __NR_mprotect 125 -#define __NR_sigprocmask 126 -#define __NR_create_module 127 /* not used */ -#define __NR_init_module 128 -#define __NR_delete_module 129 -#define __NR_get_kernel_syms 130 /* not used */ -#define __NR_quotactl 131 -#define __NR_getpgid 132 -#define __NR_fchdir 133 -#define __NR_bdflush 134 -#define __NR_sysfs 135 -#define __NR_personality 136 -#define __NR_afs_syscall 137 /* not used */ -#define __NR_setfsuid 138 -#define __NR_setfsgid 139 -#define __NR__llseek 140 -#define __NR_getdents 141 -#define __NR__newselect 142 -#define __NR_flock 143 -#define __NR_msync 144 -#define __NR_readv 145 -#define __NR_writev 146 -#define __NR_getsid 147 -#define __NR_fdatasync 148 -#define __NR__sysctl 149 -#define __NR_mlock 150 -#define __NR_munlock 151 -#define __NR_mlockall 152 -#define __NR_munlockall 153 -#define __NR_sched_setparam 154 -#define __NR_sched_getparam 155 -#define __NR_sched_setscheduler 156 -#define __NR_sched_getscheduler 157 -#define __NR_sched_yield 158 -#define __NR_sched_get_priority_max 159 -#define __NR_sched_get_priority_min 160 -#define __NR_sched_rr_get_interval 161 -#define __NR_nanosleep 162 -#define __NR_mremap 163 -#define __NR_setresuid 164 -#define __NR_getresuid 165 -#define __NR_sigaltstack 166 -#define __NR_query_module 167 /* not used */ -#define __NR_poll 168 -#define __NR_nfsservctl 169 /* not used */ -#define __NR_setresgid 170 -#define __NR_getresgid 171 -#define __NR_prctl 172 -#define __NR_rt_sigreturn 173 -#define __NR_rt_sigaction 174 -#define __NR_rt_sigprocmask 175 -#define __NR_rt_sigpending 176 -#define __NR_rt_sigtimedwait 177 -#define __NR_rt_sigqueueinfo 178 -#define __NR_rt_sigsuspend 179 -#define __NR_chown 180 -#define __NR_setsockopt 181 -#define __NR_getsockopt 182 -#define __NR_sendmsg 183 -#define __NR_recvmsg 184 -#define __NR_semop 185 -#define __NR_semget 186 -#define __NR_semctl 187 -#define __NR_msgsnd 188 -#define __NR_msgrcv 189 -#define __NR_msgget 190 -#define __NR_msgctl 191 -#define __NR_shmat 192 -#define __NR_shmdt 193 -#define __NR_shmget 194 -#define __NR_shmctl 195 -#define __NR_getpmsg 196 /* not used */ -#define __NR_putpmsg 197 /* not used */ -#define __NR_lstat64 198 -#define __NR_truncate64 199 -#define __NR_ftruncate64 200 -#define __NR_getdents64 201 -#define __NR_fcntl64 202 -#define __NR_attrctl 203 /* not used */ -#define __NR_acl_get 204 /* not used */ -#define __NR_acl_set 205 /* not used */ -#define __NR_gettid 206 -#define __NR_readahead 207 -#define __NR_tkill 208 -#define __NR_sendfile64 209 -#define __NR_futex 210 -#define __NR_sched_setaffinity 211 -#define __NR_sched_getaffinity 212 -#define __NR_set_thread_area 213 /* not used */ -#define __NR_get_thread_area 214 /* not used */ -#define __NR_io_setup 215 -#define __NR_io_destroy 216 -#define __NR_io_getevents 217 -#define __NR_io_submit 218 -#define __NR_io_cancel 219 -#define __NR_alloc_hugepages 220 /* not used */ -#define __NR_free_hugepages 221 /* not used */ -#define __NR_exit_group 222 -#define __NR_lookup_dcookie 223 -#define __NR_epoll_create 224 -#define __NR_epoll_ctl 225 -#define __NR_epoll_wait 226 -#define __NR_remap_file_pages 227 -#define __NR_semtimedop 228 -#define __NR_mq_open 229 -#define __NR_mq_unlink 230 -#define __NR_mq_timedsend 231 -#define __NR_mq_timedreceive 232 -#define __NR_mq_notify 233 -#define __NR_mq_getsetattr 234 -#define __NR_waitid 235 -#define __NR_fadvise64_64 236 -#define __NR_set_tid_address 237 -#define __NR_setxattr 238 -#define __NR_lsetxattr 239 -#define __NR_fsetxattr 240 -#define __NR_getxattr 241 -#define __NR_lgetxattr 242 -#define __NR_fgetxattr 243 -#define __NR_listxattr 244 -#define __NR_llistxattr 245 -#define __NR_flistxattr 246 -#define __NR_removexattr 247 -#define __NR_lremovexattr 248 -#define __NR_fremovexattr 249 -#define __NR_timer_create 250 -#define __NR_timer_settime 251 -#define __NR_timer_gettime 252 -#define __NR_timer_getoverrun 253 -#define __NR_timer_delete 254 -#define __NR_clock_settime 255 -#define __NR_clock_gettime 256 -#define __NR_clock_getres 257 -#define __NR_clock_nanosleep 258 -#define __NR_tgkill 259 -#define __NR_mbind 260 -#define __NR_get_mempolicy 261 -#define __NR_set_mempolicy 262 -#define __NR_vserver 263 /* not used */ -#define __NR_add_key 264 -#define __NR_request_key 265 -#define __NR_keyctl 266 -#define __NR_ioprio_set 267 -#define __NR_ioprio_get 268 -#define __NR_inotify_init 269 -#define __NR_inotify_add_watch 270 -#define __NR_inotify_rm_watch 271 -#define __NR_migrate_pages 272 -#define __NR_pselect6 273 -#define __NR_ppoll 274 -#define __NR_openat 275 -#define __NR_mkdirat 276 -#define __NR_mknodat 277 -#define __NR_fchownat 278 -#define __NR_futimesat 279 -#define __NR_fstatat64 280 -#define __NR_unlinkat 281 -#define __NR_renameat 282 -#define __NR_linkat 283 -#define __NR_symlinkat 284 -#define __NR_readlinkat 285 -#define __NR_fchmodat 286 -#define __NR_faccessat 287 -#define __NR_unshare 288 -#define __NR_set_robust_list 289 -#define __NR_get_robust_list 290 -#define __NR_splice 291 -#define __NR_sync_file_range 292 -#define __NR_tee 293 -#define __NR_vmsplice 294 -#define __NR_move_pages 295 -#define __NR_getcpu 296 -#define __NR_epoll_pwait 297 -#define __NR_statfs64 298 -#define __NR_fstatfs64 299 -#define __NR_kexec_load 300 -#define __NR_utimensat 301 -#define __NR_signalfd 302 -#define __NR_timerfd 303 /* not used */ -#define __NR_eventfd 304 -#define __NR_fallocate 305 -#define __NR_timerfd_create 306 -#define __NR_timerfd_settime 307 -#define __NR_timerfd_gettime 308 -#define __NR_signalfd4 309 -#define __NR_eventfd2 310 -#define __NR_epoll_create1 311 -#define __NR_dup3 312 -#define __NR_pipe2 313 -#define __NR_inotify_init1 314 -#define __NR_preadv 315 -#define __NR_pwritev 316 -#define __NR_rt_tgsigqueueinfo 317 -#define __NR_perf_event_open 318 -#define __NR_recvmmsg 319 -#define __NR_accept4 320 -#define __NR_prlimit64 321 -#define __NR_fanotify_init 322 -#define __NR_fanotify_mark 323 -#define __NR_clock_adjtime 324 -#define __NR_name_to_handle_at 325 -#define __NR_open_by_handle_at 326 -#define __NR_syncfs 327 -#define __NR_setns 328 -#define __NR_sendmmsg 329 -#define __NR_process_vm_readv 330 -#define __NR_process_vm_writev 331 -#define __NR_kcmp 332 -#define __NR_finit_module 333 -#define __NR_sched_setattr 334 -#define __NR_sched_getattr 335 -#define __NR_utimes 336 -#define __NR_renameat2 337 -#define __NR_seccomp 338 -#define __NR_getrandom 339 -#define __NR_memfd_create 340 -#define __NR_bpf 341 -#define __NR_execveat 342 -#define __NR_membarrier 343 -#define __NR_userfaultfd 344 -#define __NR_mlock2 345 -#define __NR_copy_file_range 346 -#define __NR_preadv2 347 -#define __NR_pwritev2 348 -#define __NR_statx 349 -#define __NR_io_pgetevents 350 - -#ifdef __KERNEL__ -#define __NR_syscalls 351 +#ifdef __LP64__ +#include +#else +#include #endif #define LINUX_GATEWAY_ADDR 0x100 diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S index a9bc90d..4f77bd9 100644 --- a/arch/parisc/kernel/syscall.S +++ b/arch/parisc/kernel/syscall.S @@ -923,19 +923,24 @@ ENTRY(lws_table) END(lws_table) /* End of lws table */ +#define __SYSCALL(nr, entry, nargs) ASM_ULONG_INSN entry .align 8 ENTRY(sys_call_table) .export sys_call_table,data -#include "syscall_table.S" +#ifdef CONFIG_64BIT +#include /* Compat syscalls */ +#else +#include /* 32-bit native syscalls */ +#endif END(sys_call_table) #ifdef CONFIG_64BIT .align 8 ENTRY(sys_call_table64) -#define SYSCALL_TABLE_64BIT -#include "syscall_table.S" +#include /* 64-bit native syscalls */ END(sys_call_table64) #endif +#undef __SYSCALL /* All light-weight-syscall atomic operations diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S deleted file mode 100644 index fe3f2a4..0000000 --- a/arch/parisc/kernel/syscall_table.S +++ /dev/null @@ -1,459 +0,0 @@ -/* System Call Table - * - * Copyright (C) 1999-2004 Matthew Wilcox - * Copyright (C) 2000-2001 John Marvin - * Copyright (C) 2000 Alan Modra - * Copyright (C) 2000-2003 Paul Bame - * Copyright (C) 2000 Philipp Rumpf - * Copyright (C) 2000 Michael Ang - * Copyright (C) 2000 David Huggins-Daines - * Copyright (C) 2000 Grant Grundler - * Copyright (C) 2001 Richard Hirst - * Copyright (C) 2001-2002 Ryan Bradetich - * Copyright (C) 2001-2007 Helge Deller - * Copyright (C) 2000-2001 Thomas Bogendoerfer - * Copyright (C) 2002 Randolph Chung - * Copyright (C) 2005-2006 Kyle McMartin - * - * 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 - */ - -#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 compatibility 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 - -90: ENTRY_SAME(restart_syscall) /* 0 */ -91: ENTRY_SAME(exit) - ENTRY_SAME(fork_wrapper) - ENTRY_SAME(read) - ENTRY_SAME(write) - ENTRY_COMP(open) /* 5 */ - ENTRY_SAME(close) - ENTRY_SAME(waitpid) - ENTRY_SAME(creat) - ENTRY_SAME(link) - ENTRY_SAME(unlink) /* 10 */ - ENTRY_COMP(execve) - 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_COMP(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_COMP(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_SAME(newuname) - ENTRY_SAME(umask) /* 60 */ - ENTRY_SAME(chroot) - ENTRY_COMP(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_COMP(gettimeofday) - ENTRY_COMP(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_COMP(truncate) - ENTRY_COMP(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_COMP(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 */ - ENTRY_COMP(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_COMP(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 */ - ENTRY_COMP(sched_rr_get_interval) - ENTRY_COMP(nanosleep) - ENTRY_SAME(mremap) - ENTRY_SAME(setresuid) - ENTRY_SAME(getresuid) /* 165 */ - ENTRY_COMP(sigaltstack) - ENTRY_SAME(ni_syscall) /* query_module */ - ENTRY_SAME(poll) - /* structs contain pointers and an in_addr... */ - ENTRY_SAME(ni_syscall) /* was nfsservctl */ - ENTRY_SAME(setresgid) /* 170 */ - ENTRY_SAME(getresgid) - ENTRY_SAME(prctl) - /* signals need a careful review */ - ENTRY_SAME(rt_sigreturn_wrapper) - ENTRY_COMP(rt_sigaction) - ENTRY_COMP(rt_sigprocmask) /* 175 */ - ENTRY_COMP(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_COMP(semctl) - ENTRY_COMP(msgsnd) - ENTRY_COMP(msgrcv) - ENTRY_SAME(msgget) /* 190 */ - ENTRY_COMP(msgctl) - ENTRY_COMP(shmat) - ENTRY_SAME(shmdt) - ENTRY_SAME(shmget) - ENTRY_COMP(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_COMP(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_COMP(io_setup) /* 215 */ - ENTRY_SAME(io_destroy) - ENTRY_COMP(io_getevents) - ENTRY_COMP(io_submit) - ENTRY_SAME(io_cancel) - ENTRY_SAME(ni_syscall) /* 220: was alloc_hugepages */ - ENTRY_SAME(ni_syscall) /* was free_hugepages */ - ENTRY_SAME(exit_group) - ENTRY_COMP(lookup_dcookie) - ENTRY_SAME(epoll_create) - ENTRY_SAME(epoll_ctl) /* 225 */ - ENTRY_SAME(epoll_wait) - ENTRY_SAME(remap_file_pages) - ENTRY_COMP(semtimedop) - ENTRY_COMP(mq_open) - ENTRY_SAME(mq_unlink) /* 230 */ - ENTRY_COMP(mq_timedsend) - ENTRY_COMP(mq_timedreceive) - ENTRY_COMP(mq_notify) - ENTRY_COMP(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_COMP(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_COMP(epoll_pwait) - ENTRY_COMP(statfs64) - ENTRY_COMP(fstatfs64) - ENTRY_COMP(kexec_load) /* 300 */ - ENTRY_COMP(utimensat) - ENTRY_COMP(signalfd) - ENTRY_SAME(ni_syscall) /* was timerfd */ - ENTRY_SAME(eventfd) - ENTRY_OURS(fallocate) /* 305 */ - ENTRY_SAME(timerfd_create) - ENTRY_COMP(timerfd_settime) - ENTRY_COMP(timerfd_gettime) - ENTRY_COMP(signalfd4) - ENTRY_SAME(eventfd2) /* 310 */ - ENTRY_SAME(epoll_create1) - ENTRY_SAME(dup3) - ENTRY_SAME(pipe2) - ENTRY_SAME(inotify_init1) - ENTRY_COMP(preadv) /* 315 */ - ENTRY_COMP(pwritev) - ENTRY_COMP(rt_tgsigqueueinfo) - ENTRY_SAME(perf_event_open) - ENTRY_COMP(recvmmsg) - ENTRY_SAME(accept4) /* 320 */ - ENTRY_SAME(prlimit64) - ENTRY_SAME(fanotify_init) - ENTRY_DIFF(fanotify_mark) - ENTRY_COMP(clock_adjtime) - ENTRY_SAME(name_to_handle_at) /* 325 */ - ENTRY_COMP(open_by_handle_at) - ENTRY_SAME(syncfs) - ENTRY_SAME(setns) - ENTRY_COMP(sendmmsg) - ENTRY_COMP(process_vm_readv) /* 330 */ - ENTRY_COMP(process_vm_writev) - ENTRY_SAME(kcmp) - ENTRY_SAME(finit_module) - ENTRY_SAME(sched_setattr) - ENTRY_SAME(sched_getattr) /* 335 */ - ENTRY_COMP(utimes) - ENTRY_SAME(renameat2) - ENTRY_SAME(seccomp) - ENTRY_SAME(getrandom) - ENTRY_SAME(memfd_create) /* 340 */ - ENTRY_SAME(bpf) - ENTRY_COMP(execveat) - ENTRY_SAME(membarrier) - ENTRY_SAME(userfaultfd) - ENTRY_SAME(mlock2) /* 345 */ - ENTRY_SAME(copy_file_range) - ENTRY_COMP(preadv2) - ENTRY_COMP(pwritev2) - ENTRY_SAME(statx) - ENTRY_COMP(io_pgetevents) /* 350 */ - - -.ifne (. - 90b) - (__NR_Linux_syscalls * (91b - 90b)) -.error "size of syscall table does not fit value of __NR_Linux_syscalls" -.endif - -#undef ENTRY_SAME -#undef ENTRY_DIFF -#undef ENTRY_UHOH -#undef ENTRY_COMP -#undef ENTRY_OURS