xref: /linux/arch/m68k/kernel/entry.S (revision 5e8d780d745c1619aba81fe7166c5a4b5cad2b84)
1/* -*- mode: asm -*-
2 *
3 *  linux/arch/m68k/kernel/entry.S
4 *
5 *  Copyright (C) 1991, 1992  Linus Torvalds
6 *
7 * This file is subject to the terms and conditions of the GNU General Public
8 * License.  See the file README.legal in the main directory of this archive
9 * for more details.
10 *
11 * Linux/m68k support by Hamish Macdonald
12 *
13 * 68060 fixes by Jesper Skov
14 *
15 */
16
17/*
18 * entry.S  contains the system-call and fault low-level handling routines.
19 * This also contains the timer-interrupt handler, as well as all interrupts
20 * and faults that can result in a task-switch.
21 *
22 * NOTE: This code handles signal-recognition, which happens every time
23 * after a timer-interrupt and after each system call.
24 *
25 */
26
27/*
28 * 12/03/96 Jes: Currently we only support m68k single-cpu systems, so
29 *               all pointers that used to be 'current' are now entry
30 *               number 0 in the 'current_set' list.
31 *
32 *  6/05/00 RZ:	 addedd writeback completion after return from sighandler
33 *		 for 68040
34 */
35
36#include <linux/config.h>
37#include <linux/linkage.h>
38#include <asm/entry.h>
39#include <asm/errno.h>
40#include <asm/setup.h>
41#include <asm/segment.h>
42#include <asm/traps.h>
43#include <asm/unistd.h>
44
45#include <asm/asm-offsets.h>
46
47.globl system_call, buserr, trap, resume
48.globl sys_call_table
49.globl sys_fork, sys_clone, sys_vfork
50.globl ret_from_interrupt, bad_interrupt
51.globl auto_irqhandler_fixup
52.globl user_irqvec_fixup, user_irqhandler_fixup
53
54.text
55ENTRY(buserr)
56	SAVE_ALL_INT
57	GET_CURRENT(%d0)
58	movel	%sp,%sp@-		| stack frame pointer argument
59	bsrl	buserr_c
60	addql	#4,%sp
61	jra	.Lret_from_exception
62
63ENTRY(trap)
64	SAVE_ALL_INT
65	GET_CURRENT(%d0)
66	movel	%sp,%sp@-		| stack frame pointer argument
67	bsrl	trap_c
68	addql	#4,%sp
69	jra	.Lret_from_exception
70
71	| After a fork we jump here directly from resume,
72	| so that %d1 contains the previous task
73	| schedule_tail now used regardless of CONFIG_SMP
74ENTRY(ret_from_fork)
75	movel	%d1,%sp@-
76	jsr	schedule_tail
77	addql	#4,%sp
78	jra	.Lret_from_exception
79
80do_trace_entry:
81	movel	#-ENOSYS,%sp@(PT_D0)	| needed for strace
82	subql	#4,%sp
83	SAVE_SWITCH_STACK
84	jbsr	syscall_trace
85	RESTORE_SWITCH_STACK
86	addql	#4,%sp
87	movel	%sp@(PT_ORIG_D0),%d0
88	cmpl	#NR_syscalls,%d0
89	jcs	syscall
90badsys:
91	movel	#-ENOSYS,%sp@(PT_D0)
92	jra	ret_from_syscall
93
94do_trace_exit:
95	subql	#4,%sp
96	SAVE_SWITCH_STACK
97	jbsr	syscall_trace
98	RESTORE_SWITCH_STACK
99	addql	#4,%sp
100	jra	.Lret_from_exception
101
102ENTRY(ret_from_signal)
103	RESTORE_SWITCH_STACK
104	addql	#4,%sp
105/* on 68040 complete pending writebacks if any */
106#ifdef CONFIG_M68040
107	bfextu	%sp@(PT_VECTOR){#0,#4},%d0
108	subql	#7,%d0				| bus error frame ?
109	jbne	1f
110	movel	%sp,%sp@-
111	jbsr	berr_040cleanup
112	addql	#4,%sp
1131:
114#endif
115	jra	.Lret_from_exception
116
117ENTRY(system_call)
118	SAVE_ALL_SYS
119
120	GET_CURRENT(%d1)
121	| save top of frame
122	movel	%sp,%curptr@(TASK_THREAD+THREAD_ESP0)
123
124	| syscall trace?
125	tstb	%curptr@(TASK_INFO+TINFO_FLAGS+2)
126	jmi	do_trace_entry
127	cmpl	#NR_syscalls,%d0
128	jcc	badsys
129syscall:
130	jbsr	@(sys_call_table,%d0:l:4)@(0)
131	movel	%d0,%sp@(PT_D0)		| save the return value
132ret_from_syscall:
133	|oriw	#0x0700,%sr
134	movew	%curptr@(TASK_INFO+TINFO_FLAGS+2),%d0
135	jne	syscall_exit_work
1361:	RESTORE_ALL
137
138syscall_exit_work:
139	btst	#5,%sp@(PT_SR)		| check if returning to kernel
140	bnes	1b			| if so, skip resched, signals
141	lslw	#1,%d0
142	jcs	do_trace_exit
143	jmi	do_delayed_trace
144	lslw	#8,%d0
145	jmi	do_signal_return
146	pea	resume_userspace
147	jra	schedule
148
149
150ENTRY(ret_from_exception)
151.Lret_from_exception:
152	btst	#5,%sp@(PT_SR)		| check if returning to kernel
153	bnes	1f			| if so, skip resched, signals
154	| only allow interrupts when we are really the last one on the
155	| kernel stack, otherwise stack overflow can occur during
156	| heavy interrupt load
157	andw	#ALLOWINT,%sr
158
159resume_userspace:
160	moveb	%curptr@(TASK_INFO+TINFO_FLAGS+3),%d0
161	jne	exit_work
1621:	RESTORE_ALL
163
164exit_work:
165	| save top of frame
166	movel	%sp,%curptr@(TASK_THREAD+THREAD_ESP0)
167	lslb	#1,%d0
168	jmi	do_signal_return
169	pea	resume_userspace
170	jra	schedule
171
172
173do_signal_return:
174	|andw	#ALLOWINT,%sr
175	subql	#4,%sp			| dummy return address
176	SAVE_SWITCH_STACK
177	pea	%sp@(SWITCH_STACK_SIZE)
178	clrl	%sp@-
179	bsrl	do_signal
180	addql	#8,%sp
181	RESTORE_SWITCH_STACK
182	addql	#4,%sp
183	jbra	resume_userspace
184
185do_delayed_trace:
186	bclr	#7,%sp@(PT_SR)		| clear trace bit in SR
187	pea	1			| send SIGTRAP
188	movel	%curptr,%sp@-
189	pea	LSIGTRAP
190	jbsr	send_sig
191	addql	#8,%sp
192	addql	#4,%sp
193	jbra	resume_userspace
194
195
196/* This is the main interrupt handler for autovector interrupts */
197
198ENTRY(auto_inthandler)
199	SAVE_ALL_INT
200	GET_CURRENT(%d0)
201	addqb	#1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
202					|  put exception # in d0
203	bfextu	%sp@(PT_VECTOR){#4,#10},%d0
204	subw	#VEC_SPUR,%d0
205
206	movel	%sp,%sp@-
207	movel	%d0,%sp@-		|  put vector # on stack
208auto_irqhandler_fixup = . + 2
209	jsr	m68k_handle_int		|  process the IRQ
210	addql	#8,%sp			|  pop parameters off stack
211
212ret_from_interrupt:
213	subqb	#1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
214	jeq	ret_from_last_interrupt
2152:	RESTORE_ALL
216
217	ALIGN
218ret_from_last_interrupt:
219	moveq	#(~ALLOWINT>>8)&0xff,%d0
220	andb	%sp@(PT_SR),%d0
221	jne	2b
222
223	/* check if we need to do software interrupts */
224	tstl	irq_stat+CPUSTAT_SOFTIRQ_PENDING
225	jeq	.Lret_from_exception
226	pea	ret_from_exception
227	jra	do_softirq
228
229/* Handler for user defined interrupt vectors */
230
231ENTRY(user_inthandler)
232	SAVE_ALL_INT
233	GET_CURRENT(%d0)
234	addqb	#1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
235					|  put exception # in d0
236	bfextu	%sp@(PT_VECTOR){#4,#10},%d0
237user_irqvec_fixup = . + 2
238	subw	#VEC_USER,%d0
239
240	movel	%sp,%sp@-
241	movel	%d0,%sp@-		|  put vector # on stack
242user_irqhandler_fixup = . + 2
243	jsr	m68k_handle_int		|  process the IRQ
244	addql	#8,%sp			|  pop parameters off stack
245
246	subqb	#1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
247	jeq	ret_from_last_interrupt
248	RESTORE_ALL
249
250/* Handler for uninitialized and spurious interrupts */
251
252ENTRY(bad_inthandler)
253	SAVE_ALL_INT
254	GET_CURRENT(%d0)
255	addqb	#1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
256
257	movel	%sp,%sp@-
258	jsr	handle_badint
259	addql	#4,%sp
260
261	subqb	#1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
262	jeq	ret_from_last_interrupt
263	RESTORE_ALL
264
265
266ENTRY(sys_fork)
267	SAVE_SWITCH_STACK
268	pea	%sp@(SWITCH_STACK_SIZE)
269	jbsr	m68k_fork
270	addql	#4,%sp
271	RESTORE_SWITCH_STACK
272	rts
273
274ENTRY(sys_clone)
275	SAVE_SWITCH_STACK
276	pea	%sp@(SWITCH_STACK_SIZE)
277	jbsr	m68k_clone
278	addql	#4,%sp
279	RESTORE_SWITCH_STACK
280	rts
281
282ENTRY(sys_vfork)
283	SAVE_SWITCH_STACK
284	pea	%sp@(SWITCH_STACK_SIZE)
285	jbsr	m68k_vfork
286	addql	#4,%sp
287	RESTORE_SWITCH_STACK
288	rts
289
290ENTRY(sys_sigsuspend)
291	SAVE_SWITCH_STACK
292	pea	%sp@(SWITCH_STACK_SIZE)
293	jbsr	do_sigsuspend
294	addql	#4,%sp
295	RESTORE_SWITCH_STACK
296	rts
297
298ENTRY(sys_rt_sigsuspend)
299	SAVE_SWITCH_STACK
300	pea	%sp@(SWITCH_STACK_SIZE)
301	jbsr	do_rt_sigsuspend
302	addql	#4,%sp
303	RESTORE_SWITCH_STACK
304	rts
305
306ENTRY(sys_sigreturn)
307	SAVE_SWITCH_STACK
308	jbsr	do_sigreturn
309	RESTORE_SWITCH_STACK
310	rts
311
312ENTRY(sys_rt_sigreturn)
313	SAVE_SWITCH_STACK
314	jbsr	do_rt_sigreturn
315	RESTORE_SWITCH_STACK
316	rts
317
318resume:
319	/*
320	 * Beware - when entering resume, prev (the current task) is
321	 * in a0, next (the new task) is in a1,so don't change these
322	 * registers until their contents are no longer needed.
323	 */
324
325	/* save sr */
326	movew	%sr,%a0@(TASK_THREAD+THREAD_SR)
327
328	/* save fs (sfc,%dfc) (may be pointing to kernel memory) */
329	movec	%sfc,%d0
330	movew	%d0,%a0@(TASK_THREAD+THREAD_FS)
331
332	/* save usp */
333	/* it is better to use a movel here instead of a movew 8*) */
334	movec	%usp,%d0
335	movel	%d0,%a0@(TASK_THREAD+THREAD_USP)
336
337	/* save non-scratch registers on stack */
338	SAVE_SWITCH_STACK
339
340	/* save current kernel stack pointer */
341	movel	%sp,%a0@(TASK_THREAD+THREAD_KSP)
342
343	/* save floating point context */
344#ifndef CONFIG_M68KFPU_EMU_ONLY
345#ifdef CONFIG_M68KFPU_EMU
346	tstl	m68k_fputype
347	jeq	3f
348#endif
349	fsave	%a0@(TASK_THREAD+THREAD_FPSTATE)
350
351#if defined(CONFIG_M68060)
352#if !defined(CPU_M68060_ONLY)
353	btst	#3,m68k_cputype+3
354	beqs	1f
355#endif
356	/* The 060 FPU keeps status in bits 15-8 of the first longword */
357	tstb	%a0@(TASK_THREAD+THREAD_FPSTATE+2)
358	jeq	3f
359#if !defined(CPU_M68060_ONLY)
360	jra	2f
361#endif
362#endif /* CONFIG_M68060 */
363#if !defined(CPU_M68060_ONLY)
3641:	tstb	%a0@(TASK_THREAD+THREAD_FPSTATE)
365	jeq	3f
366#endif
3672:	fmovemx	%fp0-%fp7,%a0@(TASK_THREAD+THREAD_FPREG)
368	fmoveml	%fpcr/%fpsr/%fpiar,%a0@(TASK_THREAD+THREAD_FPCNTL)
3693:
370#endif	/* CONFIG_M68KFPU_EMU_ONLY */
371	/* Return previous task in %d1 */
372	movel	%curptr,%d1
373
374	/* switch to new task (a1 contains new task) */
375	movel	%a1,%curptr
376
377	/* restore floating point context */
378#ifndef CONFIG_M68KFPU_EMU_ONLY
379#ifdef CONFIG_M68KFPU_EMU
380	tstl	m68k_fputype
381	jeq	4f
382#endif
383#if defined(CONFIG_M68060)
384#if !defined(CPU_M68060_ONLY)
385	btst	#3,m68k_cputype+3
386	beqs	1f
387#endif
388	/* The 060 FPU keeps status in bits 15-8 of the first longword */
389	tstb	%a1@(TASK_THREAD+THREAD_FPSTATE+2)
390	jeq	3f
391#if !defined(CPU_M68060_ONLY)
392	jra	2f
393#endif
394#endif /* CONFIG_M68060 */
395#if !defined(CPU_M68060_ONLY)
3961:	tstb	%a1@(TASK_THREAD+THREAD_FPSTATE)
397	jeq	3f
398#endif
3992:	fmovemx	%a1@(TASK_THREAD+THREAD_FPREG),%fp0-%fp7
400	fmoveml	%a1@(TASK_THREAD+THREAD_FPCNTL),%fpcr/%fpsr/%fpiar
4013:	frestore %a1@(TASK_THREAD+THREAD_FPSTATE)
4024:
403#endif	/* CONFIG_M68KFPU_EMU_ONLY */
404
405	/* restore the kernel stack pointer */
406	movel	%a1@(TASK_THREAD+THREAD_KSP),%sp
407
408	/* restore non-scratch registers */
409	RESTORE_SWITCH_STACK
410
411	/* restore user stack pointer */
412	movel	%a1@(TASK_THREAD+THREAD_USP),%a0
413	movel	%a0,%usp
414
415	/* restore fs (sfc,%dfc) */
416	movew	%a1@(TASK_THREAD+THREAD_FS),%a0
417	movec	%a0,%sfc
418	movec	%a0,%dfc
419
420	/* restore status register */
421	movew	%a1@(TASK_THREAD+THREAD_SR),%sr
422
423	rts
424
425.data
426ALIGN
427sys_call_table:
428	.long sys_ni_syscall	/* 0  -  old "setup()" system call*/
429	.long sys_exit
430	.long sys_fork
431	.long sys_read
432	.long sys_write
433	.long sys_open		/* 5 */
434	.long sys_close
435	.long sys_waitpid
436	.long sys_creat
437	.long sys_link
438	.long sys_unlink	/* 10 */
439	.long sys_execve
440	.long sys_chdir
441	.long sys_time
442	.long sys_mknod
443	.long sys_chmod		/* 15 */
444	.long sys_chown16
445	.long sys_ni_syscall				/* old break syscall holder */
446	.long sys_stat
447	.long sys_lseek
448	.long sys_getpid	/* 20 */
449	.long sys_mount
450	.long sys_oldumount
451	.long sys_setuid16
452	.long sys_getuid16
453	.long sys_stime		/* 25 */
454	.long sys_ptrace
455	.long sys_alarm
456	.long sys_fstat
457	.long sys_pause
458	.long sys_utime		/* 30 */
459	.long sys_ni_syscall				/* old stty syscall holder */
460	.long sys_ni_syscall				/* old gtty syscall holder */
461	.long sys_access
462	.long sys_nice
463	.long sys_ni_syscall	/* 35 */	/* old ftime syscall holder */
464	.long sys_sync
465	.long sys_kill
466	.long sys_rename
467	.long sys_mkdir
468	.long sys_rmdir		/* 40 */
469	.long sys_dup
470	.long sys_pipe
471	.long sys_times
472	.long sys_ni_syscall				/* old prof syscall holder */
473	.long sys_brk		/* 45 */
474	.long sys_setgid16
475	.long sys_getgid16
476	.long sys_signal
477	.long sys_geteuid16
478	.long sys_getegid16	/* 50 */
479	.long sys_acct
480	.long sys_umount				/* recycled never used phys() */
481	.long sys_ni_syscall				/* old lock syscall holder */
482	.long sys_ioctl
483	.long sys_fcntl		/* 55 */
484	.long sys_ni_syscall				/* old mpx syscall holder */
485	.long sys_setpgid
486	.long sys_ni_syscall				/* old ulimit syscall holder */
487	.long sys_ni_syscall
488	.long sys_umask		/* 60 */
489	.long sys_chroot
490	.long sys_ustat
491	.long sys_dup2
492	.long sys_getppid
493	.long sys_getpgrp	/* 65 */
494	.long sys_setsid
495	.long sys_sigaction
496	.long sys_sgetmask
497	.long sys_ssetmask
498	.long sys_setreuid16	/* 70 */
499	.long sys_setregid16
500	.long sys_sigsuspend
501	.long sys_sigpending
502	.long sys_sethostname
503	.long sys_setrlimit	/* 75 */
504	.long sys_old_getrlimit
505	.long sys_getrusage
506	.long sys_gettimeofday
507	.long sys_settimeofday
508	.long sys_getgroups16	/* 80 */
509	.long sys_setgroups16
510	.long old_select
511	.long sys_symlink
512	.long sys_lstat
513	.long sys_readlink	/* 85 */
514	.long sys_uselib
515	.long sys_swapon
516	.long sys_reboot
517	.long old_readdir
518	.long old_mmap		/* 90 */
519	.long sys_munmap
520	.long sys_truncate
521	.long sys_ftruncate
522	.long sys_fchmod
523	.long sys_fchown16	/* 95 */
524	.long sys_getpriority
525	.long sys_setpriority
526	.long sys_ni_syscall				/* old profil syscall holder */
527	.long sys_statfs
528	.long sys_fstatfs	/* 100 */
529	.long sys_ni_syscall				/* ioperm for i386 */
530	.long sys_socketcall
531	.long sys_syslog
532	.long sys_setitimer
533	.long sys_getitimer	/* 105 */
534	.long sys_newstat
535	.long sys_newlstat
536	.long sys_newfstat
537	.long sys_ni_syscall
538	.long sys_ni_syscall	/* 110 */	/* iopl for i386 */
539	.long sys_vhangup
540	.long sys_ni_syscall				/* obsolete idle() syscall */
541	.long sys_ni_syscall				/* vm86old for i386 */
542	.long sys_wait4
543	.long sys_swapoff	/* 115 */
544	.long sys_sysinfo
545	.long sys_ipc
546	.long sys_fsync
547	.long sys_sigreturn
548	.long sys_clone		/* 120 */
549	.long sys_setdomainname
550	.long sys_newuname
551	.long sys_cacheflush				/* modify_ldt for i386 */
552	.long sys_adjtimex
553	.long sys_mprotect	/* 125 */
554	.long sys_sigprocmask
555	.long sys_ni_syscall		/* old "create_module" */
556	.long sys_init_module
557	.long sys_delete_module
558	.long sys_ni_syscall	/* 130 - old "get_kernel_syms" */
559	.long sys_quotactl
560	.long sys_getpgid
561	.long sys_fchdir
562	.long sys_bdflush
563	.long sys_sysfs		/* 135 */
564	.long sys_personality
565	.long sys_ni_syscall				/* for afs_syscall */
566	.long sys_setfsuid16
567	.long sys_setfsgid16
568	.long sys_llseek	/* 140 */
569	.long sys_getdents
570	.long sys_select
571	.long sys_flock
572	.long sys_msync
573	.long sys_readv		/* 145 */
574	.long sys_writev
575	.long sys_getsid
576	.long sys_fdatasync
577	.long sys_sysctl
578	.long sys_mlock		/* 150 */
579	.long sys_munlock
580	.long sys_mlockall
581	.long sys_munlockall
582	.long sys_sched_setparam
583	.long sys_sched_getparam	/* 155 */
584	.long sys_sched_setscheduler
585	.long sys_sched_getscheduler
586	.long sys_sched_yield
587	.long sys_sched_get_priority_max
588	.long sys_sched_get_priority_min  /* 160 */
589	.long sys_sched_rr_get_interval
590	.long sys_nanosleep
591	.long sys_mremap
592	.long sys_setresuid16
593	.long sys_getresuid16	/* 165 */
594	.long sys_getpagesize
595	.long sys_ni_syscall		/* old sys_query_module */
596	.long sys_poll
597	.long sys_nfsservctl
598	.long sys_setresgid16	/* 170 */
599	.long sys_getresgid16
600	.long sys_prctl
601	.long sys_rt_sigreturn
602	.long sys_rt_sigaction
603	.long sys_rt_sigprocmask	/* 175 */
604	.long sys_rt_sigpending
605	.long sys_rt_sigtimedwait
606	.long sys_rt_sigqueueinfo
607	.long sys_rt_sigsuspend
608	.long sys_pread64	/* 180 */
609	.long sys_pwrite64
610	.long sys_lchown16;
611	.long sys_getcwd
612	.long sys_capget
613	.long sys_capset	/* 185 */
614	.long sys_sigaltstack
615	.long sys_sendfile
616	.long sys_ni_syscall				/* streams1 */
617	.long sys_ni_syscall				/* streams2 */
618	.long sys_vfork		/* 190 */
619	.long sys_getrlimit
620	.long sys_mmap2
621	.long sys_truncate64
622	.long sys_ftruncate64
623	.long sys_stat64	/* 195 */
624	.long sys_lstat64
625	.long sys_fstat64
626	.long sys_chown
627	.long sys_getuid
628	.long sys_getgid	/* 200 */
629	.long sys_geteuid
630	.long sys_getegid
631	.long sys_setreuid
632	.long sys_setregid
633	.long sys_getgroups	/* 205 */
634	.long sys_setgroups
635	.long sys_fchown
636	.long sys_setresuid
637	.long sys_getresuid
638	.long sys_setresgid	/* 210 */
639	.long sys_getresgid
640	.long sys_lchown
641	.long sys_setuid
642	.long sys_setgid
643	.long sys_setfsuid	/* 215 */
644	.long sys_setfsgid
645	.long sys_pivot_root
646	.long sys_ni_syscall
647	.long sys_ni_syscall
648	.long sys_getdents64	/* 220 */
649	.long sys_gettid
650	.long sys_tkill
651	.long sys_setxattr
652	.long sys_lsetxattr
653	.long sys_fsetxattr	/* 225 */
654	.long sys_getxattr
655	.long sys_lgetxattr
656	.long sys_fgetxattr
657	.long sys_listxattr
658	.long sys_llistxattr	/* 230 */
659	.long sys_flistxattr
660	.long sys_removexattr
661	.long sys_lremovexattr
662	.long sys_fremovexattr
663	.long sys_futex		/* 235 */
664	.long sys_sendfile64
665	.long sys_mincore
666	.long sys_madvise
667	.long sys_fcntl64
668	.long sys_readahead	/* 240 */
669	.long sys_io_setup
670	.long sys_io_destroy
671	.long sys_io_getevents
672	.long sys_io_submit
673	.long sys_io_cancel	/* 245 */
674	.long sys_fadvise64
675	.long sys_exit_group
676	.long sys_lookup_dcookie
677	.long sys_epoll_create
678	.long sys_epoll_ctl	/* 250 */
679	.long sys_epoll_wait
680	.long sys_remap_file_pages
681	.long sys_set_tid_address
682	.long sys_timer_create
683	.long sys_timer_settime	/* 255 */
684	.long sys_timer_gettime
685	.long sys_timer_getoverrun
686	.long sys_timer_delete
687	.long sys_clock_settime
688	.long sys_clock_gettime	/* 260 */
689	.long sys_clock_getres
690	.long sys_clock_nanosleep
691	.long sys_statfs64
692	.long sys_fstatfs64
693	.long sys_tgkill	/* 265 */
694	.long sys_utimes
695	.long sys_fadvise64_64
696	.long sys_mbind
697	.long sys_get_mempolicy
698	.long sys_set_mempolicy	/* 270 */
699	.long sys_mq_open
700	.long sys_mq_unlink
701	.long sys_mq_timedsend
702	.long sys_mq_timedreceive
703	.long sys_mq_notify	/* 275 */
704	.long sys_mq_getsetattr
705	.long sys_waitid
706	.long sys_ni_syscall	/* for sys_vserver */
707	.long sys_add_key
708	.long sys_request_key	/* 280 */
709	.long sys_keyctl
710
711