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