3 * linux/arch/m68k/kernel/entry.S
5 * Copyright (C) 1991, 1992 Linus Torvalds
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
11 * Linux/m68k support by Hamish Macdonald
13 * 68060 fixes by Jesper Skov
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.
22 * NOTE: This code handles signal-recognition, which happens every time
23 * after a timer-interrupt and after each system call.
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.
32 * 6/05/00 RZ: addedd writeback completion after return from sighandler
36 #include <linux/sys.h>
37 #include <linux/config.h>
38 #include <linux/linkage.h>
39 #include <asm/entry.h>
40 #include <asm/errno.h>
41 #include <asm/setup.h>
42 #include <asm/segment.h>
43 #include <asm/traps.h>
45 #include "m68k_defs.h"
47 .globl SYMBOL_NAME(system_call), SYMBOL_NAME(buserr), SYMBOL_NAME(trap)
48 .globl SYMBOL_NAME(resume), SYMBOL_NAME(ret_from_exception)
49 .globl SYMBOL_NAME(ret_from_signal)
50 .globl SYMBOL_NAME(inthandler), SYMBOL_NAME(sys_call_table)
51 .globl SYMBOL_NAME(sys_fork), SYMBOL_NAME(sys_clone), SYMBOL_NAME(sys_vfork)
52 .globl SYMBOL_NAME(ret_from_interrupt), SYMBOL_NAME(bad_interrupt)
58 movel %sp,%sp@- | stack frame pointer argument
59 bsrl SYMBOL_NAME(buserr_c)
61 jra SYMBOL_NAME(ret_from_exception)
66 movel %sp,%sp@- | stack frame pointer argument
67 bsrl SYMBOL_NAME(trap_c)
69 jra SYMBOL_NAME(ret_from_exception)
73 movel %sp,%curptr@(TASK_THREAD+THREAD_ESP0)
75 pea SYMBOL_NAME(ret_from_exception)
76 jmp SYMBOL_NAME(schedule)
78 | After a fork we jump here directly from resume,
79 | so that %d1 contains the previous task
80 | Theoretically only needed on SMP, but let's watch
81 | what happens in schedule_tail() in future...
84 jsr SYMBOL_NAME(schedule_tail)
86 jra SYMBOL_NAME(ret_from_exception)
89 movel #-ENOSYS,%sp@(PT_D0)
90 jra SYMBOL_NAME(ret_from_exception)
93 movel #-ENOSYS,%sp@(PT_D0) | needed for strace
96 jbsr SYMBOL_NAME(syscall_trace)
99 movel %sp@(PT_ORIG_D0),%d1
101 cmpl #NR_syscalls,%d1
103 jbsr @(SYMBOL_NAME(sys_call_table),%d1:l:4)@(0)
104 1: movel %d0,%sp@(PT_D0) | save the return value
105 subql #4,%sp | dummy return address
107 jbsr SYMBOL_NAME(syscall_trace)
109 SYMBOL_NAME_LABEL(ret_from_signal)
112 /* on 68040 complete pending writebacks if any */
114 bfextu %sp@(PT_VECTOR){#0,#4},%d0
115 subql #7,%d0 | bus error frame ?
118 jbsr SYMBOL_NAME(berr_040cleanup)
122 jra SYMBOL_NAME(ret_from_exception)
129 movel %sp,%curptr@(TASK_THREAD+THREAD_ESP0)
131 btst #PT_TRACESYS_BIT,%curptr@(TASK_PTRACE+PT_TRACESYS_OFF)
133 cmpl #NR_syscalls,%d0
135 jbsr @(SYMBOL_NAME(sys_call_table),%d0:l:4)@(0)
136 movel %d0,%sp@(PT_D0) | save the return value
138 SYMBOL_NAME_LABEL(ret_from_exception)
139 btst #5,%sp@(PT_SR) | check if returning to kernel
140 bnes 2f | if so, skip resched, signals
141 | only allow interrupts when we are really the last one on the
142 | kernel stack, otherwise stack overflow can occur during
143 | heavy interrupt load
145 tstl %curptr@(TASK_NEEDRESCHED)
146 jne SYMBOL_NAME(reschedule)
148 cmpl #SYMBOL_NAME(task),%curptr | task[0] cannot have signals
151 | check for delayed trace
152 bclr #PT_DTRACE_BIT,%curptr@(TASK_PTRACE+PT_DTRACE_OFF)
155 tstl %curptr@(TASK_STATE) | state
156 jne SYMBOL_NAME(reschedule)
158 tstl %curptr@(TASK_SIGPENDING)
163 subql #4,%sp | dummy return address
165 pea %sp@(SWITCH_STACK_SIZE)
167 bsrl SYMBOL_NAME(do_signal)
174 bclr #7,%sp@(PT_SR) | clear trace bit in SR
178 jbsr SYMBOL_NAME(send_sig)
186 SYMBOL_NAME_LABEL(ami_inthandler)
187 addql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
191 bfextu %sp@(PT_VECTOR){#4,#12},%d0
193 addql #1,%a0@(SYMBOL_NAME(kstat)+STAT_IRQ-VECOFF(VEC_SPUR))
194 movel %a0@(SYMBOL_NAME(autoirq_list)-VECOFF(VEC_SPUR)),%a0
196 | amiga vector int handler get the req mask instead of irq vector
198 movew %a1@(C_INTREQR),%d0
199 andw %a1@(C_INTENAR),%d0
201 | prepare stack (push frame pointer, dev_id & req mask)
203 movel %a0@(IRQ_DEVID),%sp@-
205 pea %pc@(SYMBOL_NAME(ret_from_interrupt):w)
206 jbra @(IRQ_HANDLER,%a0)@(0)
214 ** This is the main interrupt handler, responsible for calling process_int()
216 SYMBOL_NAME_LABEL(inthandler)
219 addql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
220 | put exception # in d0
221 bfextu %sp@(PT_VECTOR){#4,#10},%d0
224 movel %d0,%sp@- | put vector # on stack
225 #if defined(MACH_Q40_ONLY) && defined(CONFIG_BLK_DEV_FD)
226 btstb #4,0xff000000 | Q40 floppy needs very special treatment ...
230 jbsr SYMBOL_NAME(floppy_hardint)
234 jbsr SYMBOL_NAME(process_int)| process the IRQ
235 3: addql #8,%sp | pop parameters off stack
237 SYMBOL_NAME_LABEL(ret_from_interrupt)
238 subql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
243 moveq #(~ALLOWINT>>8)&0xff,%d0
247 /* check if we need to do software interrupts */
248 tstl SYMBOL_NAME(irq_stat) | softirq_pending ?
249 jeq SYMBOL_NAME(ret_from_exception)
250 pea SYMBOL_NAME(ret_from_exception)
251 jra SYMBOL_NAME(do_softirq)
254 /* Handler for uninitialized and spurious interrupts */
256 SYMBOL_NAME_LABEL(bad_interrupt)
257 addql #1,SYMBOL_NAME(num_spurious)
262 pea %sp@(SWITCH_STACK_SIZE)
263 jbsr SYMBOL_NAME(m68k_fork)
270 pea %sp@(SWITCH_STACK_SIZE)
271 jbsr SYMBOL_NAME(m68k_clone)
278 pea %sp@(SWITCH_STACK_SIZE)
279 jbsr SYMBOL_NAME(m68k_vfork)
284 ENTRY(sys_sigsuspend)
286 pea %sp@(SWITCH_STACK_SIZE)
287 jbsr SYMBOL_NAME(do_sigsuspend)
292 ENTRY(sys_rt_sigsuspend)
294 pea %sp@(SWITCH_STACK_SIZE)
295 jbsr SYMBOL_NAME(do_rt_sigsuspend)
302 jbsr SYMBOL_NAME(do_sigreturn)
306 ENTRY(sys_rt_sigreturn)
308 jbsr SYMBOL_NAME(do_rt_sigreturn)
312 SYMBOL_NAME_LABEL(resume)
314 * Beware - when entering resume, prev (the current task) is
315 * in a0, next (the new task) is in a1,so don't change these
316 * registers until their contents are no longer needed.
320 movew %sr,%a0@(TASK_THREAD+THREAD_SR)
322 /* save fs (sfc,%dfc) (may be pointing to kernel memory) */
324 movew %d0,%a0@(TASK_THREAD+THREAD_FS)
327 /* it is better to use a movel here instead of a movew 8*) */
329 movel %d0,%a0@(TASK_THREAD+THREAD_USP)
331 /* save non-scratch registers on stack */
334 /* save current kernel stack pointer */
335 movel %sp,%a0@(TASK_THREAD+THREAD_KSP)
337 /* save floating point context */
338 #ifndef CONFIG_M68KFPU_EMU_ONLY
339 #ifdef CONFIG_M68KFPU_EMU
340 tstl SYMBOL_NAME(m68k_fputype)
343 fsave %a0@(TASK_THREAD+THREAD_FPSTATE)
345 #if defined(CONFIG_M68060)
346 #if !defined(CPU_M68060_ONLY)
347 btst #3,SYMBOL_NAME(m68k_cputype)+3
350 /* The 060 FPU keeps status in bits 15-8 of the first longword */
351 tstb %a0@(TASK_THREAD+THREAD_FPSTATE+2)
353 #if !defined(CPU_M68060_ONLY)
356 #endif /* CONFIG_M68060 */
357 #if !defined(CPU_M68060_ONLY)
358 1: tstb %a0@(TASK_THREAD+THREAD_FPSTATE)
361 2: fmovemx %fp0-%fp7,%a0@(TASK_THREAD+THREAD_FPREG)
362 fmoveml %fpcr/%fpsr/%fpiar,%a0@(TASK_THREAD+THREAD_FPCNTL)
364 #endif /* CONFIG_M68KFPU_EMU_ONLY */
365 /* Return previous task in %d1 */
368 /* switch to new task (a1 contains new task) */
371 /* restore floating point context */
372 #ifndef CONFIG_M68KFPU_EMU_ONLY
373 #ifdef CONFIG_M68KFPU_EMU
374 tstl SYMBOL_NAME(m68k_fputype)
377 #if defined(CONFIG_M68060)
378 #if !defined(CPU_M68060_ONLY)
379 btst #3,SYMBOL_NAME(m68k_cputype)+3
382 /* The 060 FPU keeps status in bits 15-8 of the first longword */
383 tstb %a1@(TASK_THREAD+THREAD_FPSTATE+2)
385 #if !defined(CPU_M68060_ONLY)
388 #endif /* CONFIG_M68060 */
389 #if !defined(CPU_M68060_ONLY)
390 1: tstb %a1@(TASK_THREAD+THREAD_FPSTATE)
393 2: fmovemx %a1@(TASK_THREAD+THREAD_FPREG),%fp0-%fp7
394 fmoveml %a1@(TASK_THREAD+THREAD_FPCNTL),%fpcr/%fpsr/%fpiar
395 3: frestore %a1@(TASK_THREAD+THREAD_FPSTATE)
397 #endif /* CONFIG_M68KFPU_EMU_ONLY */
399 /* restore the kernel stack pointer */
400 movel %a1@(TASK_THREAD+THREAD_KSP),%sp
402 /* restore non-scratch registers */
405 /* restore user stack pointer */
406 movel %a1@(TASK_THREAD+THREAD_USP),%a0
409 /* restore fs (sfc,%dfc) */
410 movew %a1@(TASK_THREAD+THREAD_FS),%a0
414 /* restore status register */
415 movew %a1@(TASK_THREAD+THREAD_SR),%sr
421 SYMBOL_NAME_LABEL(sys_call_table)
422 .long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/
423 .long SYMBOL_NAME(sys_exit)
424 .long SYMBOL_NAME(sys_fork)
425 .long SYMBOL_NAME(sys_read)
426 .long SYMBOL_NAME(sys_write)
427 .long SYMBOL_NAME(sys_open) /* 5 */
428 .long SYMBOL_NAME(sys_close)
429 .long SYMBOL_NAME(sys_waitpid)
430 .long SYMBOL_NAME(sys_creat)
431 .long SYMBOL_NAME(sys_link)
432 .long SYMBOL_NAME(sys_unlink) /* 10 */
433 .long SYMBOL_NAME(sys_execve)
434 .long SYMBOL_NAME(sys_chdir)
435 .long SYMBOL_NAME(sys_time)
436 .long SYMBOL_NAME(sys_mknod)
437 .long SYMBOL_NAME(sys_chmod) /* 15 */
438 .long SYMBOL_NAME(sys_chown16)
439 .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */
440 .long SYMBOL_NAME(sys_stat)
441 .long SYMBOL_NAME(sys_lseek)
442 .long SYMBOL_NAME(sys_getpid) /* 20 */
443 .long SYMBOL_NAME(sys_mount)
444 .long SYMBOL_NAME(sys_oldumount)
445 .long SYMBOL_NAME(sys_setuid16)
446 .long SYMBOL_NAME(sys_getuid16)
447 .long SYMBOL_NAME(sys_stime) /* 25 */
448 .long SYMBOL_NAME(sys_ptrace)
449 .long SYMBOL_NAME(sys_alarm)
450 .long SYMBOL_NAME(sys_fstat)
451 .long SYMBOL_NAME(sys_pause)
452 .long SYMBOL_NAME(sys_utime) /* 30 */
453 .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */
454 .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */
455 .long SYMBOL_NAME(sys_access)
456 .long SYMBOL_NAME(sys_nice)
457 .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */
458 .long SYMBOL_NAME(sys_sync)
459 .long SYMBOL_NAME(sys_kill)
460 .long SYMBOL_NAME(sys_rename)
461 .long SYMBOL_NAME(sys_mkdir)
462 .long SYMBOL_NAME(sys_rmdir) /* 40 */
463 .long SYMBOL_NAME(sys_dup)
464 .long SYMBOL_NAME(sys_pipe)
465 .long SYMBOL_NAME(sys_times)
466 .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */
467 .long SYMBOL_NAME(sys_brk) /* 45 */
468 .long SYMBOL_NAME(sys_setgid16)
469 .long SYMBOL_NAME(sys_getgid16)
470 .long SYMBOL_NAME(sys_signal)
471 .long SYMBOL_NAME(sys_geteuid16)
472 .long SYMBOL_NAME(sys_getegid16) /* 50 */
473 .long SYMBOL_NAME(sys_acct)
474 .long SYMBOL_NAME(sys_umount) /* recycled never used phys() */
475 .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */
476 .long SYMBOL_NAME(sys_ioctl)
477 .long SYMBOL_NAME(sys_fcntl) /* 55 */
478 .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */
479 .long SYMBOL_NAME(sys_setpgid)
480 .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */
481 .long SYMBOL_NAME(sys_ni_syscall)
482 .long SYMBOL_NAME(sys_umask) /* 60 */
483 .long SYMBOL_NAME(sys_chroot)
484 .long SYMBOL_NAME(sys_ustat)
485 .long SYMBOL_NAME(sys_dup2)
486 .long SYMBOL_NAME(sys_getppid)
487 .long SYMBOL_NAME(sys_getpgrp) /* 65 */
488 .long SYMBOL_NAME(sys_setsid)
489 .long SYMBOL_NAME(sys_sigaction)
490 .long SYMBOL_NAME(sys_sgetmask)
491 .long SYMBOL_NAME(sys_ssetmask)
492 .long SYMBOL_NAME(sys_setreuid16) /* 70 */
493 .long SYMBOL_NAME(sys_setregid16)
494 .long SYMBOL_NAME(sys_sigsuspend)
495 .long SYMBOL_NAME(sys_sigpending)
496 .long SYMBOL_NAME(sys_sethostname)
497 .long SYMBOL_NAME(sys_setrlimit) /* 75 */
498 .long SYMBOL_NAME(sys_old_getrlimit)
499 .long SYMBOL_NAME(sys_getrusage)
500 .long SYMBOL_NAME(sys_gettimeofday)
501 .long SYMBOL_NAME(sys_settimeofday)
502 .long SYMBOL_NAME(sys_getgroups16) /* 80 */
503 .long SYMBOL_NAME(sys_setgroups16)
504 .long SYMBOL_NAME(old_select)
505 .long SYMBOL_NAME(sys_symlink)
506 .long SYMBOL_NAME(sys_lstat)
507 .long SYMBOL_NAME(sys_readlink) /* 85 */
508 .long SYMBOL_NAME(sys_uselib)
509 .long SYMBOL_NAME(sys_swapon)
510 .long SYMBOL_NAME(sys_reboot)
511 .long SYMBOL_NAME(old_readdir)
512 .long SYMBOL_NAME(old_mmap) /* 90 */
513 .long SYMBOL_NAME(sys_munmap)
514 .long SYMBOL_NAME(sys_truncate)
515 .long SYMBOL_NAME(sys_ftruncate)
516 .long SYMBOL_NAME(sys_fchmod)
517 .long SYMBOL_NAME(sys_fchown16) /* 95 */
518 .long SYMBOL_NAME(sys_getpriority)
519 .long SYMBOL_NAME(sys_setpriority)
520 .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */
521 .long SYMBOL_NAME(sys_statfs)
522 .long SYMBOL_NAME(sys_fstatfs) /* 100 */
523 .long SYMBOL_NAME(sys_ioperm)
524 .long SYMBOL_NAME(sys_socketcall)
525 .long SYMBOL_NAME(sys_syslog)
526 .long SYMBOL_NAME(sys_setitimer)
527 .long SYMBOL_NAME(sys_getitimer) /* 105 */
528 .long SYMBOL_NAME(sys_newstat)
529 .long SYMBOL_NAME(sys_newlstat)
530 .long SYMBOL_NAME(sys_newfstat)
531 .long SYMBOL_NAME(sys_ni_syscall)
532 .long SYMBOL_NAME(sys_ni_syscall) /* iopl for i386 */ /* 110 */
533 .long SYMBOL_NAME(sys_vhangup)
534 .long SYMBOL_NAME(sys_ni_syscall) /* obsolete idle() syscall */
535 .long SYMBOL_NAME(sys_ni_syscall) /* vm86old for i386 */
536 .long SYMBOL_NAME(sys_wait4)
537 .long SYMBOL_NAME(sys_swapoff) /* 115 */
538 .long SYMBOL_NAME(sys_sysinfo)
539 .long SYMBOL_NAME(sys_ipc)
540 .long SYMBOL_NAME(sys_fsync)
541 .long SYMBOL_NAME(sys_sigreturn)
542 .long SYMBOL_NAME(sys_clone) /* 120 */
543 .long SYMBOL_NAME(sys_setdomainname)
544 .long SYMBOL_NAME(sys_newuname)
545 .long SYMBOL_NAME(sys_cacheflush) /* modify_ldt for i386 */
546 .long SYMBOL_NAME(sys_adjtimex)
547 .long SYMBOL_NAME(sys_mprotect) /* 125 */
548 .long SYMBOL_NAME(sys_sigprocmask)
549 .long SYMBOL_NAME(sys_create_module)
550 .long SYMBOL_NAME(sys_init_module)
551 .long SYMBOL_NAME(sys_delete_module)
552 .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
553 .long SYMBOL_NAME(sys_quotactl)
554 .long SYMBOL_NAME(sys_getpgid)
555 .long SYMBOL_NAME(sys_fchdir)
556 .long SYMBOL_NAME(sys_bdflush)
557 .long SYMBOL_NAME(sys_sysfs) /* 135 */
558 .long SYMBOL_NAME(sys_personality)
559 .long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
560 .long SYMBOL_NAME(sys_setfsuid16)
561 .long SYMBOL_NAME(sys_setfsgid16)
562 .long SYMBOL_NAME(sys_llseek) /* 140 */
563 .long SYMBOL_NAME(sys_getdents)
564 .long SYMBOL_NAME(sys_select)
565 .long SYMBOL_NAME(sys_flock)
566 .long SYMBOL_NAME(sys_msync)
567 .long SYMBOL_NAME(sys_readv) /* 145 */
568 .long SYMBOL_NAME(sys_writev)
569 .long SYMBOL_NAME(sys_getsid)
570 .long SYMBOL_NAME(sys_fdatasync)
571 .long SYMBOL_NAME(sys_sysctl)
572 .long SYMBOL_NAME(sys_mlock) /* 150 */
573 .long SYMBOL_NAME(sys_munlock)
574 .long SYMBOL_NAME(sys_mlockall)
575 .long SYMBOL_NAME(sys_munlockall)
576 .long SYMBOL_NAME(sys_sched_setparam)
577 .long SYMBOL_NAME(sys_sched_getparam) /* 155 */
578 .long SYMBOL_NAME(sys_sched_setscheduler)
579 .long SYMBOL_NAME(sys_sched_getscheduler)
580 .long SYMBOL_NAME(sys_sched_yield)
581 .long SYMBOL_NAME(sys_sched_get_priority_max)
582 .long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */
583 .long SYMBOL_NAME(sys_sched_rr_get_interval)
584 .long SYMBOL_NAME(sys_nanosleep)
585 .long SYMBOL_NAME(sys_mremap)
586 .long SYMBOL_NAME(sys_setresuid16)
587 .long SYMBOL_NAME(sys_getresuid16) /* 165 */
588 .long SYMBOL_NAME(sys_getpagesize)
589 .long SYMBOL_NAME(sys_query_module)
590 .long SYMBOL_NAME(sys_poll)
591 .long SYMBOL_NAME(sys_nfsservctl)
592 .long SYMBOL_NAME(sys_setresgid16) /* 170 */
593 .long SYMBOL_NAME(sys_getresgid16)
594 .long SYMBOL_NAME(sys_prctl)
595 .long SYMBOL_NAME(sys_rt_sigreturn)
596 .long SYMBOL_NAME(sys_rt_sigaction)
597 .long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */
598 .long SYMBOL_NAME(sys_rt_sigpending)
599 .long SYMBOL_NAME(sys_rt_sigtimedwait)
600 .long SYMBOL_NAME(sys_rt_sigqueueinfo)
601 .long SYMBOL_NAME(sys_rt_sigsuspend)
602 .long SYMBOL_NAME(sys_pread) /* 180 */
603 .long SYMBOL_NAME(sys_pwrite)
604 .long SYMBOL_NAME(sys_lchown16);
605 .long SYMBOL_NAME(sys_getcwd)
606 .long SYMBOL_NAME(sys_capget)
607 .long SYMBOL_NAME(sys_capset) /* 185 */
608 .long SYMBOL_NAME(sys_sigaltstack)
609 .long SYMBOL_NAME(sys_sendfile)
610 .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
611 .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
612 .long SYMBOL_NAME(sys_vfork) /* 190 */
613 .long SYMBOL_NAME(sys_getrlimit)
614 .long SYMBOL_NAME(sys_mmap2)
615 .long SYMBOL_NAME(sys_truncate64)
616 .long SYMBOL_NAME(sys_ftruncate64)
617 .long SYMBOL_NAME(sys_stat64) /* 195 */
618 .long SYMBOL_NAME(sys_lstat64)
619 .long SYMBOL_NAME(sys_fstat64)
620 .long SYMBOL_NAME(sys_chown)
621 .long SYMBOL_NAME(sys_getuid)
622 .long SYMBOL_NAME(sys_getgid) /* 200 */
623 .long SYMBOL_NAME(sys_geteuid)
624 .long SYMBOL_NAME(sys_getegid)
625 .long SYMBOL_NAME(sys_setreuid)
626 .long SYMBOL_NAME(sys_setregid)
627 .long SYMBOL_NAME(sys_getgroups) /* 205 */
628 .long SYMBOL_NAME(sys_setgroups)
629 .long SYMBOL_NAME(sys_fchown)
630 .long SYMBOL_NAME(sys_setresuid)
631 .long SYMBOL_NAME(sys_getresuid)
632 .long SYMBOL_NAME(sys_setresgid) /* 210 */
633 .long SYMBOL_NAME(sys_getresgid)
634 .long SYMBOL_NAME(sys_lchown)
635 .long SYMBOL_NAME(sys_setuid)
636 .long SYMBOL_NAME(sys_setgid)
637 .long SYMBOL_NAME(sys_setfsuid) /* 215 */
638 .long SYMBOL_NAME(sys_setfsgid)
639 .long SYMBOL_NAME(sys_pivot_root)
640 .long SYMBOL_NAME(sys_ni_syscall)
641 .long SYMBOL_NAME(sys_ni_syscall)
642 .long SYMBOL_NAME(sys_getdents64) /* 220 */
643 .long SYMBOL_NAME(sys_gettid)
644 .long SYMBOL_NAME(sys_tkill)
645 .long SYMBOL_NAME(sys_setxattr)
646 .long SYMBOL_NAME(sys_lsetxattr)
647 .long SYMBOL_NAME(sys_fsetxattr) /* 225 */
648 .long SYMBOL_NAME(sys_getxattr)
649 .long SYMBOL_NAME(sys_lgetxattr)
650 .long SYMBOL_NAME(sys_fgetxattr)
651 .long SYMBOL_NAME(sys_listxattr)
652 .long SYMBOL_NAME(sys_llistxattr) /* 230 */
653 .long SYMBOL_NAME(sys_flistxattr)
654 .long SYMBOL_NAME(sys_removexattr)
655 .long SYMBOL_NAME(sys_lremovexattr)
656 .long SYMBOL_NAME(sys_fremovexattr)
658 .rept NR_syscalls-(.-SYMBOL_NAME(sys_call_table))/4
659 .long SYMBOL_NAME(sys_ni_syscall)