Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf tools: Generate mips syscalls_n64.c syscall table

Grab a copy of arch/mips/kernel/syscalls/syscall_n64.tbl and use it to
generate tools/perf/arch/mips/include/generated/asm/syscalls_n64.c file,
this is similar with commit 1b700c997500 ("perf tools: Build syscall
table .c header from kernel's syscall_64.tbl")

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Juxin Gao <gaojuxin@loongson.cn>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Xuefeng Li <lixuefeng@loongson.cn>
Cc: linux-mips@vger.kernel.org
Link: http://lore.kernel.org/lkml/1612409724-3516-4-git-send-email-yangtiezhu@loongson.cn
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Tiezhu Yang and committed by
Arnaldo Carvalho de Melo
d9fd5a71 b5f184fb

+415 -1
+2 -1
tools/perf/Makefile.config
··· 32 32 NO_SYSCALL_TABLE := 0 33 33 endif 34 34 else 35 - ifeq ($(SRCARCH),$(filter $(SRCARCH),powerpc arm64 s390)) 35 + ifeq ($(SRCARCH),$(filter $(SRCARCH),powerpc arm64 s390 mips)) 36 36 NO_SYSCALL_TABLE := 0 37 37 endif 38 38 endif ··· 89 89 90 90 ifeq ($(ARCH),mips) 91 91 NO_PERF_REGS := 0 92 + CFLAGS += -I$(OUTPUT)arch/mips/include/generated 92 93 CFLAGS += -I../../arch/mips/include/uapi -I../../arch/mips/include/generated/uapi 93 94 LIBUNWIND_LIBS = -lunwind -lunwind-mips 94 95 endif
+18
tools/perf/arch/mips/Makefile
··· 2 2 ifndef NO_DWARF 3 3 PERF_HAVE_DWARF_REGS := 1 4 4 endif 5 + 6 + # Syscall table generation for perf 7 + out := $(OUTPUT)arch/mips/include/generated/asm 8 + header := $(out)/syscalls_n64.c 9 + sysprf := $(srctree)/tools/perf/arch/mips/entry/syscalls 10 + sysdef := $(sysprf)/syscall_n64.tbl 11 + systbl := $(sysprf)/mksyscalltbl 12 + 13 + # Create output directory if not already present 14 + _dummy := $(shell [ -d '$(out)' ] || mkdir -p '$(out)') 15 + 16 + $(header): $(sysdef) $(systbl) 17 + $(Q)$(SHELL) '$(systbl)' $(sysdef) > $@ 18 + 19 + clean:: 20 + $(call QUIET_CLEAN, mips) $(RM) $(header) 21 + 22 + archheaders: $(header)
+32
tools/perf/arch/mips/entry/syscalls/mksyscalltbl
··· 1 + #!/bin/sh 2 + # SPDX-License-Identifier: GPL-2.0 3 + # 4 + # Generate system call table for perf. Derived from 5 + # s390 script. 6 + # 7 + # Author(s): Hendrik Brueckner <brueckner@linux.vnet.ibm.com> 8 + # Changed by: Tiezhu Yang <yangtiezhu@loongson.cn> 9 + 10 + SYSCALL_TBL=$1 11 + 12 + if ! test -r $SYSCALL_TBL; then 13 + echo "Could not read input file" >&2 14 + exit 1 15 + fi 16 + 17 + create_table() 18 + { 19 + local max_nr nr abi sc discard 20 + 21 + echo 'static const char *syscalltbl_mips_n64[] = {' 22 + while read nr abi sc discard; do 23 + printf '\t[%d] = "%s",\n' $nr $sc 24 + max_nr=$nr 25 + done 26 + echo '};' 27 + echo "#define SYSCALLTBL_MIPS_N64_MAX_ID $max_nr" 28 + } 29 + 30 + grep -E "^[[:digit:]]+[[:space:]]+(n64)" $SYSCALL_TBL \ 31 + |sort -k1 -n \ 32 + |create_table
+358
tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl
··· 1 + # SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note 2 + # 3 + # system call numbers and entry vectors for mips 4 + # 5 + # The format is: 6 + # <number> <abi> <name> <entry point> 7 + # 8 + # The <abi> is always "n64" for this file. 9 + # 10 + 0 n64 read sys_read 11 + 1 n64 write sys_write 12 + 2 n64 open sys_open 13 + 3 n64 close sys_close 14 + 4 n64 stat sys_newstat 15 + 5 n64 fstat sys_newfstat 16 + 6 n64 lstat sys_newlstat 17 + 7 n64 poll sys_poll 18 + 8 n64 lseek sys_lseek 19 + 9 n64 mmap sys_mips_mmap 20 + 10 n64 mprotect sys_mprotect 21 + 11 n64 munmap sys_munmap 22 + 12 n64 brk sys_brk 23 + 13 n64 rt_sigaction sys_rt_sigaction 24 + 14 n64 rt_sigprocmask sys_rt_sigprocmask 25 + 15 n64 ioctl sys_ioctl 26 + 16 n64 pread64 sys_pread64 27 + 17 n64 pwrite64 sys_pwrite64 28 + 18 n64 readv sys_readv 29 + 19 n64 writev sys_writev 30 + 20 n64 access sys_access 31 + 21 n64 pipe sysm_pipe 32 + 22 n64 _newselect sys_select 33 + 23 n64 sched_yield sys_sched_yield 34 + 24 n64 mremap sys_mremap 35 + 25 n64 msync sys_msync 36 + 26 n64 mincore sys_mincore 37 + 27 n64 madvise sys_madvise 38 + 28 n64 shmget sys_shmget 39 + 29 n64 shmat sys_shmat 40 + 30 n64 shmctl sys_old_shmctl 41 + 31 n64 dup sys_dup 42 + 32 n64 dup2 sys_dup2 43 + 33 n64 pause sys_pause 44 + 34 n64 nanosleep sys_nanosleep 45 + 35 n64 getitimer sys_getitimer 46 + 36 n64 setitimer sys_setitimer 47 + 37 n64 alarm sys_alarm 48 + 38 n64 getpid sys_getpid 49 + 39 n64 sendfile sys_sendfile64 50 + 40 n64 socket sys_socket 51 + 41 n64 connect sys_connect 52 + 42 n64 accept sys_accept 53 + 43 n64 sendto sys_sendto 54 + 44 n64 recvfrom sys_recvfrom 55 + 45 n64 sendmsg sys_sendmsg 56 + 46 n64 recvmsg sys_recvmsg 57 + 47 n64 shutdown sys_shutdown 58 + 48 n64 bind sys_bind 59 + 49 n64 listen sys_listen 60 + 50 n64 getsockname sys_getsockname 61 + 51 n64 getpeername sys_getpeername 62 + 52 n64 socketpair sys_socketpair 63 + 53 n64 setsockopt sys_setsockopt 64 + 54 n64 getsockopt sys_getsockopt 65 + 55 n64 clone __sys_clone 66 + 56 n64 fork __sys_fork 67 + 57 n64 execve sys_execve 68 + 58 n64 exit sys_exit 69 + 59 n64 wait4 sys_wait4 70 + 60 n64 kill sys_kill 71 + 61 n64 uname sys_newuname 72 + 62 n64 semget sys_semget 73 + 63 n64 semop sys_semop 74 + 64 n64 semctl sys_old_semctl 75 + 65 n64 shmdt sys_shmdt 76 + 66 n64 msgget sys_msgget 77 + 67 n64 msgsnd sys_msgsnd 78 + 68 n64 msgrcv sys_msgrcv 79 + 69 n64 msgctl sys_old_msgctl 80 + 70 n64 fcntl sys_fcntl 81 + 71 n64 flock sys_flock 82 + 72 n64 fsync sys_fsync 83 + 73 n64 fdatasync sys_fdatasync 84 + 74 n64 truncate sys_truncate 85 + 75 n64 ftruncate sys_ftruncate 86 + 76 n64 getdents sys_getdents 87 + 77 n64 getcwd sys_getcwd 88 + 78 n64 chdir sys_chdir 89 + 79 n64 fchdir sys_fchdir 90 + 80 n64 rename sys_rename 91 + 81 n64 mkdir sys_mkdir 92 + 82 n64 rmdir sys_rmdir 93 + 83 n64 creat sys_creat 94 + 84 n64 link sys_link 95 + 85 n64 unlink sys_unlink 96 + 86 n64 symlink sys_symlink 97 + 87 n64 readlink sys_readlink 98 + 88 n64 chmod sys_chmod 99 + 89 n64 fchmod sys_fchmod 100 + 90 n64 chown sys_chown 101 + 91 n64 fchown sys_fchown 102 + 92 n64 lchown sys_lchown 103 + 93 n64 umask sys_umask 104 + 94 n64 gettimeofday sys_gettimeofday 105 + 95 n64 getrlimit sys_getrlimit 106 + 96 n64 getrusage sys_getrusage 107 + 97 n64 sysinfo sys_sysinfo 108 + 98 n64 times sys_times 109 + 99 n64 ptrace sys_ptrace 110 + 100 n64 getuid sys_getuid 111 + 101 n64 syslog sys_syslog 112 + 102 n64 getgid sys_getgid 113 + 103 n64 setuid sys_setuid 114 + 104 n64 setgid sys_setgid 115 + 105 n64 geteuid sys_geteuid 116 + 106 n64 getegid sys_getegid 117 + 107 n64 setpgid sys_setpgid 118 + 108 n64 getppid sys_getppid 119 + 109 n64 getpgrp sys_getpgrp 120 + 110 n64 setsid sys_setsid 121 + 111 n64 setreuid sys_setreuid 122 + 112 n64 setregid sys_setregid 123 + 113 n64 getgroups sys_getgroups 124 + 114 n64 setgroups sys_setgroups 125 + 115 n64 setresuid sys_setresuid 126 + 116 n64 getresuid sys_getresuid 127 + 117 n64 setresgid sys_setresgid 128 + 118 n64 getresgid sys_getresgid 129 + 119 n64 getpgid sys_getpgid 130 + 120 n64 setfsuid sys_setfsuid 131 + 121 n64 setfsgid sys_setfsgid 132 + 122 n64 getsid sys_getsid 133 + 123 n64 capget sys_capget 134 + 124 n64 capset sys_capset 135 + 125 n64 rt_sigpending sys_rt_sigpending 136 + 126 n64 rt_sigtimedwait sys_rt_sigtimedwait 137 + 127 n64 rt_sigqueueinfo sys_rt_sigqueueinfo 138 + 128 n64 rt_sigsuspend sys_rt_sigsuspend 139 + 129 n64 sigaltstack sys_sigaltstack 140 + 130 n64 utime sys_utime 141 + 131 n64 mknod sys_mknod 142 + 132 n64 personality sys_personality 143 + 133 n64 ustat sys_ustat 144 + 134 n64 statfs sys_statfs 145 + 135 n64 fstatfs sys_fstatfs 146 + 136 n64 sysfs sys_sysfs 147 + 137 n64 getpriority sys_getpriority 148 + 138 n64 setpriority sys_setpriority 149 + 139 n64 sched_setparam sys_sched_setparam 150 + 140 n64 sched_getparam sys_sched_getparam 151 + 141 n64 sched_setscheduler sys_sched_setscheduler 152 + 142 n64 sched_getscheduler sys_sched_getscheduler 153 + 143 n64 sched_get_priority_max sys_sched_get_priority_max 154 + 144 n64 sched_get_priority_min sys_sched_get_priority_min 155 + 145 n64 sched_rr_get_interval sys_sched_rr_get_interval 156 + 146 n64 mlock sys_mlock 157 + 147 n64 munlock sys_munlock 158 + 148 n64 mlockall sys_mlockall 159 + 149 n64 munlockall sys_munlockall 160 + 150 n64 vhangup sys_vhangup 161 + 151 n64 pivot_root sys_pivot_root 162 + 152 n64 _sysctl sys_ni_syscall 163 + 153 n64 prctl sys_prctl 164 + 154 n64 adjtimex sys_adjtimex 165 + 155 n64 setrlimit sys_setrlimit 166 + 156 n64 chroot sys_chroot 167 + 157 n64 sync sys_sync 168 + 158 n64 acct sys_acct 169 + 159 n64 settimeofday sys_settimeofday 170 + 160 n64 mount sys_mount 171 + 161 n64 umount2 sys_umount 172 + 162 n64 swapon sys_swapon 173 + 163 n64 swapoff sys_swapoff 174 + 164 n64 reboot sys_reboot 175 + 165 n64 sethostname sys_sethostname 176 + 166 n64 setdomainname sys_setdomainname 177 + 167 n64 create_module sys_ni_syscall 178 + 168 n64 init_module sys_init_module 179 + 169 n64 delete_module sys_delete_module 180 + 170 n64 get_kernel_syms sys_ni_syscall 181 + 171 n64 query_module sys_ni_syscall 182 + 172 n64 quotactl sys_quotactl 183 + 173 n64 nfsservctl sys_ni_syscall 184 + 174 n64 getpmsg sys_ni_syscall 185 + 175 n64 putpmsg sys_ni_syscall 186 + 176 n64 afs_syscall sys_ni_syscall 187 + # 177 reserved for security 188 + 177 n64 reserved177 sys_ni_syscall 189 + 178 n64 gettid sys_gettid 190 + 179 n64 readahead sys_readahead 191 + 180 n64 setxattr sys_setxattr 192 + 181 n64 lsetxattr sys_lsetxattr 193 + 182 n64 fsetxattr sys_fsetxattr 194 + 183 n64 getxattr sys_getxattr 195 + 184 n64 lgetxattr sys_lgetxattr 196 + 185 n64 fgetxattr sys_fgetxattr 197 + 186 n64 listxattr sys_listxattr 198 + 187 n64 llistxattr sys_llistxattr 199 + 188 n64 flistxattr sys_flistxattr 200 + 189 n64 removexattr sys_removexattr 201 + 190 n64 lremovexattr sys_lremovexattr 202 + 191 n64 fremovexattr sys_fremovexattr 203 + 192 n64 tkill sys_tkill 204 + 193 n64 reserved193 sys_ni_syscall 205 + 194 n64 futex sys_futex 206 + 195 n64 sched_setaffinity sys_sched_setaffinity 207 + 196 n64 sched_getaffinity sys_sched_getaffinity 208 + 197 n64 cacheflush sys_cacheflush 209 + 198 n64 cachectl sys_cachectl 210 + 199 n64 sysmips __sys_sysmips 211 + 200 n64 io_setup sys_io_setup 212 + 201 n64 io_destroy sys_io_destroy 213 + 202 n64 io_getevents sys_io_getevents 214 + 203 n64 io_submit sys_io_submit 215 + 204 n64 io_cancel sys_io_cancel 216 + 205 n64 exit_group sys_exit_group 217 + 206 n64 lookup_dcookie sys_lookup_dcookie 218 + 207 n64 epoll_create sys_epoll_create 219 + 208 n64 epoll_ctl sys_epoll_ctl 220 + 209 n64 epoll_wait sys_epoll_wait 221 + 210 n64 remap_file_pages sys_remap_file_pages 222 + 211 n64 rt_sigreturn sys_rt_sigreturn 223 + 212 n64 set_tid_address sys_set_tid_address 224 + 213 n64 restart_syscall sys_restart_syscall 225 + 214 n64 semtimedop sys_semtimedop 226 + 215 n64 fadvise64 sys_fadvise64_64 227 + 216 n64 timer_create sys_timer_create 228 + 217 n64 timer_settime sys_timer_settime 229 + 218 n64 timer_gettime sys_timer_gettime 230 + 219 n64 timer_getoverrun sys_timer_getoverrun 231 + 220 n64 timer_delete sys_timer_delete 232 + 221 n64 clock_settime sys_clock_settime 233 + 222 n64 clock_gettime sys_clock_gettime 234 + 223 n64 clock_getres sys_clock_getres 235 + 224 n64 clock_nanosleep sys_clock_nanosleep 236 + 225 n64 tgkill sys_tgkill 237 + 226 n64 utimes sys_utimes 238 + 227 n64 mbind sys_mbind 239 + 228 n64 get_mempolicy sys_get_mempolicy 240 + 229 n64 set_mempolicy sys_set_mempolicy 241 + 230 n64 mq_open sys_mq_open 242 + 231 n64 mq_unlink sys_mq_unlink 243 + 232 n64 mq_timedsend sys_mq_timedsend 244 + 233 n64 mq_timedreceive sys_mq_timedreceive 245 + 234 n64 mq_notify sys_mq_notify 246 + 235 n64 mq_getsetattr sys_mq_getsetattr 247 + 236 n64 vserver sys_ni_syscall 248 + 237 n64 waitid sys_waitid 249 + # 238 was sys_setaltroot 250 + 239 n64 add_key sys_add_key 251 + 240 n64 request_key sys_request_key 252 + 241 n64 keyctl sys_keyctl 253 + 242 n64 set_thread_area sys_set_thread_area 254 + 243 n64 inotify_init sys_inotify_init 255 + 244 n64 inotify_add_watch sys_inotify_add_watch 256 + 245 n64 inotify_rm_watch sys_inotify_rm_watch 257 + 246 n64 migrate_pages sys_migrate_pages 258 + 247 n64 openat sys_openat 259 + 248 n64 mkdirat sys_mkdirat 260 + 249 n64 mknodat sys_mknodat 261 + 250 n64 fchownat sys_fchownat 262 + 251 n64 futimesat sys_futimesat 263 + 252 n64 newfstatat sys_newfstatat 264 + 253 n64 unlinkat sys_unlinkat 265 + 254 n64 renameat sys_renameat 266 + 255 n64 linkat sys_linkat 267 + 256 n64 symlinkat sys_symlinkat 268 + 257 n64 readlinkat sys_readlinkat 269 + 258 n64 fchmodat sys_fchmodat 270 + 259 n64 faccessat sys_faccessat 271 + 260 n64 pselect6 sys_pselect6 272 + 261 n64 ppoll sys_ppoll 273 + 262 n64 unshare sys_unshare 274 + 263 n64 splice sys_splice 275 + 264 n64 sync_file_range sys_sync_file_range 276 + 265 n64 tee sys_tee 277 + 266 n64 vmsplice sys_vmsplice 278 + 267 n64 move_pages sys_move_pages 279 + 268 n64 set_robust_list sys_set_robust_list 280 + 269 n64 get_robust_list sys_get_robust_list 281 + 270 n64 kexec_load sys_kexec_load 282 + 271 n64 getcpu sys_getcpu 283 + 272 n64 epoll_pwait sys_epoll_pwait 284 + 273 n64 ioprio_set sys_ioprio_set 285 + 274 n64 ioprio_get sys_ioprio_get 286 + 275 n64 utimensat sys_utimensat 287 + 276 n64 signalfd sys_signalfd 288 + 277 n64 timerfd sys_ni_syscall 289 + 278 n64 eventfd sys_eventfd 290 + 279 n64 fallocate sys_fallocate 291 + 280 n64 timerfd_create sys_timerfd_create 292 + 281 n64 timerfd_gettime sys_timerfd_gettime 293 + 282 n64 timerfd_settime sys_timerfd_settime 294 + 283 n64 signalfd4 sys_signalfd4 295 + 284 n64 eventfd2 sys_eventfd2 296 + 285 n64 epoll_create1 sys_epoll_create1 297 + 286 n64 dup3 sys_dup3 298 + 287 n64 pipe2 sys_pipe2 299 + 288 n64 inotify_init1 sys_inotify_init1 300 + 289 n64 preadv sys_preadv 301 + 290 n64 pwritev sys_pwritev 302 + 291 n64 rt_tgsigqueueinfo sys_rt_tgsigqueueinfo 303 + 292 n64 perf_event_open sys_perf_event_open 304 + 293 n64 accept4 sys_accept4 305 + 294 n64 recvmmsg sys_recvmmsg 306 + 295 n64 fanotify_init sys_fanotify_init 307 + 296 n64 fanotify_mark sys_fanotify_mark 308 + 297 n64 prlimit64 sys_prlimit64 309 + 298 n64 name_to_handle_at sys_name_to_handle_at 310 + 299 n64 open_by_handle_at sys_open_by_handle_at 311 + 300 n64 clock_adjtime sys_clock_adjtime 312 + 301 n64 syncfs sys_syncfs 313 + 302 n64 sendmmsg sys_sendmmsg 314 + 303 n64 setns sys_setns 315 + 304 n64 process_vm_readv sys_process_vm_readv 316 + 305 n64 process_vm_writev sys_process_vm_writev 317 + 306 n64 kcmp sys_kcmp 318 + 307 n64 finit_module sys_finit_module 319 + 308 n64 getdents64 sys_getdents64 320 + 309 n64 sched_setattr sys_sched_setattr 321 + 310 n64 sched_getattr sys_sched_getattr 322 + 311 n64 renameat2 sys_renameat2 323 + 312 n64 seccomp sys_seccomp 324 + 313 n64 getrandom sys_getrandom 325 + 314 n64 memfd_create sys_memfd_create 326 + 315 n64 bpf sys_bpf 327 + 316 n64 execveat sys_execveat 328 + 317 n64 userfaultfd sys_userfaultfd 329 + 318 n64 membarrier sys_membarrier 330 + 319 n64 mlock2 sys_mlock2 331 + 320 n64 copy_file_range sys_copy_file_range 332 + 321 n64 preadv2 sys_preadv2 333 + 322 n64 pwritev2 sys_pwritev2 334 + 323 n64 pkey_mprotect sys_pkey_mprotect 335 + 324 n64 pkey_alloc sys_pkey_alloc 336 + 325 n64 pkey_free sys_pkey_free 337 + 326 n64 statx sys_statx 338 + 327 n64 rseq sys_rseq 339 + 328 n64 io_pgetevents sys_io_pgetevents 340 + # 329 through 423 are reserved to sync up with other architectures 341 + 424 n64 pidfd_send_signal sys_pidfd_send_signal 342 + 425 n64 io_uring_setup sys_io_uring_setup 343 + 426 n64 io_uring_enter sys_io_uring_enter 344 + 427 n64 io_uring_register sys_io_uring_register 345 + 428 n64 open_tree sys_open_tree 346 + 429 n64 move_mount sys_move_mount 347 + 430 n64 fsopen sys_fsopen 348 + 431 n64 fsconfig sys_fsconfig 349 + 432 n64 fsmount sys_fsmount 350 + 433 n64 fspick sys_fspick 351 + 434 n64 pidfd_open sys_pidfd_open 352 + 435 n64 clone3 __sys_clone3 353 + 436 n64 close_range sys_close_range 354 + 437 n64 openat2 sys_openat2 355 + 438 n64 pidfd_getfd sys_pidfd_getfd 356 + 439 n64 faccessat2 sys_faccessat2 357 + 440 n64 process_madvise sys_process_madvise 358 + 441 n64 epoll_pwait2 sys_epoll_pwait2
+1
tools/perf/check-headers.sh
··· 146 146 check_2 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl 147 147 check_2 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl 148 148 check_2 tools/perf/arch/s390/entry/syscalls/syscall.tbl arch/s390/kernel/syscalls/syscall.tbl 149 + check_2 tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl arch/mips/kernel/syscalls/syscall_n64.tbl 149 150 150 151 for i in $BEAUTY_FILES; do 151 152 beauty_check $i -B
+4
tools/perf/util/syscalltbl.c
··· 34 34 #include <asm/syscalls.c> 35 35 const int syscalltbl_native_max_id = SYSCALLTBL_ARM64_MAX_ID; 36 36 static const char **syscalltbl_native = syscalltbl_arm64; 37 + #elif defined(__mips__) 38 + #include <asm/syscalls_n64.c> 39 + const int syscalltbl_native_max_id = SYSCALLTBL_MIPS_N64_MAX_ID; 40 + static const char **syscalltbl_native = syscalltbl_mips_n64; 37 41 #endif 38 42 39 43 struct syscall {