summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/i386/bits
diff options
context:
space:
mode:
authorManuel Novoa III <mjn3@codepoet.org>2001-06-28 01:59:07 +0000
committerManuel Novoa III <mjn3@codepoet.org>2001-06-28 01:59:07 +0000
commite53f70e1e1fc250c060d3432844fb222e32754b1 (patch)
tree9e9dba365596e9ce3ebdea9245ccfa173236c76c /libc/sysdeps/linux/i386/bits
parent2d95d9f12e8d4a711671411e9d9db6e6866cd4ac (diff)
Added a script to create bits/syscall.h for each arch.
NOTE!!! This is run by "make -C libc/sysdeps/linux/$(TARGET_ARCH) headers" in the main Makefile, but I only changed libc/sysdeps/linux/i386/Makefile as I had no way of testing it for the other archs. Various arch maintainers, please check and update the corresponding Makefile... or report bugs ;-)... appropriately. You'll also want to "cvs del" syscall.h and add it to a .cvsignore in $(ARCH)/bits. Also added a define to uClibc_config.h, __UCLIBC_USE_UNIFIED_SYSCALL__, and moved i386 unified syscall stuff out of common and into i386/bits/syscalls.h.
Diffstat (limited to 'libc/sysdeps/linux/i386/bits')
-rw-r--r--libc/sysdeps/linux/i386/bits/.cvsignore1
-rw-r--r--libc/sysdeps/linux/i386/bits/syscall.h425
-rw-r--r--libc/sysdeps/linux/i386/bits/syscalls.h39
3 files changed, 40 insertions, 425 deletions
diff --git a/libc/sysdeps/linux/i386/bits/.cvsignore b/libc/sysdeps/linux/i386/bits/.cvsignore
new file mode 100644
index 000000000..414354767
--- /dev/null
+++ b/libc/sysdeps/linux/i386/bits/.cvsignore
@@ -0,0 +1 @@
+syscall.h
diff --git a/libc/sysdeps/linux/i386/bits/syscall.h b/libc/sysdeps/linux/i386/bits/syscall.h
deleted file mode 100644
index 740dc78a3..000000000
--- a/libc/sysdeps/linux/i386/bits/syscall.h
+++ /dev/null
@@ -1,425 +0,0 @@
-/* Generated at libc build time from kernel syscall list. */
-
-#ifndef _SYSCALL_H
-# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."
-#endif
-
-/* This syscall list was pulled from the Linux kernel source
- * code from the file linux-2.4.5/include/asm-i386/unistd.h */
-
-#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_break 17
-#define __NR_oldstat 18
-#define __NR_lseek 19
-#define __NR_getpid 20
-#define __NR_mount 21
-#define __NR_umount 22
-#define __NR_setuid 23
-#define __NR_getuid 24
-#define __NR_stime 25
-#define __NR_ptrace 26
-#define __NR_alarm 27
-#define __NR_oldfstat 28
-#define __NR_pause 29
-#define __NR_utime 30
-#define __NR_stty 31
-#define __NR_gtty 32
-#define __NR_access 33
-#define __NR_nice 34
-#define __NR_ftime 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_prof 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_lock 53
-#define __NR_ioctl 54
-#define __NR_fcntl 55
-#define __NR_mpx 56
-#define __NR_setpgid 57
-#define __NR_ulimit 58
-#define __NR_oldolduname 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_sigaction 67
-#define __NR_sgetmask 68
-#define __NR_ssetmask 69
-#define __NR_setreuid 70
-#define __NR_setregid 71
-#define __NR_sigsuspend 72
-#define __NR_sigpending 73
-#define __NR_sethostname 74
-#define __NR_setrlimit 75
-#define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */
-#define __NR_getrusage 77
-#define __NR_gettimeofday 78
-#define __NR_settimeofday 79
-#define __NR_getgroups 80
-#define __NR_setgroups 81
-#define __NR_select 82
-#define __NR_symlink 83
-#define __NR_oldlstat 84
-#define __NR_readlink 85
-#define __NR_uselib 86
-#define __NR_swapon 87
-#define __NR_reboot 88
-#define __NR_readdir 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_profil 98
-#define __NR_statfs 99
-#define __NR_fstatfs 100
-#define __NR_ioperm 101
-#define __NR_socketcall 102
-#define __NR_syslog 103
-#define __NR_setitimer 104
-#define __NR_getitimer 105
-#define __NR_stat 106
-#define __NR_lstat 107
-#define __NR_fstat 108
-#define __NR_olduname 109
-#define __NR_iopl 110
-#define __NR_vhangup 111
-#define __NR_idle 112
-#define __NR_vm86old 113
-#define __NR_wait4 114
-#define __NR_swapoff 115
-#define __NR_sysinfo 116
-#define __NR_ipc 117
-#define __NR_fsync 118
-#define __NR_sigreturn 119
-#define __NR_clone 120
-#define __NR_setdomainname 121
-#define __NR_uname 122
-#define __NR_modify_ldt 123
-#define __NR_adjtimex 124
-#define __NR_mprotect 125
-#define __NR_sigprocmask 126
-#define __NR_create_module 127
-#define __NR_init_module 128
-#define __NR_delete_module 129
-#define __NR_get_kernel_syms 130
-#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 /* Syscall for Andrew File System */
-#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_vm86 166
-#define __NR_query_module 167
-#define __NR_poll 168
-#define __NR_nfsservctl 169
-#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_pread 180
-#define __NR_pwrite 181
-#define __NR_chown 182
-#define __NR_getcwd 183
-#define __NR_capget 184
-#define __NR_capset 185
-#define __NR_sigaltstack 186
-#define __NR_sendfile 187
-#define __NR_getpmsg 188 /* some people actually want streams */
-#define __NR_putpmsg 189 /* some people actually want streams */
-#define __NR_vfork 190
-#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */
-#define __NR_mmap2 192
-#define __NR_truncate64 193
-#define __NR_ftruncate64 194
-#define __NR_stat64 195
-#define __NR_lstat64 196
-#define __NR_fstat64 197
-#define __NR_lchown32 198
-#define __NR_getuid32 199
-#define __NR_getgid32 200
-#define __NR_geteuid32 201
-#define __NR_getegid32 202
-#define __NR_setreuid32 203
-#define __NR_setregid32 204
-#define __NR_getgroups32 205
-#define __NR_setgroups32 206
-#define __NR_fchown32 207
-#define __NR_setresuid32 208
-#define __NR_getresuid32 209
-#define __NR_setresgid32 210
-#define __NR_getresgid32 211
-#define __NR_chown32 212
-#define __NR_setuid32 213
-#define __NR_setgid32 214
-#define __NR_setfsuid32 215
-#define __NR_setfsgid32 216
-#define __NR_pivot_root 217
-#define __NR_mincore 218
-#define __NR_madvise 219
-#define __NR_madvise1 219 /* delete when C lib stub is removed */
-#define __NR_getdents64 220
-#define __NR_fcntl64 221
-
-
-/* Generated at libc build time from the above kernel syscall list. */
-
-#define SYS_write __NR_write
-#define SYS_setrlimit __NR_setrlimit
-#define SYS_getdents __NR_getdents
-#define SYS_umount __NR_umount
-#define SYS_munlock __NR_munlock
-#define SYS_delete_module __NR_delete_module
-#define SYS_fstat __NR_fstat
-#define SYS_getpgid __NR_getpgid
-#define SYS_rt_sigaction __NR_rt_sigaction
-#define SYS_setfsgid __NR_setfsgid
-#define SYS_chroot __NR_chroot
-#define SYS_modify_ldt __NR_modify_ldt
-#define SYS_times __NR_times
-#define SYS_rt_sigsuspend __NR_rt_sigsuspend
-#define SYS_setpgid __NR_setpgid
-#define SYS_getpgrp __NR_getpgrp
-#define SYS_break __NR_break
-#define SYS_putpmsg __NR_putpmsg
-#define SYS_query_module __NR_query_module
-#define SYS_pause __NR_pause
-#define SYS_writev __NR_writev
-#define SYS_rename __NR_rename
-#define SYS_truncate __NR_truncate
-#define SYS_profil __NR_profil
-#define SYS_waitpid __NR_waitpid
-#define SYS_sigreturn __NR_sigreturn
-#define SYS_setresgid __NR_setresgid
-#define SYS_readdir __NR_readdir
-#define SYS_fsync __NR_fsync
-#define SYS_sigaltstack __NR_sigaltstack
-#define SYS_lstat __NR_lstat
-#define SYS_dup2 __NR_dup2
-#define SYS_getpmsg __NR_getpmsg
-#define SYS_clone __NR_clone
-#define SYS_getppid __NR_getppid
-#define SYS_umount2 __NR_umount2
-#define SYS_close __NR_close
-#define SYS_setgid __NR_setgid
-#define SYS_bdflush __NR_bdflush
-#define SYS_vm86old __NR_vm86old
-#define SYS_statfs __NR_statfs
-#define SYS_mount __NR_mount
-#define SYS_sgetmask __NR_sgetmask
-#define SYS_idle __NR_idle
-#define SYS_sigaction __NR_sigaction
-#define SYS_wait4 __NR_wait4
-#define SYS_fork __NR_fork
-#define SYS_setfsuid __NR_setfsuid
-#define SYS_settimeofday __NR_settimeofday
-#define SYS_pwrite __NR_pwrite
-#define SYS_ssetmask __NR_ssetmask
-#define SYS_rt_sigpending __NR_rt_sigpending
-#define SYS_oldfstat __NR_oldfstat
-#define SYS_afs_syscall __NR_afs_syscall
-#define SYS_exit __NR_exit
-#define SYS_sysinfo __NR_sysinfo
-#define SYS_symlink __NR_symlink
-#define SYS_ioctl __NR_ioctl
-#define SYS_ftruncate __NR_ftruncate
-#define SYS_sched_getparam __NR_sched_getparam
-#define SYS_creat __NR_creat
-#define SYS_lchown __NR_lchown
-#define SYS_setresuid __NR_setresuid
-#define SYS_sched_rr_get_interval __NR_sched_rr_get_interval
-#define SYS_fcntl __NR_fcntl
-#define SYS_setsid __NR_setsid
-#define SYS_mprotect __NR_mprotect
-#define SYS_setuid __NR_setuid
-#define SYS_gtty __NR_gtty
-#define SYS_oldlstat __NR_oldlstat
-#define SYS_umask __NR_umask
-#define SYS_iopl __NR_iopl
-#define SYS_kill __NR_kill
-#define SYS_vfork __NR_vfork
-#define SYS_nanosleep __NR_nanosleep
-#define SYS_uname __NR_uname
-#define SYS_stime __NR_stime
-#define SYS_signal __NR_signal
-#define SYS_getitimer __NR_getitimer
-#define SYS_readv __NR_readv
-#define SYS_getcwd __NR_getcwd
-#define SYS_getpriority __NR_getpriority
-#define SYS_msync __NR_msync
-#define SYS_link __NR_link
-#define SYS_sched_setparam __NR_sched_setparam
-#define SYS_getgid __NR_getgid
-#define SYS__newselect __NR__newselect
-#define SYS_getrusage __NR_getrusage
-#define SYS_lock __NR_lock
-#define SYS__llseek __NR__llseek
-#define SYS_sched_yield __NR_sched_yield
-#define SYS_nice __NR_nice
-#define SYS_mmap __NR_mmap
-#define SYS_get_kernel_syms __NR_get_kernel_syms
-#define SYS_setgroups __NR_setgroups
-#define SYS_ulimit __NR_ulimit
-#define SYS_munmap __NR_munmap
-#define SYS_quotactl __NR_quotactl
-#define SYS_getrlimit __NR_getrlimit
-#define SYS_brk __NR_brk
-#define SYS_sched_getscheduler __NR_sched_getscheduler
-#define SYS_personality __NR_personality
-#define SYS_getpid __NR_getpid
-#define SYS_vhangup __NR_vhangup
-#define SYS_ioperm __NR_ioperm
-#define SYS_mremap __NR_mremap
-#define SYS_ptrace __NR_ptrace
-#define SYS_dup __NR_dup
-#define SYS_getsid __NR_getsid
-#define SYS_getegid __NR_getegid
-#define SYS_uselib __NR_uselib
-#define SYS_rt_sigprocmask __NR_rt_sigprocmask
-#define SYS_olduname __NR_olduname
-#define SYS_getuid __NR_getuid
-#define SYS_init_module __NR_init_module
-#define SYS_ipc __NR_ipc
-#define SYS_capget __NR_capget
-#define SYS_getresgid __NR_getresgid
-#define SYS_pipe __NR_pipe
-#define SYS_read __NR_read
-#define SYS_open __NR_open
-#define SYS_setdomainname __NR_setdomainname
-#define SYS_setregid __NR_setregid
-#define SYS_mpx __NR_mpx
-#define SYS_alarm __NR_alarm
-#define SYS_pread __NR_pread
-#define SYS_poll __NR_poll
-#define SYS_flock __NR_flock
-#define SYS_sigsuspend __NR_sigsuspend
-#define SYS_fdatasync __NR_fdatasync
-#define SYS_prctl __NR_prctl
-#define SYS_prof __NR_prof
-#define SYS_sysfs __NR_sysfs
-#define SYS_sethostname __NR_sethostname
-#define SYS_geteuid __NR_geteuid
-#define SYS_swapon __NR_swapon
-#define SYS_capset __NR_capset
-#define SYS_vm86 __NR_vm86
-#define SYS_create_module __NR_create_module
-#define SYS_execve __NR_execve
-#define SYS_utime __NR_utime
-#define SYS_reboot __NR_reboot
-#define SYS_socketcall __NR_socketcall
-#define SYS_fchdir __NR_fchdir
-#define SYS_getresuid __NR_getresuid
-#define SYS_sendfile __NR_sendfile
-#define SYS_time __NR_time
-#define SYS_setreuid __NR_setreuid
-#define SYS_select __NR_select
-#define SYS_ustat __NR_ustat
-#define SYS_mkdir __NR_mkdir
-#define SYS_rmdir __NR_rmdir
-#define SYS_adjtimex __NR_adjtimex
-#define SYS_acct __NR_acct
-#define SYS_sched_setscheduler __NR_sched_setscheduler
-#define SYS_mlockall __NR_mlockall
-#define SYS_fstatfs __NR_fstatfs
-#define SYS_stat __NR_stat
-#define SYS_sigpending __NR_sigpending
-#define SYS_chdir __NR_chdir
-#define SYS_swapoff __NR_swapoff
-#define SYS_rt_sigtimedwait __NR_rt_sigtimedwait
-#define SYS_rt_sigqueueinfo __NR_rt_sigqueueinfo
-#define SYS_syslog __NR_syslog
-#define SYS_fchmod __NR_fchmod
-#define SYS_nfsservctl __NR_nfsservctl
-#define SYS_oldstat __NR_oldstat
-#define SYS_readlink __NR_readlink
-#define SYS_munlockall __NR_munlockall
-#define SYS_stty __NR_stty
-#define SYS_sync __NR_sync
-#define SYS_setitimer __NR_setitimer
-#define SYS_fchown __NR_fchown
-#define SYS_access __NR_access
-#define SYS_sched_get_priority_max __NR_sched_get_priority_max
-#define SYS_gettimeofday __NR_gettimeofday
-#define SYS_mknod __NR_mknod
-#define SYS_sched_get_priority_min __NR_sched_get_priority_min
-#define SYS_oldolduname __NR_oldolduname
-#define SYS_getgroups __NR_getgroups
-#define SYS_chmod __NR_chmod
-#define SYS_mlock __NR_mlock
-#define SYS_unlink __NR_unlink
-#define SYS__sysctl __NR__sysctl
-#define SYS_sigprocmask __NR_sigprocmask
-#define SYS_rt_sigreturn __NR_rt_sigreturn
-#define SYS_lseek __NR_lseek
-#define SYS_setpriority __NR_setpriority
-#define SYS_ftime __NR_ftime
-#define SYS_chown __NR_chown
diff --git a/libc/sysdeps/linux/i386/bits/syscalls.h b/libc/sysdeps/linux/i386/bits/syscalls.h
index ed5fad805..940e9db50 100644
--- a/libc/sysdeps/linux/i386/bits/syscalls.h
+++ b/libc/sysdeps/linux/i386/bits/syscalls.h
@@ -4,6 +4,10 @@
* a difference. Regardless, including asm/unistd.h is hereby officially
* forbidden. Don't do it. It is bad for you. */
+#include <features.h>
+
+#ifndef __UCLIBC_USE_UNIFIED_SYSCALL__
+
#undef __syscall_return
#define __syscall_return(type, res) \
do { \
@@ -157,3 +161,38 @@ __syscall_return(type,__res); \
#endif /* __PIC__ */
+#else
+
+#define unified_syscall_body(name) \
+__asm__ ( \
+".text\n.align 4\n.global "###name"\n.type "###name",@function\n" \
+#name":\nmovb $"__STR_NR_##name \
+",%al;\n jmp __uClibc_syscall\n.Lfe1"###name":\n.size "###name \
+",.Lfe1"###name"-"###name \
+)
+
+#undef _syscall0
+#define _syscall0(type,name) \
+unified_syscall_body(name)
+
+#undef _syscall1
+#define _syscall1(type,name,type1,arg1) \
+unified_syscall_body(name)
+
+#undef _syscall2
+#define _syscall2(type,name,type1,arg1,type2,arg2) \
+unified_syscall_body(name)
+
+#undef _syscall3
+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
+unified_syscall_body(name)
+
+#undef _syscall4
+#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
+unified_syscall_body(name)
+
+#undef _syscall5
+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
+unified_syscall_body(name)
+
+#endif