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