blob: 9420057537200ebe601a5024ddc7b6664c122a3b [file] [log] [blame]
David Howellsb920de12008-02-08 04:19:31 -08001###############################################################################
2#
3# MN10300 Exception and interrupt entry points
4#
5# Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
6# Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
7# Modified by David Howells (dhowells@redhat.com)
8#
9# This program is free software; you can redistribute it and/or
10# modify it under the terms of the GNU General Public Licence
11# as published by the Free Software Foundation; either version
12# 2 of the Licence, or (at your option) any later version.
13#
14###############################################################################
15#include <linux/sys.h>
16#include <linux/linkage.h>
17#include <asm/smp.h>
David Howellsdf9ee292010-10-07 14:08:55 +010018#include <asm/irqflags.h>
David Howellsb920de12008-02-08 04:19:31 -080019#include <asm/thread_info.h>
20#include <asm/intctl-regs.h>
21#include <asm/busctl-regs.h>
22#include <asm/timer-regs.h>
David Howells2f2a2132009-04-10 14:33:48 +010023#include <unit/leds.h>
David Howellsb920de12008-02-08 04:19:31 -080024#include <asm/page.h>
25#include <asm/pgtable.h>
26#include <asm/errno.h>
27#include <asm/asm-offsets.h>
28#include <asm/frame.inc>
29
Akira Takeuchi368dd5a2010-10-27 17:28:55 +010030#if defined(CONFIG_SMP) && defined(CONFIG_GDBSTUB)
31#include <asm/gdb-stub.h>
32#endif /* CONFIG_SMP && CONFIG_GDBSTUB */
33
David Howellsb920de12008-02-08 04:19:31 -080034#ifdef CONFIG_PREEMPT
Akira Takeuchi368dd5a2010-10-27 17:28:55 +010035#define preempt_stop LOCAL_IRQ_DISABLE
David Howellsb920de12008-02-08 04:19:31 -080036#else
37#define preempt_stop
38#define resume_kernel restore_all
39#endif
40
David Howellsb920de12008-02-08 04:19:31 -080041 .am33_2
42
43###############################################################################
44#
45# the return path for a forked child
46# - on entry, D0 holds the address of the previous task to run
47#
48###############################################################################
49ENTRY(ret_from_fork)
50 call schedule_tail[],0
51 GET_THREAD_INFO a2
52
53 # return 0 to indicate child process
54 clr d0
55 mov d0,(REG_D0,fp)
56 jmp syscall_exit
57
Al Viro255461c2012-09-19 13:05:49 -040058ENTRY(ret_from_kernel_thread)
59 call schedule_tail[],0
60 mov (REG_D0,fp),d0
61 mov (REG_A0,fp),a0
62 calls (a0)
David Howells1e002272013-05-28 20:21:02 +010063 GET_THREAD_INFO a2 # A2 must be set on return from sys_exit()
Al Viro6e754212012-09-19 13:18:20 -040064 clr d0
Al Viroddf23e82012-10-11 17:32:41 -040065 mov d0,(REG_D0,fp)
Al Viro6e754212012-09-19 13:18:20 -040066 jmp syscall_exit
67
David Howellsb920de12008-02-08 04:19:31 -080068###############################################################################
69#
70# system call handler
71#
72###############################################################################
73ENTRY(system_call)
74 add -4,sp
75 SAVE_ALL
76 mov d0,(REG_ORIG_D0,fp)
77 GET_THREAD_INFO a2
78 cmp nr_syscalls,d0
79 bcc syscall_badsys
80 btst _TIF_SYSCALL_TRACE,(TI_flags,a2)
David Howells5d289962009-06-11 13:08:37 +010081 bne syscall_entry_trace
David Howellsb920de12008-02-08 04:19:31 -080082syscall_call:
83 add d0,d0,a1
84 add a1,a1
85 mov (REG_A0,fp),d0
86 mov (sys_call_table,a1),a0
87 calls (a0)
88 mov d0,(REG_D0,fp)
89syscall_exit:
90 # make sure we don't miss an interrupt setting need_resched or
91 # sigpending between sampling and the rti
Akira Takeuchi368dd5a2010-10-27 17:28:55 +010092 LOCAL_IRQ_DISABLE
David Howellsb920de12008-02-08 04:19:31 -080093 mov (TI_flags,a2),d2
94 btst _TIF_ALLWORK_MASK,d2
95 bne syscall_exit_work
96restore_all:
97 RESTORE_ALL
98
99###############################################################################
100#
101# perform work that needs to be done immediately before resumption and syscall
102# tracing
103#
104###############################################################################
105 ALIGN
106syscall_exit_work:
Al Viro6fdb6fb2012-04-30 19:49:23 -0400107 mov (REG_EPSW,fp),d0
108 and EPSW_nSL,d0
109 beq resume_kernel # returning to supervisor mode
110
David Howellsb920de12008-02-08 04:19:31 -0800111 btst _TIF_SYSCALL_TRACE,d2
112 beq work_pending
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100113 LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call
David Howellsb920de12008-02-08 04:19:31 -0800114 # schedule() instead
115 mov fp,d0
David Howells5d289962009-06-11 13:08:37 +0100116 call syscall_trace_exit[],0 # do_syscall_trace(regs)
David Howellsb920de12008-02-08 04:19:31 -0800117 jmp resume_userspace
118
119 ALIGN
120work_pending:
121 btst _TIF_NEED_RESCHED,d2
122 beq work_notifysig
123
124work_resched:
125 call schedule[],0
126
127 # make sure we don't miss an interrupt setting need_resched or
128 # sigpending between sampling and the rti
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100129 LOCAL_IRQ_DISABLE
David Howellsb920de12008-02-08 04:19:31 -0800130
131 # is there any work to be done other than syscall tracing?
132 mov (TI_flags,a2),d2
133 btst _TIF_WORK_MASK,d2
134 beq restore_all
135 btst _TIF_NEED_RESCHED,d2
136 bne work_resched
137
138 # deal with pending signals and notify-resume requests
139work_notifysig:
140 mov fp,d0
141 mov d2,d1
142 call do_notify_resume[],0
143 jmp resume_userspace
144
145 # perform syscall entry tracing
David Howells5d289962009-06-11 13:08:37 +0100146syscall_entry_trace:
David Howellsb920de12008-02-08 04:19:31 -0800147 mov -ENOSYS,d0
148 mov d0,(REG_D0,fp)
149 mov fp,d0
David Howells5d289962009-06-11 13:08:37 +0100150 call syscall_trace_entry[],0 # returns the syscall number to actually use
David Howellsb920de12008-02-08 04:19:31 -0800151 mov (REG_D1,fp),d1
152 cmp nr_syscalls,d0
153 bcs syscall_call
154 jmp syscall_exit
155
156syscall_badsys:
157 mov -ENOSYS,d0
158 mov d0,(REG_D0,fp)
159 jmp resume_userspace
160
161 # userspace resumption stub bypassing syscall exit tracing
162 .globl ret_from_exception, ret_from_intr
163 ALIGN
164ret_from_exception:
165 preempt_stop
166ret_from_intr:
167 GET_THREAD_INFO a2
168 mov (REG_EPSW,fp),d0 # need to deliver signals before
169 # returning to userspace
170 and EPSW_nSL,d0
171 beq resume_kernel # returning to supervisor mode
172
173ENTRY(resume_userspace)
174 # make sure we don't miss an interrupt setting need_resched or
175 # sigpending between sampling and the rti
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100176 LOCAL_IRQ_DISABLE
David Howellsb920de12008-02-08 04:19:31 -0800177
178 # is there any work to be done on int/exception return?
179 mov (TI_flags,a2),d2
180 btst _TIF_WORK_MASK,d2
181 bne work_pending
182 jmp restore_all
183
184#ifdef CONFIG_PREEMPT
185ENTRY(resume_kernel)
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100186 LOCAL_IRQ_DISABLE
David Howellsb920de12008-02-08 04:19:31 -0800187 mov (TI_preempt_count,a2),d0 # non-zero preempt_count ?
188 cmp 0,d0
189 bne restore_all
190
191need_resched:
192 btst _TIF_NEED_RESCHED,(TI_flags,a2)
193 beq restore_all
194 mov (REG_EPSW,fp),d0
195 and EPSW_IM,d0
196 cmp EPSW_IM_7,d0 # interrupts off (exception path) ?
Akira Takeuchi24646bd2008-12-10 12:43:29 +0000197 bne restore_all
David Howellsb920de12008-02-08 04:19:31 -0800198 call preempt_schedule_irq[],0
199 jmp need_resched
200#endif
201
202
203###############################################################################
204#
205# IRQ handler entry point
206# - intended to be entered at multiple priorities
207#
208###############################################################################
209ENTRY(irq_handler)
210 add -4,sp
211 SAVE_ALL
212
213 # it's not a syscall
214 mov 0xffffffff,d0
215 mov d0,(REG_ORIG_D0,fp)
216
217 mov fp,d0
218 call do_IRQ[],0 # do_IRQ(regs)
219
220 jmp ret_from_intr
221
222###############################################################################
223#
David Howellsb920de12008-02-08 04:19:31 -0800224# Double Fault handler entry point
225# - note that there will not be a stack, D0/A0 will hold EPSW/PC as were
226#
227###############################################################################
228 .section .bss
229 .balign THREAD_SIZE
230 .space THREAD_SIZE
231__df_stack:
232 .previous
233
234ENTRY(double_fault)
235 mov a0,(__df_stack-4) # PC as was
236 mov d0,(__df_stack-8) # EPSW as was
237 mn10300_set_dbfleds # display 'db-f' on the LEDs
238 mov 0xaa55aa55,d0
239 mov d0,(__df_stack-12) # no ORIG_D0
240 mov sp,a0 # save corrupted SP
241 mov __df_stack-12,sp # emergency supervisor stack
242 SAVE_ALL
243 mov a0,(REG_A0,fp) # save corrupted SP as A0 (which got
244 # clobbered by the CPU)
245 mov fp,d0
246 calls do_double_fault
247double_fault_loop:
248 bra double_fault_loop
249
250###############################################################################
251#
252# Bus Error handler entry point
253# - handle external (async) bus errors separately
254#
255###############################################################################
256ENTRY(raw_bus_error)
257 add -4,sp
258 mov d0,(sp)
Akira Takeuchi8f19e3d2010-10-27 17:28:48 +0100259#if defined(CONFIG_ERRATUM_NEED_TO_RELOAD_MMUCTR)
260 mov (MMUCTR),d0
261 mov d0,(MMUCTR)
262#endif
David Howellsb920de12008-02-08 04:19:31 -0800263 mov (BCBERR),d0 # what
264 btst BCBERR_BEMR_DMA,d0 # see if it was an external bus error
265 beq __common_exception_aux # it wasn't
266
267 SAVE_ALL
268 mov (BCBEAR),d1 # destination of erroneous access
269
270 mov (REG_ORIG_D0,fp),d2
271 mov d2,(REG_D0,fp)
272 mov -1,d2
273 mov d2,(REG_ORIG_D0,fp)
274
275 add -4,sp
276 mov fp,(12,sp) # frame pointer
277 call io_bus_error[],0
278 jmp restore_all
279
280###############################################################################
281#
David Howells67ddb402011-03-18 16:54:30 +0000282# NMI exception entry points
283#
284# This is used by ordinary interrupt channels that have the GxICR_NMI bit set
285# in addition to the main NMI and Watchdog channels. SMP NMI IPIs use this
286# facility.
David Howellsb920de12008-02-08 04:19:31 -0800287#
288###############################################################################
289ENTRY(nmi_handler)
290 add -4,sp
291 mov d0,(sp)
292 mov (TBR),d0
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100293
294#ifdef CONFIG_SMP
295 add -4,sp
296 mov d0,(sp) # save d0(TBR)
297 movhu (NMIAGR),d0
298 and NMIAGR_GN,d0
299 lsr 0x2,d0
300 cmp CALL_FUNCTION_NMI_IPI,d0
David Howells67ddb402011-03-18 16:54:30 +0000301 bne nmi_not_smp_callfunc # if not call function, jump
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100302
303 # function call nmi ipi
304 add 4,sp # no need to store TBR
305 mov GxICR_DETECT,d0 # clear NMI request
306 movbu d0,(GxICR(CALL_FUNCTION_NMI_IPI))
307 movhu (GxICR(CALL_FUNCTION_NMI_IPI)),d0
308 and ~EPSW_NMID,epsw # enable NMI
309
310 mov (sp),d0 # restore d0
311 SAVE_ALL
312 call smp_nmi_call_function_interrupt[],0
313 RESTORE_ALL
314
David Howells67ddb402011-03-18 16:54:30 +0000315nmi_not_smp_callfunc:
316#ifdef CONFIG_KERNEL_DEBUGGER
317 cmp DEBUGGER_NMI_IPI,d0
318 bne nmi_not_debugger # if not kernel debugger NMI IPI, jump
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100319
David Howells67ddb402011-03-18 16:54:30 +0000320 # kernel debugger NMI IPI
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100321 add 4,sp # no need to store TBR
322 mov GxICR_DETECT,d0 # clear NMI
David Howells67ddb402011-03-18 16:54:30 +0000323 movbu d0,(GxICR(DEBUGGER_NMI_IPI))
324 movhu (GxICR(DEBUGGER_NMI_IPI)),d0
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100325 and ~EPSW_NMID,epsw # enable NMI
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100326
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100327 mov (sp),d0
328 SAVE_ALL
David Howells67ddb402011-03-18 16:54:30 +0000329 mov fp,d0 # arg 0: stacked register file
330 mov a2,d1 # arg 1: exception number
331 call debugger_nmi_interrupt[],0
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100332 RESTORE_ALL
David Howells67ddb402011-03-18 16:54:30 +0000333
334nmi_not_debugger:
335#endif /* CONFIG_KERNEL_DEBUGGER */
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100336 mov (sp),d0 # restore TBR to d0
337 add 4,sp
338#endif /* CONFIG_SMP */
339
David Howellsb920de12008-02-08 04:19:31 -0800340 bra __common_exception_nonmi
341
David Howells67ddb402011-03-18 16:54:30 +0000342###############################################################################
343#
344# General exception entry point
345#
346###############################################################################
David Howellsb920de12008-02-08 04:19:31 -0800347ENTRY(__common_exception)
348 add -4,sp
349 mov d0,(sp)
Akira Takeuchi8f19e3d2010-10-27 17:28:48 +0100350#if defined(CONFIG_ERRATUM_NEED_TO_RELOAD_MMUCTR)
351 mov (MMUCTR),d0
352 mov d0,(MMUCTR)
353#endif
David Howellsb920de12008-02-08 04:19:31 -0800354
355__common_exception_aux:
356 mov (TBR),d0
357 and ~EPSW_NMID,epsw # turn NMIs back on if not NMI
358 or EPSW_IE,epsw
359
360__common_exception_nonmi:
361 and 0x0000FFFF,d0 # turn the exception code into a vector
362 # table index
363
364 btst 0x00000007,d0
365 bne 1f
366 cmp 0x00000400,d0
367 bge 1f
368
369 SAVE_ALL # build the stack frame
370
371 mov (REG_D0,fp),a2 # get the exception number
372 mov (REG_ORIG_D0,fp),d0
373 mov d0,(REG_D0,fp)
374 mov -1,d0
375 mov d0,(REG_ORIG_D0,fp)
376
377#ifdef CONFIG_GDBSTUB
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100378#ifdef CONFIG_SMP
379 call gdbstub_busy_check[],0
380 and d0,d0 # check return value
381 beq 2f
382#else /* CONFIG_SMP */
David Howellsb920de12008-02-08 04:19:31 -0800383 btst 0x01,(gdbstub_busy)
384 beq 2f
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100385#endif /* CONFIG_SMP */
David Howellsb920de12008-02-08 04:19:31 -0800386 and ~EPSW_IE,epsw
387 mov fp,d0
388 mov a2,d1
389 call gdbstub_exception[],0 # gdbstub itself caused an exception
390 bra restore_all
3912:
Akira Takeuchi368dd5a2010-10-27 17:28:55 +0100392#endif /* CONFIG_GDBSTUB */
David Howellsb920de12008-02-08 04:19:31 -0800393
394 mov fp,d0 # arg 0: stacked register file
395 mov a2,d1 # arg 1: exception number
396 lsr 1,a2
397
398 mov (exception_table,a2),a2
399 calls (a2)
400 jmp ret_from_exception
401
4021: pi # BUG() equivalent
403
404###############################################################################
405#
406# Exception handler functions table
407#
408###############################################################################
409 .data
410ENTRY(exception_table)
411 .rept 0x400>>1
412 .long uninitialised_exception
413 .endr
414 .previous
415
416###############################################################################
417#
418# Change an entry in the exception table
419# - D0 exception code, D1 handler
420#
421###############################################################################
422ENTRY(set_excp_vector)
423 lsr 1,d0
424 add exception_table,d0
425 mov d1,(d0)
426 mov 4,d1
David Howellsb920de12008-02-08 04:19:31 -0800427 ret [],0
David Howellsb920de12008-02-08 04:19:31 -0800428
429###############################################################################
430#
431# System call table
432#
433###############################################################################
434 .data
435ENTRY(sys_call_table)
436 .long sys_restart_syscall /* 0 */
437 .long sys_exit
438 .long sys_fork
439 .long sys_read
440 .long sys_write
441 .long sys_open /* 5 */
442 .long sys_close
443 .long sys_waitpid
444 .long sys_creat
445 .long sys_link
446 .long sys_unlink /* 10 */
447 .long sys_execve
448 .long sys_chdir
449 .long sys_time
450 .long sys_mknod
451 .long sys_chmod /* 15 */
452 .long sys_lchown16
453 .long sys_ni_syscall /* old break syscall holder */
454 .long sys_stat
455 .long sys_lseek
456 .long sys_getpid /* 20 */
457 .long sys_mount
458 .long sys_oldumount
459 .long sys_setuid16
460 .long sys_getuid16
461 .long sys_stime /* 25 */
462 .long sys_ptrace
463 .long sys_alarm
464 .long sys_fstat
465 .long sys_pause
466 .long sys_utime /* 30 */
467 .long sys_ni_syscall /* old stty syscall holder */
468 .long sys_ni_syscall /* old gtty syscall holder */
469 .long sys_access
470 .long sys_nice
471 .long sys_ni_syscall /* 35 - old ftime syscall holder */
472 .long sys_sync
473 .long sys_kill
474 .long sys_rename
475 .long sys_mkdir
476 .long sys_rmdir /* 40 */
477 .long sys_dup
478 .long sys_pipe
479 .long sys_times
480 .long sys_ni_syscall /* old prof syscall holder */
481 .long sys_brk /* 45 */
482 .long sys_setgid16
483 .long sys_getgid16
484 .long sys_signal
485 .long sys_geteuid16
486 .long sys_getegid16 /* 50 */
487 .long sys_acct
488 .long sys_umount /* recycled never used phys() */
489 .long sys_ni_syscall /* old lock syscall holder */
490 .long sys_ioctl
491 .long sys_fcntl /* 55 */
492 .long sys_ni_syscall /* old mpx syscall holder */
493 .long sys_setpgid
494 .long sys_ni_syscall /* old ulimit syscall holder */
495 .long sys_ni_syscall /* old sys_olduname */
496 .long sys_umask /* 60 */
497 .long sys_chroot
498 .long sys_ustat
499 .long sys_dup2
500 .long sys_getppid
501 .long sys_getpgrp /* 65 */
502 .long sys_setsid
503 .long sys_sigaction
504 .long sys_sgetmask
505 .long sys_ssetmask
506 .long sys_setreuid16 /* 70 */
507 .long sys_setregid16
508 .long sys_sigsuspend
509 .long sys_sigpending
510 .long sys_sethostname
511 .long sys_setrlimit /* 75 */
512 .long sys_old_getrlimit
513 .long sys_getrusage
514 .long sys_gettimeofday
515 .long sys_settimeofday
516 .long sys_getgroups16 /* 80 */
517 .long sys_setgroups16
Christoph Hellwig5d0e5282010-03-10 15:21:13 -0800518 .long sys_old_select
David Howellsb920de12008-02-08 04:19:31 -0800519 .long sys_symlink
520 .long sys_lstat
521 .long sys_readlink /* 85 */
522 .long sys_uselib
523 .long sys_swapon
524 .long sys_reboot
Heiko Carstense55380e2009-01-14 14:13:55 +0100525 .long sys_old_readdir
David Howellsb920de12008-02-08 04:19:31 -0800526 .long old_mmap /* 90 */
527 .long sys_munmap
528 .long sys_truncate
529 .long sys_ftruncate
530 .long sys_fchmod
531 .long sys_fchown16 /* 95 */
532 .long sys_getpriority
533 .long sys_setpriority
534 .long sys_ni_syscall /* old profil syscall holder */
535 .long sys_statfs
536 .long sys_fstatfs /* 100 */
537 .long sys_ni_syscall /* ioperm */
538 .long sys_socketcall
539 .long sys_syslog
540 .long sys_setitimer
541 .long sys_getitimer /* 105 */
542 .long sys_newstat
543 .long sys_newlstat
544 .long sys_newfstat
545 .long sys_ni_syscall /* old sys_uname */
546 .long sys_ni_syscall /* 110 - iopl */
547 .long sys_vhangup
548 .long sys_ni_syscall /* old "idle" system call */
549 .long sys_ni_syscall /* vm86old */
550 .long sys_wait4
551 .long sys_swapoff /* 115 */
552 .long sys_sysinfo
553 .long sys_ipc
554 .long sys_fsync
555 .long sys_sigreturn
556 .long sys_clone /* 120 */
557 .long sys_setdomainname
558 .long sys_newuname
559 .long sys_ni_syscall /* modify_ldt */
560 .long sys_adjtimex
561 .long sys_mprotect /* 125 */
562 .long sys_sigprocmask
563 .long sys_ni_syscall /* old "create_module" */
564 .long sys_init_module
565 .long sys_delete_module
566 .long sys_ni_syscall /* 130: old "get_kernel_syms" */
567 .long sys_quotactl
568 .long sys_getpgid
569 .long sys_fchdir
570 .long sys_bdflush
571 .long sys_sysfs /* 135 */
572 .long sys_personality
573 .long sys_ni_syscall /* reserved for afs_syscall */
574 .long sys_setfsuid16
575 .long sys_setfsgid16
576 .long sys_llseek /* 140 */
577 .long sys_getdents
578 .long sys_select
579 .long sys_flock
580 .long sys_msync
581 .long sys_readv /* 145 */
582 .long sys_writev
583 .long sys_getsid
584 .long sys_fdatasync
585 .long sys_sysctl
586 .long sys_mlock /* 150 */
587 .long sys_munlock
588 .long sys_mlockall
589 .long sys_munlockall
590 .long sys_sched_setparam
591 .long sys_sched_getparam /* 155 */
592 .long sys_sched_setscheduler
593 .long sys_sched_getscheduler
594 .long sys_sched_yield
595 .long sys_sched_get_priority_max
596 .long sys_sched_get_priority_min /* 160 */
597 .long sys_sched_rr_get_interval
598 .long sys_nanosleep
599 .long sys_mremap
600 .long sys_setresuid16
601 .long sys_getresuid16 /* 165 */
602 .long sys_ni_syscall /* vm86 */
603 .long sys_ni_syscall /* Old sys_query_module */
604 .long sys_poll
NeilBrownf5b94092011-08-26 18:03:11 -0400605 .long sys_ni_syscall /* was nfsservctl */
David Howellsb920de12008-02-08 04:19:31 -0800606 .long sys_setresgid16 /* 170 */
607 .long sys_getresgid16
608 .long sys_prctl
609 .long sys_rt_sigreturn
610 .long sys_rt_sigaction
611 .long sys_rt_sigprocmask /* 175 */
612 .long sys_rt_sigpending
613 .long sys_rt_sigtimedwait
614 .long sys_rt_sigqueueinfo
615 .long sys_rt_sigsuspend
616 .long sys_pread64 /* 180 */
617 .long sys_pwrite64
618 .long sys_chown16
619 .long sys_getcwd
620 .long sys_capget
621 .long sys_capset /* 185 */
622 .long sys_sigaltstack
623 .long sys_sendfile
624 .long sys_ni_syscall /* reserved for streams1 */
625 .long sys_ni_syscall /* reserved for streams2 */
626 .long sys_vfork /* 190 */
627 .long sys_getrlimit
Al Virof8b72562009-11-30 17:37:04 -0500628 .long sys_mmap_pgoff
David Howellsb920de12008-02-08 04:19:31 -0800629 .long sys_truncate64
630 .long sys_ftruncate64
631 .long sys_stat64 /* 195 */
632 .long sys_lstat64
633 .long sys_fstat64
634 .long sys_lchown
635 .long sys_getuid
636 .long sys_getgid /* 200 */
637 .long sys_geteuid
638 .long sys_getegid
639 .long sys_setreuid
640 .long sys_setregid
641 .long sys_getgroups /* 205 */
642 .long sys_setgroups
643 .long sys_fchown
644 .long sys_setresuid
645 .long sys_getresuid
646 .long sys_setresgid /* 210 */
647 .long sys_getresgid
648 .long sys_chown
649 .long sys_setuid
650 .long sys_setgid
651 .long sys_setfsuid /* 215 */
652 .long sys_setfsgid
653 .long sys_pivot_root
654 .long sys_mincore
655 .long sys_madvise
656 .long sys_getdents64 /* 220 */
657 .long sys_fcntl64
658 .long sys_ni_syscall /* reserved for TUX */
659 .long sys_ni_syscall
660 .long sys_gettid
661 .long sys_readahead /* 225 */
662 .long sys_setxattr
663 .long sys_lsetxattr
664 .long sys_fsetxattr
665 .long sys_getxattr
666 .long sys_lgetxattr /* 230 */
667 .long sys_fgetxattr
668 .long sys_listxattr
669 .long sys_llistxattr
670 .long sys_flistxattr
671 .long sys_removexattr /* 235 */
672 .long sys_lremovexattr
673 .long sys_fremovexattr
674 .long sys_tkill
675 .long sys_sendfile64
676 .long sys_futex /* 240 */
677 .long sys_sched_setaffinity
678 .long sys_sched_getaffinity
679 .long sys_ni_syscall /* sys_set_thread_area */
680 .long sys_ni_syscall /* sys_get_thread_area */
681 .long sys_io_setup /* 245 */
682 .long sys_io_destroy
683 .long sys_io_getevents
684 .long sys_io_submit
685 .long sys_io_cancel
686 .long sys_fadvise64 /* 250 */
687 .long sys_ni_syscall
688 .long sys_exit_group
689 .long sys_lookup_dcookie
690 .long sys_epoll_create
691 .long sys_epoll_ctl /* 255 */
692 .long sys_epoll_wait
693 .long sys_remap_file_pages
694 .long sys_set_tid_address
695 .long sys_timer_create
696 .long sys_timer_settime /* 260 */
697 .long sys_timer_gettime
698 .long sys_timer_getoverrun
699 .long sys_timer_delete
700 .long sys_clock_settime
701 .long sys_clock_gettime /* 265 */
702 .long sys_clock_getres
703 .long sys_clock_nanosleep
704 .long sys_statfs64
705 .long sys_fstatfs64
706 .long sys_tgkill /* 270 */
707 .long sys_utimes
708 .long sys_fadvise64_64
709 .long sys_ni_syscall /* sys_vserver */
710 .long sys_mbind
711 .long sys_get_mempolicy /* 275 */
712 .long sys_set_mempolicy
713 .long sys_mq_open
714 .long sys_mq_unlink
715 .long sys_mq_timedsend
716 .long sys_mq_timedreceive /* 280 */
717 .long sys_mq_notify
718 .long sys_mq_getsetattr
719 .long sys_kexec_load
720 .long sys_waitid
721 .long sys_ni_syscall /* 285 */ /* available */
722 .long sys_add_key
723 .long sys_request_key
724 .long sys_keyctl
725 .long sys_cacheflush
726 .long sys_ioprio_set /* 290 */
727 .long sys_ioprio_get
728 .long sys_inotify_init
729 .long sys_inotify_add_watch
730 .long sys_inotify_rm_watch
731 .long sys_migrate_pages /* 295 */
732 .long sys_openat
733 .long sys_mkdirat
734 .long sys_mknodat
735 .long sys_fchownat
736 .long sys_futimesat /* 300 */
737 .long sys_fstatat64
738 .long sys_unlinkat
739 .long sys_renameat
740 .long sys_linkat
741 .long sys_symlinkat /* 305 */
742 .long sys_readlinkat
743 .long sys_fchmodat
744 .long sys_faccessat
745 .long sys_pselect6
746 .long sys_ppoll /* 310 */
747 .long sys_unshare
748 .long sys_set_robust_list
749 .long sys_get_robust_list
750 .long sys_splice
751 .long sys_sync_file_range /* 315 */
752 .long sys_tee
753 .long sys_vmsplice
754 .long sys_move_pages
755 .long sys_getcpu
756 .long sys_epoll_pwait /* 320 */
757 .long sys_utimensat
758 .long sys_signalfd
759 .long sys_timerfd_create
760 .long sys_eventfd
761 .long sys_fallocate /* 325 */
762 .long sys_timerfd_settime
763 .long sys_timerfd_gettime
David Howells02c36382008-07-31 13:01:30 +0100764 .long sys_signalfd4
765 .long sys_eventfd2
766 .long sys_epoll_create1 /* 330 */
767 .long sys_dup3
768 .long sys_pipe2
769 .long sys_inotify_init1
David Howells76d320a2009-04-15 19:34:46 +0100770 .long sys_preadv
771 .long sys_pwritev /* 335 */
David Howells60860712009-06-30 22:33:15 +0100772 .long sys_rt_tgsigqueueinfo
Ingo Molnarcdd6c482009-09-21 12:02:48 +0200773 .long sys_perf_event_open
David Howellse5d20d02010-01-08 14:43:17 -0800774 .long sys_recvmmsg
Eric W. Biederman7b21fdd2011-05-27 19:28:27 -0700775 .long sys_setns
David Howellsb920de12008-02-08 04:19:31 -0800776
777
778nr_syscalls=(.-sys_call_table)/4