[MIPS] Fix rdhwr_op definition.
[deliverable/linux.git] / arch / mips / kernel / scall32-o32.S
CommitLineData
1da177e4
LT
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 1995, 96, 97, 98, 99, 2000, 01, 02 by Ralf Baechle
7 * Copyright (C) 2001 MIPS Technologies, Inc.
8 * Copyright (C) 2004 Thiemo Seufer
9 */
1da177e4
LT
10#include <linux/errno.h>
11#include <asm/asm.h>
12#include <asm/asmmacro.h>
13#include <asm/mipsregs.h>
14#include <asm/regdef.h>
15#include <asm/stackframe.h>
16#include <asm/isadep.h>
17#include <asm/sysmips.h>
18#include <asm/thread_info.h>
19#include <asm/unistd.h>
20#include <asm/war.h>
048eb582 21#include <asm/asm-offsets.h>
1da177e4
LT
22
23/* Highest syscall used of any syscall flavour */
24#define MAX_SYSCALL_NO __NR_O32_Linux + __NR_O32_Linux_syscalls
25
26 .align 5
27NESTED(handle_sys, PT_SIZE, sp)
28 .set noat
29 SAVE_SOME
30 STI
31 .set at
32
33 lw t1, PT_EPC(sp) # skip syscall on return
34
35#if defined(CONFIG_BINFMT_IRIX)
36 sltiu t0, v0, MAX_SYSCALL_NO + 1 # check syscall number
37#else
38 subu v0, v0, __NR_O32_Linux # check syscall number
39 sltiu t0, v0, __NR_O32_Linux_syscalls + 1
40#endif
41 addiu t1, 4 # skip to next instruction
42 sw t1, PT_EPC(sp)
43 beqz t0, illegal_syscall
44
45 sll t0, v0, 3
46 la t1, sys_call_table
47 addu t1, t0
48 lw t2, (t1) # syscall routine
49 lw t3, 4(t1) # >= 0 if we need stack arguments
50 beqz t2, illegal_syscall
51
52 sw a3, PT_R26(sp) # save a3 for syscall restarting
53 bgez t3, stackargs
54
55stack_done:
56 lw t0, TI_FLAGS($28) # syscall tracing enabled?
57 li t1, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT
58 and t0, t1
59 bnez t0, syscall_trace_entry # -> yes
60
61 jalr t2 # Do The Real Thing (TM)
62
63 li t0, -EMAXERRNO - 1 # error?
64 sltu t0, t0, v0
65 sw t0, PT_R7(sp) # set error flag
66 beqz t0, 1f
67
68 negu v0 # error
69 sw v0, PT_R0(sp) # set flag for syscall
70 # restarting
711: sw v0, PT_R2(sp) # result
72
73o32_syscall_exit:
74 local_irq_disable # make sure need_resched and
75 # signals dont change between
76 # sampling and return
77 lw a2, TI_FLAGS($28) # current->work
78 li t0, _TIF_ALLWORK_MASK
79 and t0, a2
80 bnez t0, o32_syscall_exit_work
81
82 j restore_partial
83
84o32_syscall_exit_work:
85 j syscall_exit_work_partial
86
87/* ------------------------------------------------------------------------ */
88
89syscall_trace_entry:
90 SAVE_STATIC
91 move s0, t2
92 move a0, sp
93 li a1, 0
94 jal do_syscall_trace
95
04a7052c
RB
96 move t0, s0
97 RESTORE_STATIC
1da177e4
LT
98 lw a0, PT_R4(sp) # Restore argument registers
99 lw a1, PT_R5(sp)
100 lw a2, PT_R6(sp)
101 lw a3, PT_R7(sp)
04a7052c 102 jalr t0
1da177e4
LT
103
104 li t0, -EMAXERRNO - 1 # error?
105 sltu t0, t0, v0
106 sw t0, PT_R7(sp) # set error flag
107 beqz t0, 1f
108
109 negu v0 # error
110 sw v0, PT_R0(sp) # set flag for syscall
111 # restarting
1121: sw v0, PT_R2(sp) # result
113
114 j syscall_exit
115
116/* ------------------------------------------------------------------------ */
117
118 /*
119 * More than four arguments. Try to deal with it by copying the
120 * stack arguments from the user stack to the kernel stack.
121 * This Sucks (TM).
122 */
123stackargs:
124 lw t0, PT_R29(sp) # get old user stack pointer
125
126 /*
127 * We intentionally keep the kernel stack a little below the top of
128 * userspace so we don't have to do a slower byte accurate check here.
129 */
130 lw t5, TI_ADDR_LIMIT($28)
131 addu t4, t0, 32
132 and t5, t4
133 bltz t5, bad_stack # -> sp is bad
134
135 /* Ok, copy the args from the luser stack to the kernel stack.
136 * t3 is the precomputed number of instruction bytes needed to
137 * load or store arguments 6-8.
138 */
139
140 la t1, 5f # load up to 3 arguments
141 subu t1, t3
1421: lw t5, 16(t0) # argument #5 from usp
143 .set push
144 .set noreorder
145 .set nomacro
146 jr t1
147 addiu t1, 6f - 5f
148
1492: lw t8, 28(t0) # argument #8 from usp
1503: lw t7, 24(t0) # argument #7 from usp
1514: lw t6, 20(t0) # argument #6 from usp
1525: jr t1
153 sw t5, 16(sp) # argument #5 to ksp
154
155 sw t8, 28(sp) # argument #8 to ksp
156 sw t7, 24(sp) # argument #7 to ksp
157 sw t6, 20(sp) # argument #6 to ksp
1586: j stack_done # go back
159 nop
160 .set pop
161
162 .section __ex_table,"a"
163 PTR 1b,bad_stack
164 PTR 2b,bad_stack
165 PTR 3b,bad_stack
166 PTR 4b,bad_stack
167 .previous
168
169 /*
170 * The stackpointer for a call with more than 4 arguments is bad.
171 * We probably should handle this case a bit more drastic.
172 */
173bad_stack:
174 negu v0 # error
175 sw v0, PT_R0(sp)
176 sw v0, PT_R2(sp)
177 li t0, 1 # set error flag
178 sw t0, PT_R7(sp)
179 j o32_syscall_exit
180
181 /*
182 * The system call does not exist in this kernel
183 */
184illegal_syscall:
185 li v0, -ENOSYS # error
186 sw v0, PT_R2(sp)
187 li t0, 1 # set error flag
188 sw t0, PT_R7(sp)
189 j o32_syscall_exit
190 END(handle_sys)
191
192 LEAF(mips_atomic_set)
193 andi v0, a1, 3 # must be word aligned
194 bnez v0, bad_alignment
195
196 lw v1, TI_ADDR_LIMIT($28) # in legal address range?
197 addiu a0, a1, 4
198 or a0, a0, a1
199 and a0, a0, v1
200 bltz a0, bad_address
201
202#ifdef CONFIG_CPU_HAS_LLSC
203 /* Ok, this is the ll/sc case. World is sane :-) */
2041: ll v0, (a1)
205 move a0, a2
2062: sc a0, (a1)
207#if R10000_LLSC_WAR
208 beqzl a0, 1b
209#else
210 beqz a0, 1b
211#endif
212
213 .section __ex_table,"a"
214 PTR 1b, bad_stack
215 PTR 2b, bad_stack
216 .previous
217#else
218 sw a1, 16(sp)
219 sw a2, 20(sp)
220
221 move a0, sp
222 move a2, a1
223 li a1, 1
224 jal do_page_fault
225
226 lw a1, 16(sp)
227 lw a2, 20(sp)
228
229 /*
230 * At this point the page should be readable and writable unless
231 * there was no more memory available.
232 */
2331: lw v0, (a1)
2342: sw a2, (a1)
235
236 .section __ex_table,"a"
237 PTR 1b, no_mem
238 PTR 2b, no_mem
239 .previous
240#endif
241
242 sw zero, PT_R7(sp) # success
243 sw v0, PT_R2(sp) # result
244
edcb98d1 245 j o32_syscall_exit # continue like a normal syscall
1da177e4
LT
246
247no_mem: li v0, -ENOMEM
248 jr ra
249
250bad_address:
251 li v0, -EFAULT
252 jr ra
253
254bad_alignment:
255 li v0, -EINVAL
256 jr ra
257 END(mips_atomic_set)
258
259 LEAF(sys_sysmips)
260 beq a0, MIPS_ATOMIC_SET, mips_atomic_set
261 j _sys_sysmips
262 END(sys_sysmips)
263
264 LEAF(sys_syscall)
265#if defined(CONFIG_BINFMT_IRIX)
266 sltiu v0, a0, MAX_SYSCALL_NO + 1 # check syscall number
267#else
268 subu t0, a0, __NR_O32_Linux # check syscall number
269 sltiu v0, t0, __NR_O32_Linux_syscalls + 1
270#endif
271 sll t1, t0, 3
272 beqz v0, einval
273
274 lw t2, sys_call_table(t1) # syscall routine
275
276#if defined(CONFIG_BINFMT_IRIX)
277 li v1, 4000 # nr of sys_syscall
278#else
279 li v1, 4000 - __NR_O32_Linux # index of sys_syscall
280#endif
281 beq t0, v1, einval # do not recurse
282
283 /* Some syscalls like execve get their arguments from struct pt_regs
284 and claim zero arguments in the syscall table. Thus we have to
285 assume the worst case and shuffle around all potential arguments.
286 If you want performance, don't use indirect syscalls. */
287
288 move a0, a1 # shift argument registers
289 move a1, a2
290 move a2, a3
291 lw a3, 16(sp)
292 lw t4, 20(sp)
293 lw t5, 24(sp)
294 lw t6, 28(sp)
295 sw t4, 16(sp)
296 sw t5, 20(sp)
297 sw t6, 24(sp)
298 sw a0, PT_R4(sp) # .. and push back a0 - a3, some
299 sw a1, PT_R5(sp) # syscalls expect them there
300 sw a2, PT_R6(sp)
301 sw a3, PT_R7(sp)
302 sw a3, PT_R26(sp) # update a3 for syscall restarting
303 jr t2
304 /* Unreached */
305
306einval: li v0, -EINVAL
307 jr ra
308 END(sys_syscall)
309
310 .macro fifty ptr, nargs, from=1, to=50
311 sys \ptr \nargs
312 .if \to-\from
313 fifty \ptr,\nargs,"(\from+1)",\to
314 .endif
315 .endm
316
317 .macro mille ptr, nargs, from=1, to=20
318 fifty \ptr,\nargs
319 .if \to-\from
320 mille \ptr,\nargs,"(\from+1)",\to
321 .endif
322 .endm
323
324 .macro syscalltable
325#if defined(CONFIG_BINFMT_IRIX)
326 mille sys_ni_syscall 0 /* 0 - 999 SVR4 flavour */
327 mille sys_ni_syscall 0 /* 1000 - 1999 32-bit IRIX */
328 mille sys_ni_syscall 0 /* 2000 - 2999 BSD43 flavour */
329 mille sys_ni_syscall 0 /* 3000 - 3999 POSIX flavour */
330#endif
331
332 sys sys_syscall 8 /* 4000 */
333 sys sys_exit 1
334 sys sys_fork 0
335 sys sys_read 3
336 sys sys_write 3
337 sys sys_open 3 /* 4005 */
338 sys sys_close 1
339 sys sys_waitpid 3
340 sys sys_creat 2
341 sys sys_link 2
342 sys sys_unlink 1 /* 4010 */
343 sys sys_execve 0
344 sys sys_chdir 1
345 sys sys_time 1
346 sys sys_mknod 3
347 sys sys_chmod 2 /* 4015 */
348 sys sys_lchown 3
349 sys sys_ni_syscall 0
350 sys sys_ni_syscall 0 /* was sys_stat */
351 sys sys_lseek 3
352 sys sys_getpid 0 /* 4020 */
353 sys sys_mount 5
354 sys sys_oldumount 1
355 sys sys_setuid 1
356 sys sys_getuid 0
357 sys sys_stime 1 /* 4025 */
358 sys sys_ptrace 4
359 sys sys_alarm 1
360 sys sys_ni_syscall 0 /* was sys_fstat */
361 sys sys_pause 0
362 sys sys_utime 2 /* 4030 */
363 sys sys_ni_syscall 0
364 sys sys_ni_syscall 0
365 sys sys_access 2
366 sys sys_nice 1
367 sys sys_ni_syscall 0 /* 4035 */
368 sys sys_sync 0
369 sys sys_kill 2
370 sys sys_rename 2
371 sys sys_mkdir 2
372 sys sys_rmdir 1 /* 4040 */
373 sys sys_dup 1
374 sys sys_pipe 0
375 sys sys_times 1
376 sys sys_ni_syscall 0
377 sys sys_brk 1 /* 4045 */
378 sys sys_setgid 1
379 sys sys_getgid 0
380 sys sys_ni_syscall 0 /* was signal(2) */
381 sys sys_geteuid 0
382 sys sys_getegid 0 /* 4050 */
383 sys sys_acct 1
384 sys sys_umount 2
385 sys sys_ni_syscall 0
386 sys sys_ioctl 3
387 sys sys_fcntl 3 /* 4055 */
388 sys sys_ni_syscall 2
389 sys sys_setpgid 2
390 sys sys_ni_syscall 0
391 sys sys_olduname 1
392 sys sys_umask 1 /* 4060 */
393 sys sys_chroot 1
394 sys sys_ustat 2
395 sys sys_dup2 2
396 sys sys_getppid 0
397 sys sys_getpgrp 0 /* 4065 */
398 sys sys_setsid 0
399 sys sys_sigaction 3
400 sys sys_sgetmask 0
401 sys sys_ssetmask 1
402 sys sys_setreuid 2 /* 4070 */
403 sys sys_setregid 2
404 sys sys_sigsuspend 0
405 sys sys_sigpending 1
406 sys sys_sethostname 2
407 sys sys_setrlimit 2 /* 4075 */
408 sys sys_getrlimit 2
409 sys sys_getrusage 2
410 sys sys_gettimeofday 2
411 sys sys_settimeofday 2
412 sys sys_getgroups 2 /* 4080 */
413 sys sys_setgroups 2
414 sys sys_ni_syscall 0 /* old_select */
415 sys sys_symlink 2
416 sys sys_ni_syscall 0 /* was sys_lstat */
417 sys sys_readlink 3 /* 4085 */
418 sys sys_uselib 1
419 sys sys_swapon 2
420 sys sys_reboot 3
421 sys old_readdir 3
422 sys old_mmap 6 /* 4090 */
423 sys sys_munmap 2
424 sys sys_truncate 2
425 sys sys_ftruncate 2
426 sys sys_fchmod 2
427 sys sys_fchown 3 /* 4095 */
428 sys sys_getpriority 2
429 sys sys_setpriority 3
430 sys sys_ni_syscall 0
431 sys sys_statfs 2
432 sys sys_fstatfs 2 /* 4100 */
433 sys sys_ni_syscall 0 /* was ioperm(2) */
434 sys sys_socketcall 2
435 sys sys_syslog 3
436 sys sys_setitimer 3
437 sys sys_getitimer 2 /* 4105 */
438 sys sys_newstat 2
439 sys sys_newlstat 2
440 sys sys_newfstat 2
441 sys sys_uname 1
442 sys sys_ni_syscall 0 /* 4110 was iopl(2) */
443 sys sys_vhangup 0
444 sys sys_ni_syscall 0 /* was sys_idle() */
445 sys sys_ni_syscall 0 /* was sys_vm86 */
446 sys sys_wait4 4
447 sys sys_swapoff 1 /* 4115 */
448 sys sys_sysinfo 1
449 sys sys_ipc 6
450 sys sys_fsync 1
451 sys sys_sigreturn 0
452 sys sys_clone 0 /* 4120 */
453 sys sys_setdomainname 2
454 sys sys_newuname 1
455 sys sys_ni_syscall 0 /* sys_modify_ldt */
456 sys sys_adjtimex 1
457 sys sys_mprotect 3 /* 4125 */
458 sys sys_sigprocmask 3
459 sys sys_ni_syscall 0 /* was create_module */
460 sys sys_init_module 5
461 sys sys_delete_module 1
462 sys sys_ni_syscall 0 /* 4130 was get_kernel_syms */
463 sys sys_quotactl 4
464 sys sys_getpgid 1
465 sys sys_fchdir 1
466 sys sys_bdflush 2
467 sys sys_sysfs 3 /* 4135 */
468 sys sys_personality 1
469 sys sys_ni_syscall 0 /* for afs_syscall */
470 sys sys_setfsuid 1
471 sys sys_setfsgid 1
472 sys sys_llseek 5 /* 4140 */
473 sys sys_getdents 3
474 sys sys_select 5
475 sys sys_flock 2
476 sys sys_msync 3
477 sys sys_readv 3 /* 4145 */
478 sys sys_writev 3
479 sys sys_cacheflush 3
480 sys sys_cachectl 3
481 sys sys_sysmips 4
482 sys sys_ni_syscall 0 /* 4150 */
483 sys sys_getsid 1
484 sys sys_fdatasync 1
485 sys sys_sysctl 1
486 sys sys_mlock 2
487 sys sys_munlock 2 /* 4155 */
488 sys sys_mlockall 1
489 sys sys_munlockall 0
490 sys sys_sched_setparam 2
491 sys sys_sched_getparam 2
492 sys sys_sched_setscheduler 3 /* 4160 */
493 sys sys_sched_getscheduler 1
494 sys sys_sched_yield 0
495 sys sys_sched_get_priority_max 1
496 sys sys_sched_get_priority_min 1
497 sys sys_sched_rr_get_interval 2 /* 4165 */
498 sys sys_nanosleep, 2
7dbdf43c 499 sys sys_mremap, 5
1da177e4
LT
500 sys sys_accept 3
501 sys sys_bind 3
502 sys sys_connect 3 /* 4170 */
503 sys sys_getpeername 3
504 sys sys_getsockname 3
505 sys sys_getsockopt 5
506 sys sys_listen 2
507 sys sys_recv 4 /* 4175 */
508 sys sys_recvfrom 6
509 sys sys_recvmsg 3
510 sys sys_send 4
511 sys sys_sendmsg 3
512 sys sys_sendto 6 /* 4180 */
513 sys sys_setsockopt 5
514 sys sys_shutdown 2
515 sys sys_socket 3
516 sys sys_socketpair 4
517 sys sys_setresuid 3 /* 4185 */
518 sys sys_getresuid 3
519 sys sys_ni_syscall 0 /* was sys_query_module */
520 sys sys_poll 3
521 sys sys_nfsservctl 3
522 sys sys_setresgid 3 /* 4190 */
523 sys sys_getresgid 3
524 sys sys_prctl 5
525 sys sys_rt_sigreturn 0
526 sys sys_rt_sigaction 4
527 sys sys_rt_sigprocmask 4 /* 4195 */
528 sys sys_rt_sigpending 2
529 sys sys_rt_sigtimedwait 4
530 sys sys_rt_sigqueueinfo 3
531 sys sys_rt_sigsuspend 0
532 sys sys_pread64 6 /* 4200 */
533 sys sys_pwrite64 6
534 sys sys_chown 3
535 sys sys_getcwd 2
536 sys sys_capget 2
537 sys sys_capset 2 /* 4205 */
538 sys sys_sigaltstack 0
539 sys sys_sendfile 4
540 sys sys_ni_syscall 0
541 sys sys_ni_syscall 0
542 sys sys_mmap2 6 /* 4210 */
543 sys sys_truncate64 4
544 sys sys_ftruncate64 4
545 sys sys_stat64 2
546 sys sys_lstat64 2
547 sys sys_fstat64 2 /* 4215 */
548 sys sys_pivot_root 2
549 sys sys_mincore 3
550 sys sys_madvise 3
551 sys sys_getdents64 3
552 sys sys_fcntl64 3 /* 4220 */
553 sys sys_ni_syscall 0
554 sys sys_gettid 0
555 sys sys_readahead 5
556 sys sys_setxattr 5
557 sys sys_lsetxattr 5 /* 4225 */
558 sys sys_fsetxattr 5
559 sys sys_getxattr 4
560 sys sys_lgetxattr 4
561 sys sys_fgetxattr 4
562 sys sys_listxattr 3 /* 4230 */
563 sys sys_llistxattr 3
564 sys sys_flistxattr 3
565 sys sys_removexattr 2
566 sys sys_lremovexattr 2
567 sys sys_fremovexattr 2 /* 4235 */
568 sys sys_tkill 2
569 sys sys_sendfile64 5
90a67b59 570 sys sys_futex 6
f088fc84
RB
571#ifdef CONFIG_MIPS_MT_FPAFF
572 /*
573 * For FPU affinity scheduling on MIPS MT processors, we need to
574 * intercept sys_sched_xxxaffinity() calls until we get a proper hook
575 * in kernel/sched.c. Considered only temporary we only support these
576 * hooks for the 32-bit kernel - there is no MIPS64 MT processor atm.
577 */
578 sys mipsmt_sys_sched_setaffinity 3
579 sys mipsmt_sys_sched_getaffinity 3
580#else
1da177e4
LT
581 sys sys_sched_setaffinity 3
582 sys sys_sched_getaffinity 3 /* 4240 */
f088fc84 583#endif /* CONFIG_MIPS_MT_FPAFF */
1da177e4
LT
584 sys sys_io_setup 2
585 sys sys_io_destroy 1
586 sys sys_io_getevents 5
587 sys sys_io_submit 3
588 sys sys_io_cancel 3 /* 4245 */
589 sys sys_exit_group 1
0d507d61 590 sys sys_lookup_dcookie 4
1da177e4
LT
591 sys sys_epoll_create 1
592 sys sys_epoll_ctl 4
593 sys sys_epoll_wait 3 /* 4250 */
594 sys sys_remap_file_pages 5
595 sys sys_set_tid_address 1
596 sys sys_restart_syscall 0
597 sys sys_fadvise64_64 7
598 sys sys_statfs64 3 /* 4255 */
599 sys sys_fstatfs64 2
600 sys sys_timer_create 3
601 sys sys_timer_settime 4
602 sys sys_timer_gettime 2
603 sys sys_timer_getoverrun 1 /* 4260 */
604 sys sys_timer_delete 1
605 sys sys_clock_settime 2
606 sys sys_clock_gettime 2
607 sys sys_clock_getres 2
608 sys sys_clock_nanosleep 4 /* 4265 */
609 sys sys_tgkill 3
610 sys sys_utimes 2
611 sys sys_mbind 4
612 sys sys_ni_syscall 0 /* sys_get_mempolicy */
613 sys sys_ni_syscall 0 /* 4270 sys_set_mempolicy */
614 sys sys_mq_open 4
615 sys sys_mq_unlink 1
616 sys sys_mq_timedsend 5
617 sys sys_mq_timedreceive 5
618 sys sys_mq_notify 2 /* 4275 */
619 sys sys_mq_getsetattr 3
620 sys sys_ni_syscall 0 /* sys_vserver */
a19050f3 621 sys sys_waitid 5
1da177e4 622 sys sys_ni_syscall 0 /* available, was setaltroot */
e50c0a8f 623 sys sys_add_key 5 /* 4280 */
1da177e4
LT
624 sys sys_request_key 4
625 sys sys_keyctl 5
3c37026d 626 sys sys_set_thread_area 1
7db36c85
RB
627 sys sys_inotify_init 0
628 sys sys_inotify_add_watch 3 /* 4285 */
629 sys sys_inotify_rm_watch 2
72bf8914
RB
630 sys sys_migrate_pages 4
631 sys sys_openat 4
632 sys sys_mkdirat 3
633 sys sys_mknodat 4 /* 4290 */
634 sys sys_fchownat 5
635 sys sys_futimesat 3
326a6257 636 sys sys_fstatat64 4
72bf8914
RB
637 sys sys_unlinkat 3
638 sys sys_renameat 4 /* 4295 */
c04030e1 639 sys sys_linkat 5
72bf8914
RB
640 sys sys_symlinkat 3
641 sys sys_readlinkat 4
642 sys sys_fchmodat 3
643 sys sys_faccessat 3 /* 4300 */
644 sys sys_pselect6 6
645 sys sys_ppoll 5
646 sys sys_unshare 1
f115da9c 647 sys sys_splice 4
a8d587a7 648 sys sys_sync_file_range 7 /* 4305 */
136d47d3 649 sys sys_tee 4
722cfd90
RB
650 sys sys_vmsplice 4
651 sys sys_move_pages 6
1da177e4
LT
652 .endm
653
654 /* We pre-compute the number of _instruction_ bytes needed to
655 load or store the arguments 6-8. Negative values are ignored. */
656
657 .macro sys function, nargs
658 PTR \function
659 LONG (\nargs << 2) - (5 << 2)
660 .endm
661
662 .align 3
663 .type sys_call_table,@object
664EXPORT(sys_call_table)
665 syscalltable
666 .size sys_call_table, . - sys_call_table
This page took 0.182237 seconds and 5 git commands to generate.