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