Skip to content

Commit 303395a

Browse files
author
H. Peter Anvin
committed
x86: Generate system call tables and unistd_*.h from tables
Generate system call tables and unistd_*.h automatically from the tables in arch/x86/syscalls. All other information, like NR_syscalls, is auto-generated, some of which is in asm-offsets_*.c. This allows us to keep all the system call information in one place, and allows for kernel space and user space to see different information; this is currently used for the ia32 system call numbers when building the 64-bit kernel, but will be used by the x32 ABI in the near future. This also removes some gratuitious differences between i386, x86-64 and ia32; in particular, now all system call tables are generated with the same mechanism. Cc: H. J. Lu <[email protected]> Cc: Sam Ravnborg <[email protected]> Cc: Michal Marek <[email protected]> Signed-off-by: H. Peter Anvin <[email protected]>
1 parent 29dc54c commit 303395a

File tree

16 files changed

+154
-1896
lines changed

16 files changed

+154
-1896
lines changed

arch/x86/Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,12 @@ KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
117117
KBUILD_CFLAGS += $(mflags-y)
118118
KBUILD_AFLAGS += $(mflags-y)
119119

120+
###
121+
# Syscall table generation
122+
123+
archheaders:
124+
$(Q)$(MAKE) $(build)=arch/x86/syscalls all
125+
120126
###
121127
# Kernel objects
122128

arch/x86/ia32/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44

55
obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_signal.o
6-
obj-$(CONFIG_IA32_EMULATION) += nosyscall.o
6+
obj-$(CONFIG_IA32_EMULATION) += nosyscall.o syscall_ia32.o
77

88
sysv-$(CONFIG_SYSVIPC) := ipc32.o
99
obj-$(CONFIG_IA32_EMULATION) += $(sysv-y)

arch/x86/ia32/ia32entry.S

Lines changed: 0 additions & 356 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727

2828
.section .entry.text, "ax"
2929

30-
#define IA32_NR_syscalls ((ia32_syscall_end - ia32_sys_call_table)/8)
31-
3230
.macro IA32_ARG_FIXUP noebp=0
3331
movl %edi,%r8d
3432
.if \noebp
@@ -496,357 +494,3 @@ ENTRY(ia32_ptregs_common)
496494
jmp ia32_sysret /* misbalances the return cache */
497495
CFI_ENDPROC
498496
END(ia32_ptregs_common)
499-
500-
.section .rodata,"a"
501-
.align 8
502-
ia32_sys_call_table:
503-
.quad sys_restart_syscall
504-
.quad sys_exit
505-
.quad stub32_fork
506-
.quad sys_read
507-
.quad sys_write
508-
.quad compat_sys_open /* 5 */
509-
.quad sys_close
510-
.quad sys32_waitpid
511-
.quad sys_creat
512-
.quad sys_link
513-
.quad sys_unlink /* 10 */
514-
.quad stub32_execve
515-
.quad sys_chdir
516-
.quad compat_sys_time
517-
.quad sys_mknod
518-
.quad sys_chmod /* 15 */
519-
.quad sys_lchown16
520-
.quad quiet_ni_syscall /* old break syscall holder */
521-
.quad sys_stat
522-
.quad sys32_lseek
523-
.quad sys_getpid /* 20 */
524-
.quad compat_sys_mount /* mount */
525-
.quad sys_oldumount /* old_umount */
526-
.quad sys_setuid16
527-
.quad sys_getuid16
528-
.quad compat_sys_stime /* stime */ /* 25 */
529-
.quad compat_sys_ptrace /* ptrace */
530-
.quad sys_alarm
531-
.quad sys_fstat /* (old)fstat */
532-
.quad sys_pause
533-
.quad compat_sys_utime /* 30 */
534-
.quad quiet_ni_syscall /* old stty syscall holder */
535-
.quad quiet_ni_syscall /* old gtty syscall holder */
536-
.quad sys_access
537-
.quad sys_nice
538-
.quad quiet_ni_syscall /* 35 */ /* old ftime syscall holder */
539-
.quad sys_sync
540-
.quad sys32_kill
541-
.quad sys_rename
542-
.quad sys_mkdir
543-
.quad sys_rmdir /* 40 */
544-
.quad sys_dup
545-
.quad sys_pipe
546-
.quad compat_sys_times
547-
.quad quiet_ni_syscall /* old prof syscall holder */
548-
.quad sys_brk /* 45 */
549-
.quad sys_setgid16
550-
.quad sys_getgid16
551-
.quad sys_signal
552-
.quad sys_geteuid16
553-
.quad sys_getegid16 /* 50 */
554-
.quad sys_acct
555-
.quad sys_umount /* new_umount */
556-
.quad quiet_ni_syscall /* old lock syscall holder */
557-
.quad compat_sys_ioctl
558-
.quad compat_sys_fcntl64 /* 55 */
559-
.quad quiet_ni_syscall /* old mpx syscall holder */
560-
.quad sys_setpgid
561-
.quad quiet_ni_syscall /* old ulimit syscall holder */
562-
.quad sys_olduname
563-
.quad sys_umask /* 60 */
564-
.quad sys_chroot
565-
.quad compat_sys_ustat
566-
.quad sys_dup2
567-
.quad sys_getppid
568-
.quad sys_getpgrp /* 65 */
569-
.quad sys_setsid
570-
.quad sys32_sigaction
571-
.quad sys_sgetmask
572-
.quad sys_ssetmask
573-
.quad sys_setreuid16 /* 70 */
574-
.quad sys_setregid16
575-
.quad sys32_sigsuspend
576-
.quad compat_sys_sigpending
577-
.quad sys_sethostname
578-
.quad compat_sys_setrlimit /* 75 */
579-
.quad compat_sys_old_getrlimit /* old_getrlimit */
580-
.quad compat_sys_getrusage
581-
.quad compat_sys_gettimeofday
582-
.quad compat_sys_settimeofday
583-
.quad sys_getgroups16 /* 80 */
584-
.quad sys_setgroups16
585-
.quad compat_sys_old_select
586-
.quad sys_symlink
587-
.quad sys_lstat
588-
.quad sys_readlink /* 85 */
589-
.quad sys_uselib
590-
.quad sys_swapon
591-
.quad sys_reboot
592-
.quad compat_sys_old_readdir
593-
.quad sys32_mmap /* 90 */
594-
.quad sys_munmap
595-
.quad sys_truncate
596-
.quad sys_ftruncate
597-
.quad sys_fchmod
598-
.quad sys_fchown16 /* 95 */
599-
.quad sys_getpriority
600-
.quad sys_setpriority
601-
.quad quiet_ni_syscall /* old profil syscall holder */
602-
.quad compat_sys_statfs
603-
.quad compat_sys_fstatfs /* 100 */
604-
.quad sys_ioperm
605-
.quad compat_sys_socketcall
606-
.quad sys_syslog
607-
.quad compat_sys_setitimer
608-
.quad compat_sys_getitimer /* 105 */
609-
.quad compat_sys_newstat
610-
.quad compat_sys_newlstat
611-
.quad compat_sys_newfstat
612-
.quad sys_uname
613-
.quad stub32_iopl /* 110 */
614-
.quad sys_vhangup
615-
.quad quiet_ni_syscall /* old "idle" system call */
616-
.quad sys32_vm86_warning /* vm86old */
617-
.quad compat_sys_wait4
618-
.quad sys_swapoff /* 115 */
619-
.quad compat_sys_sysinfo
620-
.quad sys32_ipc
621-
.quad sys_fsync
622-
.quad stub32_sigreturn
623-
.quad stub32_clone /* 120 */
624-
.quad sys_setdomainname
625-
.quad sys_newuname
626-
.quad sys_modify_ldt
627-
.quad compat_sys_adjtimex
628-
.quad sys32_mprotect /* 125 */
629-
.quad compat_sys_sigprocmask
630-
.quad quiet_ni_syscall /* create_module */
631-
.quad sys_init_module
632-
.quad sys_delete_module
633-
.quad quiet_ni_syscall /* 130 get_kernel_syms */
634-
.quad sys32_quotactl
635-
.quad sys_getpgid
636-
.quad sys_fchdir
637-
.quad quiet_ni_syscall /* bdflush */
638-
.quad sys_sysfs /* 135 */
639-
.quad sys_personality
640-
.quad quiet_ni_syscall /* for afs_syscall */
641-
.quad sys_setfsuid16
642-
.quad sys_setfsgid16
643-
.quad sys_llseek /* 140 */
644-
.quad compat_sys_getdents
645-
.quad compat_sys_select
646-
.quad sys_flock
647-
.quad sys_msync
648-
.quad compat_sys_readv /* 145 */
649-
.quad compat_sys_writev
650-
.quad sys_getsid
651-
.quad sys_fdatasync
652-
.quad compat_sys_sysctl /* sysctl */
653-
.quad sys_mlock /* 150 */
654-
.quad sys_munlock
655-
.quad sys_mlockall
656-
.quad sys_munlockall
657-
.quad sys_sched_setparam
658-
.quad sys_sched_getparam /* 155 */
659-
.quad sys_sched_setscheduler
660-
.quad sys_sched_getscheduler
661-
.quad sys_sched_yield
662-
.quad sys_sched_get_priority_max
663-
.quad sys_sched_get_priority_min /* 160 */
664-
.quad sys32_sched_rr_get_interval
665-
.quad compat_sys_nanosleep
666-
.quad sys_mremap
667-
.quad sys_setresuid16
668-
.quad sys_getresuid16 /* 165 */
669-
.quad sys32_vm86_warning /* vm86 */
670-
.quad quiet_ni_syscall /* query_module */
671-
.quad sys_poll
672-
.quad quiet_ni_syscall /* old nfsservctl */
673-
.quad sys_setresgid16 /* 170 */
674-
.quad sys_getresgid16
675-
.quad sys_prctl
676-
.quad stub32_rt_sigreturn
677-
.quad sys32_rt_sigaction
678-
.quad sys32_rt_sigprocmask /* 175 */
679-
.quad sys32_rt_sigpending
680-
.quad compat_sys_rt_sigtimedwait
681-
.quad sys32_rt_sigqueueinfo
682-
.quad sys_rt_sigsuspend
683-
.quad sys32_pread /* 180 */
684-
.quad sys32_pwrite
685-
.quad sys_chown16
686-
.quad sys_getcwd
687-
.quad sys_capget
688-
.quad sys_capset
689-
.quad stub32_sigaltstack
690-
.quad sys32_sendfile
691-
.quad quiet_ni_syscall /* streams1 */
692-
.quad quiet_ni_syscall /* streams2 */
693-
.quad stub32_vfork /* 190 */
694-
.quad compat_sys_getrlimit
695-
.quad sys_mmap_pgoff
696-
.quad sys32_truncate64
697-
.quad sys32_ftruncate64
698-
.quad sys32_stat64 /* 195 */
699-
.quad sys32_lstat64
700-
.quad sys32_fstat64
701-
.quad sys_lchown
702-
.quad sys_getuid
703-
.quad sys_getgid /* 200 */
704-
.quad sys_geteuid
705-
.quad sys_getegid
706-
.quad sys_setreuid
707-
.quad sys_setregid
708-
.quad sys_getgroups /* 205 */
709-
.quad sys_setgroups
710-
.quad sys_fchown
711-
.quad sys_setresuid
712-
.quad sys_getresuid
713-
.quad sys_setresgid /* 210 */
714-
.quad sys_getresgid
715-
.quad sys_chown
716-
.quad sys_setuid
717-
.quad sys_setgid
718-
.quad sys_setfsuid /* 215 */
719-
.quad sys_setfsgid
720-
.quad sys_pivot_root
721-
.quad sys_mincore
722-
.quad sys_madvise
723-
.quad compat_sys_getdents64 /* 220 getdents64 */
724-
.quad compat_sys_fcntl64
725-
.quad quiet_ni_syscall /* tux */
726-
.quad quiet_ni_syscall /* security */
727-
.quad sys_gettid
728-
.quad sys32_readahead /* 225 */
729-
.quad sys_setxattr
730-
.quad sys_lsetxattr
731-
.quad sys_fsetxattr
732-
.quad sys_getxattr
733-
.quad sys_lgetxattr /* 230 */
734-
.quad sys_fgetxattr
735-
.quad sys_listxattr
736-
.quad sys_llistxattr
737-
.quad sys_flistxattr
738-
.quad sys_removexattr /* 235 */
739-
.quad sys_lremovexattr
740-
.quad sys_fremovexattr
741-
.quad sys_tkill
742-
.quad sys_sendfile64
743-
.quad compat_sys_futex /* 240 */
744-
.quad compat_sys_sched_setaffinity
745-
.quad compat_sys_sched_getaffinity
746-
.quad sys_set_thread_area
747-
.quad sys_get_thread_area
748-
.quad compat_sys_io_setup /* 245 */
749-
.quad sys_io_destroy
750-
.quad compat_sys_io_getevents
751-
.quad compat_sys_io_submit
752-
.quad sys_io_cancel
753-
.quad sys32_fadvise64 /* 250 */
754-
.quad quiet_ni_syscall /* free_huge_pages */
755-
.quad sys_exit_group
756-
.quad sys32_lookup_dcookie
757-
.quad sys_epoll_create
758-
.quad sys_epoll_ctl /* 255 */
759-
.quad sys_epoll_wait
760-
.quad sys_remap_file_pages
761-
.quad sys_set_tid_address
762-
.quad compat_sys_timer_create
763-
.quad compat_sys_timer_settime /* 260 */
764-
.quad compat_sys_timer_gettime
765-
.quad sys_timer_getoverrun
766-
.quad sys_timer_delete
767-
.quad compat_sys_clock_settime
768-
.quad compat_sys_clock_gettime /* 265 */
769-
.quad compat_sys_clock_getres
770-
.quad compat_sys_clock_nanosleep
771-
.quad compat_sys_statfs64
772-
.quad compat_sys_fstatfs64
773-
.quad sys_tgkill /* 270 */
774-
.quad compat_sys_utimes
775-
.quad sys32_fadvise64_64
776-
.quad quiet_ni_syscall /* sys_vserver */
777-
.quad sys_mbind
778-
.quad compat_sys_get_mempolicy /* 275 */
779-
.quad sys_set_mempolicy
780-
.quad compat_sys_mq_open
781-
.quad sys_mq_unlink
782-
.quad compat_sys_mq_timedsend
783-
.quad compat_sys_mq_timedreceive /* 280 */
784-
.quad compat_sys_mq_notify
785-
.quad compat_sys_mq_getsetattr
786-
.quad compat_sys_kexec_load /* reserved for kexec */
787-
.quad compat_sys_waitid
788-
.quad quiet_ni_syscall /* 285: sys_altroot */
789-
.quad sys_add_key
790-
.quad sys_request_key
791-
.quad sys_keyctl
792-
.quad sys_ioprio_set
793-
.quad sys_ioprio_get /* 290 */
794-
.quad sys_inotify_init
795-
.quad sys_inotify_add_watch
796-
.quad sys_inotify_rm_watch
797-
.quad sys_migrate_pages
798-
.quad compat_sys_openat /* 295 */
799-
.quad sys_mkdirat
800-
.quad sys_mknodat
801-
.quad sys_fchownat
802-
.quad compat_sys_futimesat
803-
.quad sys32_fstatat /* 300 */
804-
.quad sys_unlinkat
805-
.quad sys_renameat
806-
.quad sys_linkat
807-
.quad sys_symlinkat
808-
.quad sys_readlinkat /* 305 */
809-
.quad sys_fchmodat
810-
.quad sys_faccessat
811-
.quad compat_sys_pselect6
812-
.quad compat_sys_ppoll
813-
.quad sys_unshare /* 310 */
814-
.quad compat_sys_set_robust_list
815-
.quad compat_sys_get_robust_list
816-
.quad sys_splice
817-
.quad sys32_sync_file_range
818-
.quad sys_tee /* 315 */
819-
.quad compat_sys_vmsplice
820-
.quad compat_sys_move_pages
821-
.quad sys_getcpu
822-
.quad sys_epoll_pwait
823-
.quad compat_sys_utimensat /* 320 */
824-
.quad compat_sys_signalfd
825-
.quad sys_timerfd_create
826-
.quad sys_eventfd
827-
.quad sys32_fallocate
828-
.quad compat_sys_timerfd_settime /* 325 */
829-
.quad compat_sys_timerfd_gettime
830-
.quad compat_sys_signalfd4
831-
.quad sys_eventfd2
832-
.quad sys_epoll_create1
833-
.quad sys_dup3 /* 330 */
834-
.quad sys_pipe2
835-
.quad sys_inotify_init1
836-
.quad compat_sys_preadv
837-
.quad compat_sys_pwritev
838-
.quad compat_sys_rt_tgsigqueueinfo /* 335 */
839-
.quad sys_perf_event_open
840-
.quad compat_sys_recvmmsg
841-
.quad sys_fanotify_init
842-
.quad sys32_fanotify_mark
843-
.quad sys_prlimit64 /* 340 */
844-
.quad sys_name_to_handle_at
845-
.quad compat_sys_open_by_handle_at
846-
.quad compat_sys_clock_adjtime
847-
.quad sys_syncfs
848-
.quad compat_sys_sendmmsg /* 345 */
849-
.quad sys_setns
850-
.quad compat_sys_process_vm_readv
851-
.quad compat_sys_process_vm_writev
852-
ia32_syscall_end:

0 commit comments

Comments
 (0)