Linux-2.6.12-rc2
[linux-2.6.git] / arch / h8300 / kernel / syscalls.S
1 /* Systemcall Entry Table */
2 #include <linux/config.h>
3 #include <linux/sys.h>
4 #include <asm/linkage.h>
5 #include <asm/unistd.h>
6         
7 .globl SYMBOL_NAME(sys_call_table)
8
9 #if defined(CONFIG_CPU_H8300H)
10         .h8300h
11 #endif
12 #if defined(CONFIG_CPU_H8S)
13         .h8300s
14 #endif
15         .section .text
16         .align  2
17 SYMBOL_NAME_LABEL(sys_call_table)       
18         .long SYMBOL_NAME(sys_ni_syscall)       /* 0  -  old "setup()" system call*/
19         .long SYMBOL_NAME(sys_exit)
20         .long SYMBOL_NAME(sys_fork)
21         .long SYMBOL_NAME(sys_read)
22         .long SYMBOL_NAME(sys_write)
23         .long SYMBOL_NAME(sys_open)             /* 5 */
24         .long SYMBOL_NAME(sys_close)
25         .long SYMBOL_NAME(sys_waitpid)
26         .long SYMBOL_NAME(sys_creat)
27         .long SYMBOL_NAME(sys_link)
28         .long SYMBOL_NAME(sys_unlink)           /* 10 */
29         .long SYMBOL_NAME(sys_execve)
30         .long SYMBOL_NAME(sys_chdir)
31         .long SYMBOL_NAME(sys_time)
32         .long SYMBOL_NAME(sys_mknod)
33         .long SYMBOL_NAME(sys_chmod)            /* 15 */
34         .long SYMBOL_NAME(sys_chown16)
35         .long SYMBOL_NAME(sys_ni_syscall)                               /* old break syscall holder */
36         .long SYMBOL_NAME(sys_stat)
37         .long SYMBOL_NAME(sys_lseek)
38         .long SYMBOL_NAME(sys_getpid)           /* 20 */
39         .long SYMBOL_NAME(sys_mount)
40         .long SYMBOL_NAME(sys_oldumount)
41         .long SYMBOL_NAME(sys_setuid16)
42         .long SYMBOL_NAME(sys_getuid16)
43         .long SYMBOL_NAME(sys_stime)            /* 25 */
44         .long SYMBOL_NAME(sys_ptrace)
45         .long SYMBOL_NAME(sys_alarm)
46         .long SYMBOL_NAME(sys_fstat)
47         .long SYMBOL_NAME(sys_pause)
48         .long SYMBOL_NAME(sys_utime)            /* 30 */
49         .long SYMBOL_NAME(sys_ni_syscall)                               /* old stty syscall holder */
50         .long SYMBOL_NAME(sys_ni_syscall)                               /* old gtty syscall holder */
51         .long SYMBOL_NAME(sys_access)
52         .long SYMBOL_NAME(sys_nice)
53         .long SYMBOL_NAME(sys_ni_syscall)       /* 35 */                /* old ftime syscall holder */
54         .long SYMBOL_NAME(sys_sync)
55         .long SYMBOL_NAME(sys_kill)
56         .long SYMBOL_NAME(sys_rename)
57         .long SYMBOL_NAME(sys_mkdir)
58         .long SYMBOL_NAME(sys_rmdir)            /* 40 */
59         .long SYMBOL_NAME(sys_dup)
60         .long SYMBOL_NAME(sys_pipe)
61         .long SYMBOL_NAME(sys_times)
62         .long SYMBOL_NAME(sys_ni_syscall)                               /* old prof syscall holder */
63         .long SYMBOL_NAME(sys_brk)              /* 45 */
64         .long SYMBOL_NAME(sys_setgid16)
65         .long SYMBOL_NAME(sys_getgid16)
66         .long SYMBOL_NAME(sys_signal)
67         .long SYMBOL_NAME(sys_geteuid16)
68         .long SYMBOL_NAME(sys_getegid16)        /* 50 */
69         .long SYMBOL_NAME(sys_acct)
70         .long SYMBOL_NAME(sys_umount)                                   /* recycled never used phys() */
71         .long SYMBOL_NAME(sys_ni_syscall)                               /* old lock syscall holder */
72         .long SYMBOL_NAME(sys_ioctl)
73         .long SYMBOL_NAME(sys_fcntl)            /* 55 */
74         .long SYMBOL_NAME(sys_ni_syscall)                               /* old mpx syscall holder */
75         .long SYMBOL_NAME(sys_setpgid)
76         .long SYMBOL_NAME(sys_ni_syscall)                               /* old ulimit syscall holder */
77         .long SYMBOL_NAME(sys_ni_syscall)
78         .long SYMBOL_NAME(sys_umask)            /* 60 */
79         .long SYMBOL_NAME(sys_chroot)
80         .long SYMBOL_NAME(sys_ustat)
81         .long SYMBOL_NAME(sys_dup2)
82         .long SYMBOL_NAME(sys_getppid)
83         .long SYMBOL_NAME(sys_getpgrp)          /* 65 */
84         .long SYMBOL_NAME(sys_setsid)
85         .long SYMBOL_NAME(sys_sigaction)
86         .long SYMBOL_NAME(sys_sgetmask)
87         .long SYMBOL_NAME(sys_ssetmask)
88         .long SYMBOL_NAME(sys_setreuid16)       /* 70 */
89         .long SYMBOL_NAME(sys_setregid16)
90         .long SYMBOL_NAME(sys_sigsuspend)
91         .long SYMBOL_NAME(sys_sigpending)
92         .long SYMBOL_NAME(sys_sethostname)
93         .long SYMBOL_NAME(sys_setrlimit)        /* 75 */
94         .long SYMBOL_NAME(sys_old_getrlimit)
95         .long SYMBOL_NAME(sys_getrusage)
96         .long SYMBOL_NAME(sys_gettimeofday)
97         .long SYMBOL_NAME(sys_settimeofday)
98         .long SYMBOL_NAME(sys_getgroups16)      /* 80 */
99         .long SYMBOL_NAME(sys_setgroups16)
100         .long SYMBOL_NAME(old_select)
101         .long SYMBOL_NAME(sys_symlink)
102         .long SYMBOL_NAME(sys_lstat)
103         .long SYMBOL_NAME(sys_readlink)         /* 85 */
104         .long SYMBOL_NAME(sys_uselib)
105         .long SYMBOL_NAME(sys_swapon)
106         .long SYMBOL_NAME(sys_reboot)
107         .long SYMBOL_NAME(old_readdir)
108         .long SYMBOL_NAME(old_mmap)             /* 90 */
109         .long SYMBOL_NAME(sys_munmap)
110         .long SYMBOL_NAME(sys_truncate)
111         .long SYMBOL_NAME(sys_ftruncate)
112         .long SYMBOL_NAME(sys_fchmod)
113         .long SYMBOL_NAME(sys_fchown16)         /* 95 */
114         .long SYMBOL_NAME(sys_getpriority)
115         .long SYMBOL_NAME(sys_setpriority)
116         .long SYMBOL_NAME(sys_ni_syscall)                               /* old profil syscall holder */
117         .long SYMBOL_NAME(sys_statfs)
118         .long SYMBOL_NAME(sys_fstatfs)          /* 100 */
119         .long SYMBOL_NAME(sys_ni_syscall)       /* ioperm for i386 */
120         .long SYMBOL_NAME(sys_socketcall)
121         .long SYMBOL_NAME(sys_syslog)
122         .long SYMBOL_NAME(sys_setitimer)
123         .long SYMBOL_NAME(sys_getitimer)        /* 105 */
124         .long SYMBOL_NAME(sys_newstat)
125         .long SYMBOL_NAME(sys_newlstat)
126         .long SYMBOL_NAME(sys_newfstat)
127         .long SYMBOL_NAME(sys_ni_syscall)
128         .long SYMBOL_NAME(sys_ni_syscall)       /* iopl for i386 */ /* 110 */
129         .long SYMBOL_NAME(sys_vhangup)
130         .long SYMBOL_NAME(sys_ni_syscall)       /* obsolete idle() syscall */
131         .long SYMBOL_NAME(sys_ni_syscall)       /* vm86old for i386 */
132         .long SYMBOL_NAME(sys_wait4)
133         .long SYMBOL_NAME(sys_swapoff)          /* 115 */
134         .long SYMBOL_NAME(sys_sysinfo)
135         .long SYMBOL_NAME(sys_ipc)
136         .long SYMBOL_NAME(sys_fsync)
137         .long SYMBOL_NAME(sys_sigreturn)
138         .long SYMBOL_NAME(sys_clone)            /* 120 */
139         .long SYMBOL_NAME(sys_setdomainname)
140         .long SYMBOL_NAME(sys_newuname)
141         .long SYMBOL_NAME(sys_cacheflush)       /* modify_ldt for i386 */
142         .long SYMBOL_NAME(sys_adjtimex)
143         .long SYMBOL_NAME(sys_ni_syscall)       /* 125 sys_mprotect */
144         .long SYMBOL_NAME(sys_sigprocmask)
145         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_create_module */
146         .long SYMBOL_NAME(sys_init_module)
147         .long SYMBOL_NAME(sys_delete_module)
148         .long SYMBOL_NAME(sys_ni_syscall)       /* 130 sys_get_kernel_syms */
149         .long SYMBOL_NAME(sys_quotactl)
150         .long SYMBOL_NAME(sys_getpgid)
151         .long SYMBOL_NAME(sys_fchdir)
152         .long SYMBOL_NAME(sys_bdflush)
153         .long SYMBOL_NAME(sys_sysfs)            /* 135 */
154         .long SYMBOL_NAME(sys_personality)
155         .long SYMBOL_NAME(sys_ni_syscall)       /* for afs_syscall */
156         .long SYMBOL_NAME(sys_setfsuid16)
157         .long SYMBOL_NAME(sys_setfsgid16)
158         .long SYMBOL_NAME(sys_llseek)           /* 140 */
159         .long SYMBOL_NAME(sys_getdents)
160         .long SYMBOL_NAME(sys_select)
161         .long SYMBOL_NAME(sys_flock)
162         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_msync */
163         .long SYMBOL_NAME(sys_readv)            /* 145 */
164         .long SYMBOL_NAME(sys_writev)
165         .long SYMBOL_NAME(sys_getsid)
166         .long SYMBOL_NAME(sys_fdatasync)
167         .long SYMBOL_NAME(sys_sysctl)
168         .long SYMBOL_NAME(sys_ni_syscall)       /* 150 sys_mlock */
169         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_munlock */
170         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_mlockall */
171         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_munlockall */
172         .long SYMBOL_NAME(sys_sched_setparam)
173         .long SYMBOL_NAME(sys_sched_getparam)   /* 155 */
174         .long SYMBOL_NAME(sys_sched_setscheduler)
175         .long SYMBOL_NAME(sys_sched_getscheduler)
176         .long SYMBOL_NAME(sys_sched_yield)
177         .long SYMBOL_NAME(sys_sched_get_priority_max)
178         .long SYMBOL_NAME(sys_sched_get_priority_min)  /* 160 */
179         .long SYMBOL_NAME(sys_sched_rr_get_interval)
180         .long SYMBOL_NAME(sys_nanosleep)
181         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_mremap */
182         .long SYMBOL_NAME(sys_setresuid16)
183         .long SYMBOL_NAME(sys_getresuid16)      /* 165 */
184         .long SYMBOL_NAME(sys_ni_syscall)       /* for vm86 */
185         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_query_module */
186         .long SYMBOL_NAME(sys_poll)
187         .long SYMBOL_NAME(sys_nfsservctl)
188         .long SYMBOL_NAME(sys_setresgid16)      /* 170 */
189         .long SYMBOL_NAME(sys_getresgid16)
190         .long SYMBOL_NAME(sys_prctl)
191         .long SYMBOL_NAME(sys_rt_sigreturn)
192         .long SYMBOL_NAME(sys_rt_sigaction)
193         .long SYMBOL_NAME(sys_rt_sigprocmask)   /* 175 */
194         .long SYMBOL_NAME(sys_rt_sigpending)
195         .long SYMBOL_NAME(sys_rt_sigtimedwait)
196         .long SYMBOL_NAME(sys_rt_sigqueueinfo)
197         .long SYMBOL_NAME(sys_rt_sigsuspend)
198         .long SYMBOL_NAME(sys_pread64)          /* 180 */
199         .long SYMBOL_NAME(sys_pwrite64)
200         .long SYMBOL_NAME(sys_lchown16);
201         .long SYMBOL_NAME(sys_getcwd)
202         .long SYMBOL_NAME(sys_capget)
203         .long SYMBOL_NAME(sys_capset)           /* 185 */
204         .long SYMBOL_NAME(sys_sigaltstack)
205         .long SYMBOL_NAME(sys_sendfile)
206         .long SYMBOL_NAME(sys_ni_syscall)               /* streams1 */
207         .long SYMBOL_NAME(sys_ni_syscall)               /* streams2 */
208         .long SYMBOL_NAME(sys_vfork)            /* 190 */
209         .long SYMBOL_NAME(sys_getrlimit)
210         .long SYMBOL_NAME(sys_mmap2)
211         .long SYMBOL_NAME(sys_truncate64)
212         .long SYMBOL_NAME(sys_ftruncate64)
213         .long SYMBOL_NAME(sys_stat64)           /* 195 */
214         .long SYMBOL_NAME(sys_lstat64)
215         .long SYMBOL_NAME(sys_fstat64)
216         .long SYMBOL_NAME(sys_chown)
217         .long SYMBOL_NAME(sys_getuid)
218         .long SYMBOL_NAME(sys_getgid)           /* 200 */
219         .long SYMBOL_NAME(sys_geteuid)
220         .long SYMBOL_NAME(sys_getegid)
221         .long SYMBOL_NAME(sys_setreuid)
222         .long SYMBOL_NAME(sys_setregid)
223         .long SYMBOL_NAME(sys_getgroups)        /* 205 */
224         .long SYMBOL_NAME(sys_setgroups)
225         .long SYMBOL_NAME(sys_fchown)
226         .long SYMBOL_NAME(sys_setresuid)
227         .long SYMBOL_NAME(sys_getresuid)
228         .long SYMBOL_NAME(sys_setresgid)        /* 210 */
229         .long SYMBOL_NAME(sys_getresgid)
230         .long SYMBOL_NAME(sys_lchown)
231         .long SYMBOL_NAME(sys_setuid)
232         .long SYMBOL_NAME(sys_setgid)
233         .long SYMBOL_NAME(sys_setfsuid)         /* 215 */
234         .long SYMBOL_NAME(sys_setfsgid)
235         .long SYMBOL_NAME(sys_pivot_root)
236         .long SYMBOL_NAME(sys_ni_syscall)
237         .long SYMBOL_NAME(sys_ni_syscall)
238         .long SYMBOL_NAME(sys_getdents64)       /* 220 */
239         .long SYMBOL_NAME(sys_fcntl64)
240         .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for TUX */
241         .long SYMBOL_NAME(sys_ni_syscall)
242         .long SYMBOL_NAME(sys_gettid)
243         .long SYMBOL_NAME(sys_ni_syscall)       /* 225 */ /* sys_readahead */
244         .long SYMBOL_NAME(sys_setxattr)
245         .long SYMBOL_NAME(sys_lsetxattr)
246         .long SYMBOL_NAME(sys_fsetxattr)
247         .long SYMBOL_NAME(sys_getxattr)
248         .long SYMBOL_NAME(sys_lgetxattr)        /* 230 */
249         .long SYMBOL_NAME(sys_fgetxattr)
250         .long SYMBOL_NAME(sys_listxattr)
251         .long SYMBOL_NAME(sys_llistxattr)
252         .long SYMBOL_NAME(sys_flistxattr)
253         .long SYMBOL_NAME(sys_removexattr)      /* 235 */
254         .long SYMBOL_NAME(sys_lremovexattr)
255         .long SYMBOL_NAME(sys_fremovexattr)
256         .long SYMBOL_NAME(sys_tkill)
257         .long SYMBOL_NAME(sys_sendfile64)
258         .long SYMBOL_NAME(sys_futex)            /* 240 */
259         .long SYMBOL_NAME(sys_sched_setaffinity)
260         .long SYMBOL_NAME(sys_sched_getaffinity)
261         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_set_thread_area */
262         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_get_thread_area */
263         .long SYMBOL_NAME(sys_io_setup)         /* 245 */
264         .long SYMBOL_NAME(sys_io_destroy)
265         .long SYMBOL_NAME(sys_io_getevents)
266         .long SYMBOL_NAME(sys_io_submit)
267         .long SYMBOL_NAME(sys_io_cancel)
268         .long SYMBOL_NAME(sys_fadvise64)        /* 250 */
269         .long SYMBOL_NAME(sys_ni_syscall)
270         .long SYMBOL_NAME(sys_exit_group)
271         .long SYMBOL_NAME(sys_lookup_dcookie)
272         .long SYMBOL_NAME(sys_epoll_create)
273         .long SYMBOL_NAME(sys_epoll_ctl)        /* 255 */
274         .long SYMBOL_NAME(sys_epoll_wait)
275         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_remap_file_pages */
276         .long SYMBOL_NAME(sys_set_tid_address)
277         .long SYMBOL_NAME(sys_timer_create)
278         .long SYMBOL_NAME(sys_timer_settime)    /* 260 */
279         .long SYMBOL_NAME(sys_timer_gettime)
280         .long SYMBOL_NAME(sys_timer_getoverrun)
281         .long SYMBOL_NAME(sys_timer_delete)
282         .long SYMBOL_NAME(sys_clock_settime)
283         .long SYMBOL_NAME(sys_clock_gettime)    /* 265 */
284         .long SYMBOL_NAME(sys_clock_getres)
285         .long SYMBOL_NAME(sys_clock_nanosleep)
286         .long SYMBOL_NAME(sys_statfs64)
287         .long SYMBOL_NAME(sys_fstatfs64)        
288         .long SYMBOL_NAME(sys_tgkill)           /* 270 */
289         .long SYMBOL_NAME(sys_utimes)
290         .long SYMBOL_NAME(sys_fadvise64_64)
291         .long SYMBOL_NAME(sys_ni_syscall)       /* sys_vserver */
292         .long SYMBOL_NAME(sys_mbind)
293         .long SYMBOL_NAME(sys_get_mempolicy)
294         .long SYMBOL_NAME(sys_set_mempolicy)
295         .long SYMBOL_NAME(sys_mq_open)
296         .long SYMBOL_NAME(sys_mq_unlink)
297         .long SYMBOL_NAME(sys_mq_timedsend)
298         .long SYMBOL_NAME(sys_mq_timedreceive)  /* 280 */
299         .long SYMBOL_NAME(sys_mq_notify)
300         .long SYMBOL_NAME(sys_mq_getsetattr)
301         .long SYMBOL_NAME(sys_ni_syscall)       /* reserved for kexec */
302         .long SYMBOL_NAME(sys_waitid)
303         .long SYMBOL_NAME(sys_ni_syscall)       /* 285 */ /* available */
304         .long SYMBOL_NAME(sys_add_key)
305         .long SYMBOL_NAME(sys_request_key)
306         .long SYMBOL_NAME(sys_keyctl)
307
308         .rept NR_syscalls-(.-SYMBOL_NAME(sys_call_table))/4
309                 .long SYMBOL_NAME(sys_ni_syscall)
310         .endr
311
312         .macro  call_sp addr
313         mov.l   #SYMBOL_NAME(\addr),er6
314         bra     SYMBOL_NAME(syscall_trampoline):8
315         .endm
316
317 SYMBOL_NAME_LABEL(sys_clone)    
318         call_sp h8300_clone
319         
320 SYMBOL_NAME_LABEL(sys_sigsuspend)
321         call_sp do_sigsuspend
322
323 SYMBOL_NAME_LABEL(sys_rt_sigsuspend)
324         call_sp do_rt_sigsuspend
325
326 SYMBOL_NAME_LABEL(sys_sigreturn)
327         call_sp do_sigreturn
328
329 SYMBOL_NAME_LABEL(sys_rt_sigreturn)
330         call_sp do_rt_sigreturn
331
332 SYMBOL_NAME_LABEL(sys_fork)
333         call_sp h8300_fork
334
335 SYMBOL_NAME_LABEL(sys_vfork)
336         call_sp h8300_vfork
337
338 SYMBOL_NAME_LABEL(syscall_trampoline)
339         mov.l   sp,er0
340         jmp     @er6