blob: 355f681767713404416b2f754893554778eb4ced [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>
18#include <asm/system.h>
David Howellsdf9ee292010-10-07 14:08:55 +010019#include <asm/irqflags.h>
David Howellsb920de12008-02-08 04:19:31 -080020#include <asm/thread_info.h>
21#include <asm/intctl-regs.h>
22#include <asm/busctl-regs.h>
23#include <asm/timer-regs.h>
David Howells2f2a2132009-04-10 14:33:48 +010024#include <unit/leds.h>
David Howellsb920de12008-02-08 04:19:31 -080025#include <asm/page.h>
26#include <asm/pgtable.h>
27#include <asm/errno.h>
28#include <asm/asm-offsets.h>
29#include <asm/frame.inc>
30
31#ifdef CONFIG_PREEMPT
32#define preempt_stop __cli
33#else
34#define preempt_stop
35#define resume_kernel restore_all
36#endif
37
38 .macro __cli
39 and ~EPSW_IM,epsw
40 or EPSW_IE|MN10300_CLI_LEVEL,epsw
41 nop
42 nop
43 nop
44 .endm
45 .macro __sti
46 or EPSW_IE|EPSW_IM_7,epsw
47 .endm
48
49
50 .am33_2
51
52###############################################################################
53#
54# the return path for a forked child
55# - on entry, D0 holds the address of the previous task to run
56#
57###############################################################################
58ENTRY(ret_from_fork)
59 call schedule_tail[],0
60 GET_THREAD_INFO a2
61
62 # return 0 to indicate child process
63 clr d0
64 mov d0,(REG_D0,fp)
65 jmp syscall_exit
66
67###############################################################################
68#
69# system call handler
70#
71###############################################################################
72ENTRY(system_call)
73 add -4,sp
74 SAVE_ALL
75 mov d0,(REG_ORIG_D0,fp)
76 GET_THREAD_INFO a2
77 cmp nr_syscalls,d0
78 bcc syscall_badsys
79 btst _TIF_SYSCALL_TRACE,(TI_flags,a2)
David Howells5d289962009-06-11 13:08:37 +010080 bne syscall_entry_trace
David Howellsb920de12008-02-08 04:19:31 -080081syscall_call:
82 add d0,d0,a1
83 add a1,a1
84 mov (REG_A0,fp),d0
85 mov (sys_call_table,a1),a0
86 calls (a0)
87 mov d0,(REG_D0,fp)
88syscall_exit:
89 # make sure we don't miss an interrupt setting need_resched or
90 # sigpending between sampling and the rti
91 __cli
92 mov (TI_flags,a2),d2
93 btst _TIF_ALLWORK_MASK,d2
94 bne syscall_exit_work
95restore_all:
96 RESTORE_ALL
97
98###############################################################################
99#
100# perform work that needs to be done immediately before resumption and syscall
101# tracing
102#
103###############################################################################
104 ALIGN
105syscall_exit_work:
106 btst _TIF_SYSCALL_TRACE,d2
107 beq work_pending
David Howells5d289962009-06-11 13:08:37 +0100108 __sti # could let syscall_trace_exit() call
David Howellsb920de12008-02-08 04:19:31 -0800109 # schedule() instead
110 mov fp,d0
David Howells5d289962009-06-11 13:08:37 +0100111 call syscall_trace_exit[],0 # do_syscall_trace(regs)
David Howellsb920de12008-02-08 04:19:31 -0800112 jmp resume_userspace
113
114 ALIGN
115work_pending:
116 btst _TIF_NEED_RESCHED,d2
117 beq work_notifysig
118
119work_resched:
120 call schedule[],0
121
122 # make sure we don't miss an interrupt setting need_resched or
123 # sigpending between sampling and the rti
124 __cli
125
126 # is there any work to be done other than syscall tracing?
127 mov (TI_flags,a2),d2
128 btst _TIF_WORK_MASK,d2
129 beq restore_all
130 btst _TIF_NEED_RESCHED,d2
131 bne work_resched
132
133 # deal with pending signals and notify-resume requests
134work_notifysig:
135 mov fp,d0
136 mov d2,d1
137 call do_notify_resume[],0
138 jmp resume_userspace
139
140 # perform syscall entry tracing
David Howells5d289962009-06-11 13:08:37 +0100141syscall_entry_trace:
David Howellsb920de12008-02-08 04:19:31 -0800142 mov -ENOSYS,d0
143 mov d0,(REG_D0,fp)
144 mov fp,d0
David Howells5d289962009-06-11 13:08:37 +0100145 call syscall_trace_entry[],0 # returns the syscall number to actually use
David Howellsb920de12008-02-08 04:19:31 -0800146 mov (REG_D1,fp),d1
147 cmp nr_syscalls,d0
148 bcs syscall_call
149 jmp syscall_exit
150
151syscall_badsys:
152 mov -ENOSYS,d0
153 mov d0,(REG_D0,fp)
154 jmp resume_userspace
155
156 # userspace resumption stub bypassing syscall exit tracing
157 .globl ret_from_exception, ret_from_intr
158 ALIGN
159ret_from_exception:
160 preempt_stop
161ret_from_intr:
162 GET_THREAD_INFO a2
163 mov (REG_EPSW,fp),d0 # need to deliver signals before
164 # returning to userspace
165 and EPSW_nSL,d0
166 beq resume_kernel # returning to supervisor mode
167
168ENTRY(resume_userspace)
169 # make sure we don't miss an interrupt setting need_resched or
170 # sigpending between sampling and the rti
171 __cli
172
173 # is there any work to be done on int/exception return?
174 mov (TI_flags,a2),d2
175 btst _TIF_WORK_MASK,d2
176 bne work_pending
177 jmp restore_all
178
179#ifdef CONFIG_PREEMPT
180ENTRY(resume_kernel)
Akira Takeuchi24646bd2008-12-10 12:43:29 +0000181 __cli
David Howellsb920de12008-02-08 04:19:31 -0800182 mov (TI_preempt_count,a2),d0 # non-zero preempt_count ?
183 cmp 0,d0
184 bne restore_all
185
186need_resched:
187 btst _TIF_NEED_RESCHED,(TI_flags,a2)
188 beq restore_all
189 mov (REG_EPSW,fp),d0
190 and EPSW_IM,d0
191 cmp EPSW_IM_7,d0 # interrupts off (exception path) ?
Akira Takeuchi24646bd2008-12-10 12:43:29 +0000192 bne restore_all
David Howellsb920de12008-02-08 04:19:31 -0800193 call preempt_schedule_irq[],0
194 jmp need_resched
195#endif
196
197
198###############################################################################
199#
200# IRQ handler entry point
201# - intended to be entered at multiple priorities
202#
203###############################################################################
204ENTRY(irq_handler)
205 add -4,sp
206 SAVE_ALL
207
208 # it's not a syscall
209 mov 0xffffffff,d0
210 mov d0,(REG_ORIG_D0,fp)
211
212 mov fp,d0
213 call do_IRQ[],0 # do_IRQ(regs)
214
215 jmp ret_from_intr
216
217###############################################################################
218#
David Howellsb920de12008-02-08 04:19:31 -0800219# Double Fault handler entry point
220# - note that there will not be a stack, D0/A0 will hold EPSW/PC as were
221#
222###############################################################################
223 .section .bss
224 .balign THREAD_SIZE
225 .space THREAD_SIZE
226__df_stack:
227 .previous
228
229ENTRY(double_fault)
230 mov a0,(__df_stack-4) # PC as was
231 mov d0,(__df_stack-8) # EPSW as was
232 mn10300_set_dbfleds # display 'db-f' on the LEDs
233 mov 0xaa55aa55,d0
234 mov d0,(__df_stack-12) # no ORIG_D0
235 mov sp,a0 # save corrupted SP
236 mov __df_stack-12,sp # emergency supervisor stack
237 SAVE_ALL
238 mov a0,(REG_A0,fp) # save corrupted SP as A0 (which got
239 # clobbered by the CPU)
240 mov fp,d0
241 calls do_double_fault
242double_fault_loop:
243 bra double_fault_loop
244
245###############################################################################
246#
247# Bus Error handler entry point
248# - handle external (async) bus errors separately
249#
250###############################################################################
251ENTRY(raw_bus_error)
252 add -4,sp
253 mov d0,(sp)
Akira Takeuchi8f19e3d2010-10-27 17:28:48 +0100254#if defined(CONFIG_ERRATUM_NEED_TO_RELOAD_MMUCTR)
255 mov (MMUCTR),d0
256 mov d0,(MMUCTR)
257#endif
David Howellsb920de12008-02-08 04:19:31 -0800258 mov (BCBERR),d0 # what
259 btst BCBERR_BEMR_DMA,d0 # see if it was an external bus error
260 beq __common_exception_aux # it wasn't
261
262 SAVE_ALL
263 mov (BCBEAR),d1 # destination of erroneous access
264
265 mov (REG_ORIG_D0,fp),d2
266 mov d2,(REG_D0,fp)
267 mov -1,d2
268 mov d2,(REG_ORIG_D0,fp)
269
270 add -4,sp
271 mov fp,(12,sp) # frame pointer
272 call io_bus_error[],0
273 jmp restore_all
274
275###############################################################################
276#
277# Miscellaneous exception entry points
278#
279###############################################################################
280ENTRY(nmi_handler)
281 add -4,sp
282 mov d0,(sp)
283 mov (TBR),d0
284 bra __common_exception_nonmi
285
286ENTRY(__common_exception)
287 add -4,sp
288 mov d0,(sp)
Akira Takeuchi8f19e3d2010-10-27 17:28:48 +0100289#if defined(CONFIG_ERRATUM_NEED_TO_RELOAD_MMUCTR)
290 mov (MMUCTR),d0
291 mov d0,(MMUCTR)
292#endif
David Howellsb920de12008-02-08 04:19:31 -0800293
294__common_exception_aux:
295 mov (TBR),d0
296 and ~EPSW_NMID,epsw # turn NMIs back on if not NMI
297 or EPSW_IE,epsw
298
299__common_exception_nonmi:
300 and 0x0000FFFF,d0 # turn the exception code into a vector
301 # table index
302
303 btst 0x00000007,d0
304 bne 1f
305 cmp 0x00000400,d0
306 bge 1f
307
308 SAVE_ALL # build the stack frame
309
310 mov (REG_D0,fp),a2 # get the exception number
311 mov (REG_ORIG_D0,fp),d0
312 mov d0,(REG_D0,fp)
313 mov -1,d0
314 mov d0,(REG_ORIG_D0,fp)
315
316#ifdef CONFIG_GDBSTUB
317 btst 0x01,(gdbstub_busy)
318 beq 2f
319 and ~EPSW_IE,epsw
320 mov fp,d0
321 mov a2,d1
322 call gdbstub_exception[],0 # gdbstub itself caused an exception
323 bra restore_all
3242:
325#endif
326
327 mov fp,d0 # arg 0: stacked register file
328 mov a2,d1 # arg 1: exception number
329 lsr 1,a2
330
331 mov (exception_table,a2),a2
332 calls (a2)
333 jmp ret_from_exception
334
3351: pi # BUG() equivalent
336
337###############################################################################
338#
339# Exception handler functions table
340#
341###############################################################################
342 .data
343ENTRY(exception_table)
344 .rept 0x400>>1
345 .long uninitialised_exception
346 .endr
347 .previous
348
349###############################################################################
350#
351# Change an entry in the exception table
352# - D0 exception code, D1 handler
353#
354###############################################################################
355ENTRY(set_excp_vector)
356 lsr 1,d0
357 add exception_table,d0
358 mov d1,(d0)
359 mov 4,d1
360#if defined(CONFIG_MN10300_CACHE_WBACK)
361 jmp mn10300_dcache_flush_inv_range2
362#else
363 ret [],0
364#endif
365
366###############################################################################
367#
368# System call table
369#
370###############################################################################
371 .data
372ENTRY(sys_call_table)
373 .long sys_restart_syscall /* 0 */
374 .long sys_exit
375 .long sys_fork
376 .long sys_read
377 .long sys_write
378 .long sys_open /* 5 */
379 .long sys_close
380 .long sys_waitpid
381 .long sys_creat
382 .long sys_link
383 .long sys_unlink /* 10 */
384 .long sys_execve
385 .long sys_chdir
386 .long sys_time
387 .long sys_mknod
388 .long sys_chmod /* 15 */
389 .long sys_lchown16
390 .long sys_ni_syscall /* old break syscall holder */
391 .long sys_stat
392 .long sys_lseek
393 .long sys_getpid /* 20 */
394 .long sys_mount
395 .long sys_oldumount
396 .long sys_setuid16
397 .long sys_getuid16
398 .long sys_stime /* 25 */
399 .long sys_ptrace
400 .long sys_alarm
401 .long sys_fstat
402 .long sys_pause
403 .long sys_utime /* 30 */
404 .long sys_ni_syscall /* old stty syscall holder */
405 .long sys_ni_syscall /* old gtty syscall holder */
406 .long sys_access
407 .long sys_nice
408 .long sys_ni_syscall /* 35 - old ftime syscall holder */
409 .long sys_sync
410 .long sys_kill
411 .long sys_rename
412 .long sys_mkdir
413 .long sys_rmdir /* 40 */
414 .long sys_dup
415 .long sys_pipe
416 .long sys_times
417 .long sys_ni_syscall /* old prof syscall holder */
418 .long sys_brk /* 45 */
419 .long sys_setgid16
420 .long sys_getgid16
421 .long sys_signal
422 .long sys_geteuid16
423 .long sys_getegid16 /* 50 */
424 .long sys_acct
425 .long sys_umount /* recycled never used phys() */
426 .long sys_ni_syscall /* old lock syscall holder */
427 .long sys_ioctl
428 .long sys_fcntl /* 55 */
429 .long sys_ni_syscall /* old mpx syscall holder */
430 .long sys_setpgid
431 .long sys_ni_syscall /* old ulimit syscall holder */
432 .long sys_ni_syscall /* old sys_olduname */
433 .long sys_umask /* 60 */
434 .long sys_chroot
435 .long sys_ustat
436 .long sys_dup2
437 .long sys_getppid
438 .long sys_getpgrp /* 65 */
439 .long sys_setsid
440 .long sys_sigaction
441 .long sys_sgetmask
442 .long sys_ssetmask
443 .long sys_setreuid16 /* 70 */
444 .long sys_setregid16
445 .long sys_sigsuspend
446 .long sys_sigpending
447 .long sys_sethostname
448 .long sys_setrlimit /* 75 */
449 .long sys_old_getrlimit
450 .long sys_getrusage
451 .long sys_gettimeofday
452 .long sys_settimeofday
453 .long sys_getgroups16 /* 80 */
454 .long sys_setgroups16
Christoph Hellwig5d0e5282010-03-10 15:21:13 -0800455 .long sys_old_select
David Howellsb920de12008-02-08 04:19:31 -0800456 .long sys_symlink
457 .long sys_lstat
458 .long sys_readlink /* 85 */
459 .long sys_uselib
460 .long sys_swapon
461 .long sys_reboot
Heiko Carstense55380e2009-01-14 14:13:55 +0100462 .long sys_old_readdir
David Howellsb920de12008-02-08 04:19:31 -0800463 .long old_mmap /* 90 */
464 .long sys_munmap
465 .long sys_truncate
466 .long sys_ftruncate
467 .long sys_fchmod
468 .long sys_fchown16 /* 95 */
469 .long sys_getpriority
470 .long sys_setpriority
471 .long sys_ni_syscall /* old profil syscall holder */
472 .long sys_statfs
473 .long sys_fstatfs /* 100 */
474 .long sys_ni_syscall /* ioperm */
475 .long sys_socketcall
476 .long sys_syslog
477 .long sys_setitimer
478 .long sys_getitimer /* 105 */
479 .long sys_newstat
480 .long sys_newlstat
481 .long sys_newfstat
482 .long sys_ni_syscall /* old sys_uname */
483 .long sys_ni_syscall /* 110 - iopl */
484 .long sys_vhangup
485 .long sys_ni_syscall /* old "idle" system call */
486 .long sys_ni_syscall /* vm86old */
487 .long sys_wait4
488 .long sys_swapoff /* 115 */
489 .long sys_sysinfo
490 .long sys_ipc
491 .long sys_fsync
492 .long sys_sigreturn
493 .long sys_clone /* 120 */
494 .long sys_setdomainname
495 .long sys_newuname
496 .long sys_ni_syscall /* modify_ldt */
497 .long sys_adjtimex
498 .long sys_mprotect /* 125 */
499 .long sys_sigprocmask
500 .long sys_ni_syscall /* old "create_module" */
501 .long sys_init_module
502 .long sys_delete_module
503 .long sys_ni_syscall /* 130: old "get_kernel_syms" */
504 .long sys_quotactl
505 .long sys_getpgid
506 .long sys_fchdir
507 .long sys_bdflush
508 .long sys_sysfs /* 135 */
509 .long sys_personality
510 .long sys_ni_syscall /* reserved for afs_syscall */
511 .long sys_setfsuid16
512 .long sys_setfsgid16
513 .long sys_llseek /* 140 */
514 .long sys_getdents
515 .long sys_select
516 .long sys_flock
517 .long sys_msync
518 .long sys_readv /* 145 */
519 .long sys_writev
520 .long sys_getsid
521 .long sys_fdatasync
522 .long sys_sysctl
523 .long sys_mlock /* 150 */
524 .long sys_munlock
525 .long sys_mlockall
526 .long sys_munlockall
527 .long sys_sched_setparam
528 .long sys_sched_getparam /* 155 */
529 .long sys_sched_setscheduler
530 .long sys_sched_getscheduler
531 .long sys_sched_yield
532 .long sys_sched_get_priority_max
533 .long sys_sched_get_priority_min /* 160 */
534 .long sys_sched_rr_get_interval
535 .long sys_nanosleep
536 .long sys_mremap
537 .long sys_setresuid16
538 .long sys_getresuid16 /* 165 */
539 .long sys_ni_syscall /* vm86 */
540 .long sys_ni_syscall /* Old sys_query_module */
541 .long sys_poll
542 .long sys_nfsservctl
543 .long sys_setresgid16 /* 170 */
544 .long sys_getresgid16
545 .long sys_prctl
546 .long sys_rt_sigreturn
547 .long sys_rt_sigaction
548 .long sys_rt_sigprocmask /* 175 */
549 .long sys_rt_sigpending
550 .long sys_rt_sigtimedwait
551 .long sys_rt_sigqueueinfo
552 .long sys_rt_sigsuspend
553 .long sys_pread64 /* 180 */
554 .long sys_pwrite64
555 .long sys_chown16
556 .long sys_getcwd
557 .long sys_capget
558 .long sys_capset /* 185 */
559 .long sys_sigaltstack
560 .long sys_sendfile
561 .long sys_ni_syscall /* reserved for streams1 */
562 .long sys_ni_syscall /* reserved for streams2 */
563 .long sys_vfork /* 190 */
564 .long sys_getrlimit
Al Virof8b72562009-11-30 17:37:04 -0500565 .long sys_mmap_pgoff
David Howellsb920de12008-02-08 04:19:31 -0800566 .long sys_truncate64
567 .long sys_ftruncate64
568 .long sys_stat64 /* 195 */
569 .long sys_lstat64
570 .long sys_fstat64
571 .long sys_lchown
572 .long sys_getuid
573 .long sys_getgid /* 200 */
574 .long sys_geteuid
575 .long sys_getegid
576 .long sys_setreuid
577 .long sys_setregid
578 .long sys_getgroups /* 205 */
579 .long sys_setgroups
580 .long sys_fchown
581 .long sys_setresuid
582 .long sys_getresuid
583 .long sys_setresgid /* 210 */
584 .long sys_getresgid
585 .long sys_chown
586 .long sys_setuid
587 .long sys_setgid
588 .long sys_setfsuid /* 215 */
589 .long sys_setfsgid
590 .long sys_pivot_root
591 .long sys_mincore
592 .long sys_madvise
593 .long sys_getdents64 /* 220 */
594 .long sys_fcntl64
595 .long sys_ni_syscall /* reserved for TUX */
596 .long sys_ni_syscall
597 .long sys_gettid
598 .long sys_readahead /* 225 */
599 .long sys_setxattr
600 .long sys_lsetxattr
601 .long sys_fsetxattr
602 .long sys_getxattr
603 .long sys_lgetxattr /* 230 */
604 .long sys_fgetxattr
605 .long sys_listxattr
606 .long sys_llistxattr
607 .long sys_flistxattr
608 .long sys_removexattr /* 235 */
609 .long sys_lremovexattr
610 .long sys_fremovexattr
611 .long sys_tkill
612 .long sys_sendfile64
613 .long sys_futex /* 240 */
614 .long sys_sched_setaffinity
615 .long sys_sched_getaffinity
616 .long sys_ni_syscall /* sys_set_thread_area */
617 .long sys_ni_syscall /* sys_get_thread_area */
618 .long sys_io_setup /* 245 */
619 .long sys_io_destroy
620 .long sys_io_getevents
621 .long sys_io_submit
622 .long sys_io_cancel
623 .long sys_fadvise64 /* 250 */
624 .long sys_ni_syscall
625 .long sys_exit_group
626 .long sys_lookup_dcookie
627 .long sys_epoll_create
628 .long sys_epoll_ctl /* 255 */
629 .long sys_epoll_wait
630 .long sys_remap_file_pages
631 .long sys_set_tid_address
632 .long sys_timer_create
633 .long sys_timer_settime /* 260 */
634 .long sys_timer_gettime
635 .long sys_timer_getoverrun
636 .long sys_timer_delete
637 .long sys_clock_settime
638 .long sys_clock_gettime /* 265 */
639 .long sys_clock_getres
640 .long sys_clock_nanosleep
641 .long sys_statfs64
642 .long sys_fstatfs64
643 .long sys_tgkill /* 270 */
644 .long sys_utimes
645 .long sys_fadvise64_64
646 .long sys_ni_syscall /* sys_vserver */
647 .long sys_mbind
648 .long sys_get_mempolicy /* 275 */
649 .long sys_set_mempolicy
650 .long sys_mq_open
651 .long sys_mq_unlink
652 .long sys_mq_timedsend
653 .long sys_mq_timedreceive /* 280 */
654 .long sys_mq_notify
655 .long sys_mq_getsetattr
656 .long sys_kexec_load
657 .long sys_waitid
658 .long sys_ni_syscall /* 285 */ /* available */
659 .long sys_add_key
660 .long sys_request_key
661 .long sys_keyctl
662 .long sys_cacheflush
663 .long sys_ioprio_set /* 290 */
664 .long sys_ioprio_get
665 .long sys_inotify_init
666 .long sys_inotify_add_watch
667 .long sys_inotify_rm_watch
668 .long sys_migrate_pages /* 295 */
669 .long sys_openat
670 .long sys_mkdirat
671 .long sys_mknodat
672 .long sys_fchownat
673 .long sys_futimesat /* 300 */
674 .long sys_fstatat64
675 .long sys_unlinkat
676 .long sys_renameat
677 .long sys_linkat
678 .long sys_symlinkat /* 305 */
679 .long sys_readlinkat
680 .long sys_fchmodat
681 .long sys_faccessat
682 .long sys_pselect6
683 .long sys_ppoll /* 310 */
684 .long sys_unshare
685 .long sys_set_robust_list
686 .long sys_get_robust_list
687 .long sys_splice
688 .long sys_sync_file_range /* 315 */
689 .long sys_tee
690 .long sys_vmsplice
691 .long sys_move_pages
692 .long sys_getcpu
693 .long sys_epoll_pwait /* 320 */
694 .long sys_utimensat
695 .long sys_signalfd
696 .long sys_timerfd_create
697 .long sys_eventfd
698 .long sys_fallocate /* 325 */
699 .long sys_timerfd_settime
700 .long sys_timerfd_gettime
David Howells02c36382008-07-31 13:01:30 +0100701 .long sys_signalfd4
702 .long sys_eventfd2
703 .long sys_epoll_create1 /* 330 */
704 .long sys_dup3
705 .long sys_pipe2
706 .long sys_inotify_init1
David Howells76d320a2009-04-15 19:34:46 +0100707 .long sys_preadv
708 .long sys_pwritev /* 335 */
David Howells60860712009-06-30 22:33:15 +0100709 .long sys_rt_tgsigqueueinfo
Ingo Molnarcdd6c482009-09-21 12:02:48 +0200710 .long sys_perf_event_open
David Howellse5d20d02010-01-08 14:43:17 -0800711 .long sys_recvmmsg
David Howellsb920de12008-02-08 04:19:31 -0800712
713
714nr_syscalls=(.-sys_call_table)/4