diff options
author | Nicolas Pitre <nico@cam.org> | 2006-01-14 11:36:12 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-14 11:36:12 -0500 |
commit | dd35afc22b76766e827c9e67ebc4b7bf6e31ecab (patch) | |
tree | 3336355470c2d57a2b11a47f8d9bcc1e86546735 /arch/arm/kernel/calls.S | |
parent | 687ad0191488a067b3b3cc94f670cc21f93811e1 (diff) |
[ARM] 3110/5: old ABI compat: multi-ABI syscall entry support
Patch from Nicolas Pitre
This patch adds the required code to support both user space ABIs at
the same time. A second syscall table is created to include legacy ABI
syscalls that need an ABI compat wrapper.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/calls.S')
-rw-r--r-- | arch/arm/kernel/calls.S | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 8c0bf04814b1..75e6f9a94713 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
@@ -13,7 +13,7 @@ | |||
13 | #define NR_syscalls 328 | 13 | #define NR_syscalls 328 |
14 | #else | 14 | #else |
15 | 15 | ||
16 | __syscall_start: | 16 | 100: |
17 | /* 0 */ .long sys_restart_syscall | 17 | /* 0 */ .long sys_restart_syscall |
18 | .long sys_exit | 18 | .long sys_exit |
19 | .long sys_fork_wrapper | 19 | .long sys_fork_wrapper |
@@ -27,7 +27,7 @@ __syscall_start: | |||
27 | /* 10 */ .long sys_unlink | 27 | /* 10 */ .long sys_unlink |
28 | .long sys_execve_wrapper | 28 | .long sys_execve_wrapper |
29 | .long sys_chdir | 29 | .long sys_chdir |
30 | .long sys_time /* used by libc4 */ | 30 | .long OBSOLETE(sys_time) /* used by libc4 */ |
31 | .long sys_mknod | 31 | .long sys_mknod |
32 | /* 15 */ .long sys_chmod | 32 | /* 15 */ .long sys_chmod |
33 | .long sys_lchown16 | 33 | .long sys_lchown16 |
@@ -36,15 +36,15 @@ __syscall_start: | |||
36 | .long sys_lseek | 36 | .long sys_lseek |
37 | /* 20 */ .long sys_getpid | 37 | /* 20 */ .long sys_getpid |
38 | .long sys_mount | 38 | .long sys_mount |
39 | .long sys_oldumount /* used by libc4 */ | 39 | .long OBSOLETE(sys_oldumount) /* used by libc4 */ |
40 | .long sys_setuid16 | 40 | .long sys_setuid16 |
41 | .long sys_getuid16 | 41 | .long sys_getuid16 |
42 | /* 25 */ .long sys_stime | 42 | /* 25 */ .long OBSOLETE(sys_stime) |
43 | .long sys_ptrace | 43 | .long sys_ptrace |
44 | .long sys_alarm /* used by libc4 */ | 44 | .long OBSOLETE(sys_alarm) /* used by libc4 */ |
45 | .long sys_ni_syscall /* was sys_fstat */ | 45 | .long sys_ni_syscall /* was sys_fstat */ |
46 | .long sys_pause | 46 | .long sys_pause |
47 | /* 30 */ .long sys_utime /* used by libc4 */ | 47 | /* 30 */ .long OBSOLETE(sys_utime) /* used by libc4 */ |
48 | .long sys_ni_syscall /* was sys_stty */ | 48 | .long sys_ni_syscall /* was sys_stty */ |
49 | .long sys_ni_syscall /* was sys_getty */ | 49 | .long sys_ni_syscall /* was sys_getty */ |
50 | .long sys_access | 50 | .long sys_access |
@@ -90,21 +90,21 @@ __syscall_start: | |||
90 | .long sys_sigpending | 90 | .long sys_sigpending |
91 | .long sys_sethostname | 91 | .long sys_sethostname |
92 | /* 75 */ .long sys_setrlimit | 92 | /* 75 */ .long sys_setrlimit |
93 | .long sys_old_getrlimit /* used by libc4 */ | 93 | .long OBSOLETE(sys_old_getrlimit) /* used by libc4 */ |
94 | .long sys_getrusage | 94 | .long sys_getrusage |
95 | .long sys_gettimeofday | 95 | .long sys_gettimeofday |
96 | .long sys_settimeofday | 96 | .long sys_settimeofday |
97 | /* 80 */ .long sys_getgroups16 | 97 | /* 80 */ .long sys_getgroups16 |
98 | .long sys_setgroups16 | 98 | .long sys_setgroups16 |
99 | .long old_select /* used by libc4 */ | 99 | .long OBSOLETE(old_select) /* used by libc4 */ |
100 | .long sys_symlink | 100 | .long sys_symlink |
101 | .long sys_ni_syscall /* was sys_lstat */ | 101 | .long sys_ni_syscall /* was sys_lstat */ |
102 | /* 85 */ .long sys_readlink | 102 | /* 85 */ .long sys_readlink |
103 | .long sys_uselib | 103 | .long sys_uselib |
104 | .long sys_swapon | 104 | .long sys_swapon |
105 | .long sys_reboot | 105 | .long sys_reboot |
106 | .long old_readdir /* used by libc4 */ | 106 | .long OBSOLETE(old_readdir) /* used by libc4 */ |
107 | /* 90 */ .long old_mmap /* used by libc4 */ | 107 | /* 90 */ .long OBSOLETE(old_mmap) /* used by libc4 */ |
108 | .long sys_munmap | 108 | .long sys_munmap |
109 | .long sys_truncate | 109 | .long sys_truncate |
110 | .long sys_ftruncate | 110 | .long sys_ftruncate |
@@ -116,7 +116,7 @@ __syscall_start: | |||
116 | .long sys_statfs | 116 | .long sys_statfs |
117 | /* 100 */ .long sys_fstatfs | 117 | /* 100 */ .long sys_fstatfs |
118 | .long sys_ni_syscall | 118 | .long sys_ni_syscall |
119 | .long sys_socketcall | 119 | .long OBSOLETE(sys_socketcall) |
120 | .long sys_syslog | 120 | .long sys_syslog |
121 | .long sys_setitimer | 121 | .long sys_setitimer |
122 | /* 105 */ .long sys_getitimer | 122 | /* 105 */ .long sys_getitimer |
@@ -127,11 +127,11 @@ __syscall_start: | |||
127 | /* 110 */ .long sys_ni_syscall /* was sys_iopl */ | 127 | /* 110 */ .long sys_ni_syscall /* was sys_iopl */ |
128 | .long sys_vhangup | 128 | .long sys_vhangup |
129 | .long sys_ni_syscall | 129 | .long sys_ni_syscall |
130 | .long sys_syscall /* call a syscall */ | 130 | .long OBSOLETE(sys_syscall) /* call a syscall */ |
131 | .long sys_wait4 | 131 | .long sys_wait4 |
132 | /* 115 */ .long sys_swapoff | 132 | /* 115 */ .long sys_swapoff |
133 | .long sys_sysinfo | 133 | .long sys_sysinfo |
134 | .long sys_ipc | 134 | .long OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)) |
135 | .long sys_fsync | 135 | .long sys_fsync |
136 | .long sys_sigreturn_wrapper | 136 | .long sys_sigreturn_wrapper |
137 | /* 120 */ .long sys_clone_wrapper | 137 | /* 120 */ .long sys_clone_wrapper |
@@ -194,8 +194,8 @@ __syscall_start: | |||
194 | .long sys_rt_sigtimedwait | 194 | .long sys_rt_sigtimedwait |
195 | .long sys_rt_sigqueueinfo | 195 | .long sys_rt_sigqueueinfo |
196 | .long sys_rt_sigsuspend_wrapper | 196 | .long sys_rt_sigsuspend_wrapper |
197 | /* 180 */ .long sys_pread64 | 197 | /* 180 */ .long ABI(sys_pread64, sys_oabi_pread64) |
198 | .long sys_pwrite64 | 198 | .long ABI(sys_pwrite64, sys_oabi_pwrite64) |
199 | .long sys_chown16 | 199 | .long sys_chown16 |
200 | .long sys_getcwd | 200 | .long sys_getcwd |
201 | .long sys_capget | 201 | .long sys_capget |
@@ -207,11 +207,11 @@ __syscall_start: | |||
207 | /* 190 */ .long sys_vfork_wrapper | 207 | /* 190 */ .long sys_vfork_wrapper |
208 | .long sys_getrlimit | 208 | .long sys_getrlimit |
209 | .long sys_mmap2 | 209 | .long sys_mmap2 |
210 | .long sys_truncate64 | 210 | .long ABI(sys_truncate64, sys_oabi_truncate64) |
211 | .long sys_ftruncate64 | 211 | .long ABI(sys_ftruncate64, sys_oabi_ftruncate64) |
212 | /* 195 */ .long sys_stat64 | 212 | /* 195 */ .long ABI(sys_stat64, sys_oabi_stat64) |
213 | .long sys_lstat64 | 213 | .long ABI(sys_lstat64, sys_oabi_lstat64) |
214 | .long sys_fstat64 | 214 | .long ABI(sys_fstat64, sys_oabi_fstat64) |
215 | .long sys_lchown | 215 | .long sys_lchown |
216 | .long sys_getuid | 216 | .long sys_getuid |
217 | /* 200 */ .long sys_getgid | 217 | /* 200 */ .long sys_getgid |
@@ -235,11 +235,11 @@ __syscall_start: | |||
235 | .long sys_pivot_root | 235 | .long sys_pivot_root |
236 | .long sys_mincore | 236 | .long sys_mincore |
237 | /* 220 */ .long sys_madvise | 237 | /* 220 */ .long sys_madvise |
238 | .long sys_fcntl64 | 238 | .long ABI(sys_fcntl64, sys_oabi_fcntl64) |
239 | .long sys_ni_syscall /* TUX */ | 239 | .long sys_ni_syscall /* TUX */ |
240 | .long sys_ni_syscall | 240 | .long sys_ni_syscall |
241 | .long sys_gettid | 241 | .long sys_gettid |
242 | /* 225 */ .long sys_readahead | 242 | /* 225 */ .long ABI(sys_readahead, sys_oabi_readahead) |
243 | .long sys_setxattr | 243 | .long sys_setxattr |
244 | .long sys_lsetxattr | 244 | .long sys_lsetxattr |
245 | .long sys_fsetxattr | 245 | .long sys_fsetxattr |
@@ -265,8 +265,8 @@ __syscall_start: | |||
265 | .long sys_exit_group | 265 | .long sys_exit_group |
266 | .long sys_lookup_dcookie | 266 | .long sys_lookup_dcookie |
267 | /* 250 */ .long sys_epoll_create | 267 | /* 250 */ .long sys_epoll_create |
268 | .long sys_epoll_ctl | 268 | .long ABI(sys_epoll_ctl, sys_oabi_epoll_ctl) |
269 | .long sys_epoll_wait | 269 | .long ABI(sys_epoll_wait, sys_oabi_epoll_wait) |
270 | .long sys_remap_file_pages | 270 | .long sys_remap_file_pages |
271 | .long sys_ni_syscall /* sys_set_thread_area */ | 271 | .long sys_ni_syscall /* sys_set_thread_area */ |
272 | /* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ | 272 | /* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ |
@@ -312,7 +312,7 @@ __syscall_start: | |||
312 | /* 295 */ .long sys_getsockopt | 312 | /* 295 */ .long sys_getsockopt |
313 | .long sys_sendmsg | 313 | .long sys_sendmsg |
314 | .long sys_recvmsg | 314 | .long sys_recvmsg |
315 | .long sys_semop | 315 | .long ABI(sys_semop, sys_oabi_semop) |
316 | .long sys_semget | 316 | .long sys_semget |
317 | /* 300 */ .long sys_semctl | 317 | /* 300 */ .long sys_semctl |
318 | .long sys_msgsnd | 318 | .long sys_msgsnd |
@@ -326,7 +326,7 @@ __syscall_start: | |||
326 | .long sys_add_key | 326 | .long sys_add_key |
327 | /* 310 */ .long sys_request_key | 327 | /* 310 */ .long sys_request_key |
328 | .long sys_keyctl | 328 | .long sys_keyctl |
329 | .long sys_semtimedop | 329 | .long ABI(sys_semtimedop, sys_oabi_semtimedop) |
330 | /* vserver */ .long sys_ni_syscall | 330 | /* vserver */ .long sys_ni_syscall |
331 | .long sys_ioprio_set | 331 | .long sys_ioprio_set |
332 | /* 315 */ .long sys_ioprio_get | 332 | /* 315 */ .long sys_ioprio_get |
@@ -336,9 +336,8 @@ __syscall_start: | |||
336 | .long sys_mbind | 336 | .long sys_mbind |
337 | /* 320 */ .long sys_get_mempolicy | 337 | /* 320 */ .long sys_get_mempolicy |
338 | .long sys_set_mempolicy | 338 | .long sys_set_mempolicy |
339 | __syscall_end: | ||
340 | 339 | ||
341 | .rept NR_syscalls - (__syscall_end - __syscall_start) / 4 | 340 | .rept NR_syscalls - (. - 100b) / 4 |
342 | .long sys_ni_syscall | 341 | .long sys_ni_syscall |
343 | .endr | 342 | .endr |
344 | #endif | 343 | #endif |