ia64/xen-unstable

view xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/entry.S @ 235:d7d0a23b2e07

bitkeeper revision 1.93 (3e5a4e6bkPheUp3x1uufN2MS3LAB7A)

Latest and Greatest version of XenoLinux based on the Linux-2.4.21-pre4
kernel.
author iap10@labyrinth.cl.cam.ac.uk
date Mon Feb 24 16:55:07 2003 +0000 (2003-02-24)
parents
children 8d23d3ad0f20 2eb189eacf01
line source
1 /*
2 * linux/arch/i386/entry.S
3 *
4 * Copyright (C) 1991, 1992 Linus Torvalds
5 */
7 /*
8 * entry.S contains the system-call and fault low-level handling routines.
9 * This also contains the timer-interrupt handler, as well as all interrupts
10 * and faults that can result in a task-switch.
11 *
12 * NOTE: This code handles signal-recognition, which happens every time
13 * after a timer-interrupt and after each system call.
14 *
15 * I changed all the .align's to 4 (16 byte alignment), as that's faster
16 * on a 486.
17 *
18 * Stack layout in 'ret_from_system_call':
19 * ptrace needs to have all regs on the stack.
20 * if the order here is changed, it needs to be
21 * updated in fork.c:copy_process, signal.c:do_signal,
22 * ptrace.c and ptrace.h
23 *
24 * 0(%esp) - %ebx
25 * 4(%esp) - %ecx
26 * 8(%esp) - %edx
27 * C(%esp) - %esi
28 * 10(%esp) - %edi
29 * 14(%esp) - %ebp
30 * 18(%esp) - %eax
31 * 1C(%esp) - %ds
32 * 20(%esp) - %es
33 * 24(%esp) - orig_eax
34 * 28(%esp) - %eip
35 * 2C(%esp) - %cs
36 * 30(%esp) - %eflags
37 * 34(%esp) - %oldesp
38 * 38(%esp) - %oldss
39 *
40 * "current" is in register %ebx during any slow entries.
41 */
43 #include <linux/config.h>
44 #include <linux/sys.h>
45 #include <linux/linkage.h>
46 #include <asm/segment.h>
47 #include <asm/smp.h>
49 EBX = 0x00
50 ECX = 0x04
51 EDX = 0x08
52 ESI = 0x0C
53 EDI = 0x10
54 EBP = 0x14
55 EAX = 0x18
56 DS = 0x1C
57 ES = 0x20
58 ORIG_EAX = 0x24
59 EIP = 0x28
60 CS = 0x2C
61 EFLAGS = 0x30
62 OLDESP = 0x34
63 OLDSS = 0x38
65 CF_MASK = 0x00000001
66 TF_MASK = 0x00000100
67 IF_MASK = 0x00000200
68 DF_MASK = 0x00000400
69 NT_MASK = 0x00004000
71 /*
72 * these are offsets into the task-struct.
73 */
74 state = 0
75 flags = 4
76 sigpending = 8
77 addr_limit = 12
78 exec_domain = 16
79 need_resched = 20
80 tsk_ptrace = 24
81 processor = 52
83 ENOSYS = 38
86 #define SAVE_ALL \
87 cld; \
88 pushl %es; \
89 pushl %ds; \
90 pushl %eax; \
91 pushl %ebp; \
92 pushl %edi; \
93 pushl %esi; \
94 pushl %edx; \
95 pushl %ecx; \
96 pushl %ebx; \
97 movl $(__KERNEL_DS),%edx; \
98 movl %edx,%ds; \
99 movl %edx,%es;
101 #define RESTORE_ALL \
102 popl %ebx; \
103 popl %ecx; \
104 popl %edx; \
105 popl %esi; \
106 popl %edi; \
107 popl %ebp; \
108 popl %eax; \
109 1: popl %ds; \
110 2: popl %es; \
111 addl $4,%esp; \
112 3: iret; \
113 .section .fixup,"ax"; \
114 4: movl $0,(%esp); \
115 jmp 1b; \
116 5: movl $0,(%esp); \
117 jmp 2b; \
118 6: pushl %ss; \
119 popl %ds; \
120 pushl %ss; \
121 popl %es; \
122 pushl $11; \
123 call do_exit; \
124 .previous; \
125 .section __ex_table,"a";\
126 .align 4; \
127 .long 1b,4b; \
128 .long 2b,5b; \
129 .long 3b,6b; \
130 .previous
132 #define GET_CURRENT(reg) \
133 movl $-8192, reg; \
134 andl %esp, reg
136 ENTRY(ret_from_fork)
137 pushl %ebx
138 call SYMBOL_NAME(schedule_tail)
139 addl $4, %esp
140 GET_CURRENT(%ebx)
141 testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS
142 jne tracesys_exit
143 jmp ret_from_sys_call
145 /*
146 * Return to user mode is not as complex as all this looks,
147 * but we want the default path for a system call return to
148 * go as quickly as possible which is why some of this is
149 * less clear than it otherwise should be.
150 */
152 ENTRY(system_call)
153 pushl %eax # save orig_eax
154 SAVE_ALL
155 GET_CURRENT(%ebx)
156 testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS
157 jne tracesys
158 cmpl $(NR_syscalls),%eax
159 jae badsys
160 call *SYMBOL_NAME(sys_call_table)(,%eax,4)
161 movl %eax,EAX(%esp) # save the return value
162 ENTRY(ret_from_sys_call)
163 movl SYMBOL_NAME(HYPERVISOR_shared_info),%esi
164 xorl %eax,%eax
165 movl %eax,4(%esi) # need_resched and signals atomic test
166 ret_syscall_tests:
167 cmpl $0,need_resched(%ebx)
168 jne reschedule
169 cmpl $0,sigpending(%ebx)
170 je safesti # ensure need_resched updates are seen
171 signal_return:
172 btsl %eax,4(%esi) # reenable event callbacks
173 movl %esp,%eax
174 xorl %edx,%edx
175 call SYMBOL_NAME(do_signal)
176 jmp ret_from_sys_call
178 ALIGN
179 restore_all:
180 RESTORE_ALL
182 ALIGN
183 tracesys:
184 movl $-ENOSYS,EAX(%esp)
185 call SYMBOL_NAME(syscall_trace)
186 movl ORIG_EAX(%esp),%eax
187 cmpl $(NR_syscalls),%eax
188 jae tracesys_exit
189 call *SYMBOL_NAME(sys_call_table)(,%eax,4)
190 movl %eax,EAX(%esp) # save the return value
191 tracesys_exit:
192 call SYMBOL_NAME(syscall_trace)
193 jmp ret_from_sys_call
194 badsys:
195 movl $-ENOSYS,EAX(%esp)
196 jmp ret_from_sys_call
198 ALIGN
199 ENTRY(ret_from_intr)
200 GET_CURRENT(%ebx)
201 ret_from_exception:
202 movb CS(%esp),%al
203 testl $2,%eax
204 jne ret_from_sys_call
205 jmp restore_all
207 ALIGN
208 reschedule:
209 btsl %eax,4(%esi) # reenable event callbacks
210 call SYMBOL_NAME(schedule) # test
211 jmp ret_from_sys_call
213 ENTRY(divide_error)
214 pushl $0 # no error code
215 pushl $ SYMBOL_NAME(do_divide_error)
216 ALIGN
217 error_code:
218 pushl %ds
219 pushl %eax
220 xorl %eax,%eax
221 pushl %ebp
222 pushl %edi
223 pushl %esi
224 pushl %edx
225 decl %eax # eax = -1
226 pushl %ecx
227 pushl %ebx
228 GET_CURRENT(%ebx)
229 cld
230 movl %es,%ecx
231 movl ORIG_EAX(%esp), %esi # get the error code
232 movl ES(%esp), %edi # get the function address
233 movl %eax, ORIG_EAX(%esp)
234 movl %ecx, ES(%esp)
235 movl %esp,%edx
236 pushl %esi # push the error code
237 pushl %edx # push the pt_regs pointer
238 movl $(__KERNEL_DS),%edx
239 movl %edx,%ds
240 movl %edx,%es
241 call *%edi
242 addl $8,%esp
243 jmp ret_from_exception
245 # A note on the "critical region" in our callback handler.
246 # We want to avoid stacking callback handlers due to events occurring
247 # during handling of the last event. To do this, we keep events disabled
248 # until we've done all processing. HOWEVER, we must enable events before
249 # popping the stack frame (can't be done atomically) and so it would still
250 # be possible to get enough handler activations to overflow the stack.
251 # Although unlikely, bugs of that kind are hard to track down, so we'd
252 # like to avoid the possibility.
253 # So, on entry to the handler we detect whether we interrupted an
254 # existing activation in its critical region -- if so, we pop the current
255 # activation and restart the handler using the previous one.
256 ENTRY(hypervisor_callback)
257 pushl %eax
258 SAVE_ALL
259 GET_CURRENT(%ebx)
260 movl EIP(%esp),%eax
261 cmpl $scrit,%eax
262 jb 11f
263 cmpl $ecrit,%eax
264 jb critical_region_fixup
265 11: push %esp
266 call do_hypervisor_callback
267 add $4,%esp
268 movl SYMBOL_NAME(HYPERVISOR_shared_info),%esi
269 xorl %eax,%eax
270 movb CS(%esp),%cl
271 test $2,%cl # slow return to ring 2 or 3
272 jne ret_syscall_tests
273 safesti:btsl %eax,4(%esi) # reenable event callbacks
274 scrit: /**** START OF CRITICAL REGION ****/
275 cmpl %eax,(%esi)
276 jne 14f # process more events if necessary...
277 RESTORE_ALL
278 14: btrl %eax,4(%esi)
279 jmp 11b
280 ecrit: /**** END OF CRITICAL REGION ****/
281 # [How we do the fixup]. We want to merge the current stack frame with the
282 # just-interrupted frame. How we do this depends on where in the critical
283 # region the interrupted handler was executing, and so how many saved
284 # registers are in each frame. We do this quickly using the lookup table
285 # 'critical_fixup_table'. For each byte offset in the critical region, it
286 # provides the number of bytes which have already been popped from the
287 # interrupted stack frame.
288 critical_region_fixup:
289 addl $critical_fixup_table-scrit,%eax
290 movzbl (%eax),%eax # %eax contains num bytes popped
291 mov %esp,%esi
292 add %eax,%esi # %esi points at end of src region
293 mov %esp,%edi
294 add $0x34,%edi # %edi points at end of dst region
295 mov %eax,%ecx
296 shr $2,%ecx # convert words to bytes
297 je 16f # skip loop if nothing to copy
298 15: subl $4,%esi # pre-decrementing copy loop
299 subl $4,%edi
300 movl (%esi),%eax
301 movl %eax,(%edi)
302 loop 15b
303 16: movl %edi,%esp # final %edi is top of merged stack
304 jmp 11b
306 critical_fixup_table:
307 .byte 0x00,0x00 # cmpl %eax,(%esi)
308 .byte 0x00,0x00 # jne 14f
309 .byte 0x00 # pop %ebx
310 .byte 0x04 # pop %ecx
311 .byte 0x08 # pop %edx
312 .byte 0x0c # pop %esi
313 .byte 0x10 # pop %edi
314 .byte 0x14 # pop %ebp
315 .byte 0x18 # pop %eax
316 .byte 0x1c # pop %ds
317 .byte 0x20 # pop %es
318 .byte 0x24,0x24,0x24 # add $4,%esp
319 .byte 0x28 # iret
320 .byte 0x00,0x00,0x00,0x00 # btrl %eax,4(%esi)
321 .byte 0x00,0x00 # jmp 11b
323 # Hypervisor uses this for application faults while it executes.
324 ENTRY(failsafe_callback)
325 1: pop %ds
326 2: pop %es
327 3: iret
328 .section .fixup,"ax"; \
329 4: movl $0,(%esp); \
330 jmp 1b; \
331 5: movl $0,(%esp); \
332 jmp 2b; \
333 6: pushl %ss; \
334 popl %ds; \
335 pushl %ss; \
336 popl %es; \
337 pushl $11; \
338 call do_exit; \
339 .previous; \
340 .section __ex_table,"a";\
341 .align 4; \
342 .long 1b,4b; \
343 .long 2b,5b; \
344 .long 3b,6b; \
345 .previous
347 ENTRY(coprocessor_error)
348 pushl $0
349 pushl $ SYMBOL_NAME(do_coprocessor_error)
350 jmp error_code
352 ENTRY(simd_coprocessor_error)
353 pushl $0
354 pushl $ SYMBOL_NAME(do_simd_coprocessor_error)
355 jmp error_code
357 ENTRY(device_not_available)
358 pushl $-1 # mark this as an int
359 SAVE_ALL
360 GET_CURRENT(%ebx)
361 call SYMBOL_NAME(math_state_restore)
362 jmp ret_from_exception
364 ENTRY(debug)
365 pushl $0
366 pushl $ SYMBOL_NAME(do_debug)
367 jmp error_code
369 ENTRY(int3)
370 pushl $0
371 pushl $ SYMBOL_NAME(do_int3)
372 jmp error_code
374 ENTRY(overflow)
375 pushl $0
376 pushl $ SYMBOL_NAME(do_overflow)
377 jmp error_code
379 ENTRY(bounds)
380 pushl $0
381 pushl $ SYMBOL_NAME(do_bounds)
382 jmp error_code
384 ENTRY(invalid_op)
385 pushl $0
386 pushl $ SYMBOL_NAME(do_invalid_op)
387 jmp error_code
389 ENTRY(coprocessor_segment_overrun)
390 pushl $0
391 pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
392 jmp error_code
394 ENTRY(double_fault)
395 pushl $ SYMBOL_NAME(do_double_fault)
396 jmp error_code
398 ENTRY(invalid_TSS)
399 pushl $ SYMBOL_NAME(do_invalid_TSS)
400 jmp error_code
402 ENTRY(segment_not_present)
403 pushl $ SYMBOL_NAME(do_segment_not_present)
404 jmp error_code
406 ENTRY(stack_segment)
407 pushl $ SYMBOL_NAME(do_stack_segment)
408 jmp error_code
410 ENTRY(general_protection)
411 pushl $ SYMBOL_NAME(do_general_protection)
412 jmp error_code
414 ENTRY(alignment_check)
415 pushl $ SYMBOL_NAME(do_alignment_check)
416 jmp error_code
418 # This handler is special, because it gets an extra value on its stack,
419 # which is the linear faulting address.
420 ENTRY(page_fault)
421 pushl %ds
422 pushl %eax
423 xorl %eax,%eax
424 pushl %ebp
425 pushl %edi
426 pushl %esi
427 pushl %edx
428 decl %eax # eax = -1
429 pushl %ecx
430 pushl %ebx
431 GET_CURRENT(%ebx)
432 cld
433 movl %es,%ecx
434 movl ORIG_EAX(%esp), %esi # get the error code
435 movl ES(%esp), %edi # get the faulting address
436 movl %eax, ORIG_EAX(%esp)
437 movl %ecx, ES(%esp)
438 movl %esp,%edx
439 pushl %edi # push the faulting address
440 pushl %esi # push the error code
441 pushl %edx # push the pt_regs pointer
442 movl $(__KERNEL_DS),%edx
443 movl %edx,%ds
444 movl %edx,%es
445 call SYMBOL_NAME(do_page_fault)
446 addl $12,%esp
447 jmp ret_from_exception
449 ENTRY(machine_check)
450 pushl $0
451 pushl $ SYMBOL_NAME(do_machine_check)
452 jmp error_code
454 ENTRY(spurious_interrupt_bug)
455 pushl $0
456 pushl $ SYMBOL_NAME(do_spurious_interrupt_bug)
457 jmp error_code
459 .data
460 ENTRY(sys_call_table)
461 .long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/
462 .long SYMBOL_NAME(sys_exit)
463 .long SYMBOL_NAME(sys_fork)
464 .long SYMBOL_NAME(sys_read)
465 .long SYMBOL_NAME(sys_write)
466 .long SYMBOL_NAME(sys_open) /* 5 */
467 .long SYMBOL_NAME(sys_close)
468 .long SYMBOL_NAME(sys_waitpid)
469 .long SYMBOL_NAME(sys_creat)
470 .long SYMBOL_NAME(sys_link)
471 .long SYMBOL_NAME(sys_unlink) /* 10 */
472 .long SYMBOL_NAME(sys_execve)
473 .long SYMBOL_NAME(sys_chdir)
474 .long SYMBOL_NAME(sys_time)
475 .long SYMBOL_NAME(sys_mknod)
476 .long SYMBOL_NAME(sys_chmod) /* 15 */
477 .long SYMBOL_NAME(sys_lchown16)
478 .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */
479 .long SYMBOL_NAME(sys_stat)
480 .long SYMBOL_NAME(sys_lseek)
481 .long SYMBOL_NAME(sys_getpid) /* 20 */
482 .long SYMBOL_NAME(sys_mount)
483 .long SYMBOL_NAME(sys_oldumount)
484 .long SYMBOL_NAME(sys_setuid16)
485 .long SYMBOL_NAME(sys_getuid16)
486 .long SYMBOL_NAME(sys_stime) /* 25 */
487 .long SYMBOL_NAME(sys_ptrace)
488 .long SYMBOL_NAME(sys_alarm)
489 .long SYMBOL_NAME(sys_fstat)
490 .long SYMBOL_NAME(sys_pause)
491 .long SYMBOL_NAME(sys_utime) /* 30 */
492 .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */
493 .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */
494 .long SYMBOL_NAME(sys_access)
495 .long SYMBOL_NAME(sys_nice)
496 .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */
497 .long SYMBOL_NAME(sys_sync)
498 .long SYMBOL_NAME(sys_kill)
499 .long SYMBOL_NAME(sys_rename)
500 .long SYMBOL_NAME(sys_mkdir)
501 .long SYMBOL_NAME(sys_rmdir) /* 40 */
502 .long SYMBOL_NAME(sys_dup)
503 .long SYMBOL_NAME(sys_pipe)
504 .long SYMBOL_NAME(sys_times)
505 .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */
506 .long SYMBOL_NAME(sys_brk) /* 45 */
507 .long SYMBOL_NAME(sys_setgid16)
508 .long SYMBOL_NAME(sys_getgid16)
509 .long SYMBOL_NAME(sys_signal)
510 .long SYMBOL_NAME(sys_geteuid16)
511 .long SYMBOL_NAME(sys_getegid16) /* 50 */
512 .long SYMBOL_NAME(sys_acct)
513 .long SYMBOL_NAME(sys_umount) /* recycled never used phys() */
514 .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */
515 .long SYMBOL_NAME(sys_ioctl)
516 .long SYMBOL_NAME(sys_fcntl) /* 55 */
517 .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */
518 .long SYMBOL_NAME(sys_setpgid)
519 .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */
520 .long SYMBOL_NAME(sys_olduname)
521 .long SYMBOL_NAME(sys_umask) /* 60 */
522 .long SYMBOL_NAME(sys_chroot)
523 .long SYMBOL_NAME(sys_ustat)
524 .long SYMBOL_NAME(sys_dup2)
525 .long SYMBOL_NAME(sys_getppid)
526 .long SYMBOL_NAME(sys_getpgrp) /* 65 */
527 .long SYMBOL_NAME(sys_setsid)
528 .long SYMBOL_NAME(sys_sigaction)
529 .long SYMBOL_NAME(sys_sgetmask)
530 .long SYMBOL_NAME(sys_ssetmask)
531 .long SYMBOL_NAME(sys_setreuid16) /* 70 */
532 .long SYMBOL_NAME(sys_setregid16)
533 .long SYMBOL_NAME(sys_sigsuspend)
534 .long SYMBOL_NAME(sys_sigpending)
535 .long SYMBOL_NAME(sys_sethostname)
536 .long SYMBOL_NAME(sys_setrlimit) /* 75 */
537 .long SYMBOL_NAME(sys_old_getrlimit)
538 .long SYMBOL_NAME(sys_getrusage)
539 .long SYMBOL_NAME(sys_gettimeofday)
540 .long SYMBOL_NAME(sys_settimeofday)
541 .long SYMBOL_NAME(sys_getgroups16) /* 80 */
542 .long SYMBOL_NAME(sys_setgroups16)
543 .long SYMBOL_NAME(old_select)
544 .long SYMBOL_NAME(sys_symlink)
545 .long SYMBOL_NAME(sys_lstat)
546 .long SYMBOL_NAME(sys_readlink) /* 85 */
547 .long SYMBOL_NAME(sys_uselib)
548 .long SYMBOL_NAME(sys_swapon)
549 .long SYMBOL_NAME(sys_reboot)
550 .long SYMBOL_NAME(old_readdir)
551 .long SYMBOL_NAME(old_mmap) /* 90 */
552 .long SYMBOL_NAME(sys_munmap)
553 .long SYMBOL_NAME(sys_truncate)
554 .long SYMBOL_NAME(sys_ftruncate)
555 .long SYMBOL_NAME(sys_fchmod)
556 .long SYMBOL_NAME(sys_fchown16) /* 95 */
557 .long SYMBOL_NAME(sys_getpriority)
558 .long SYMBOL_NAME(sys_setpriority)
559 .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */
560 .long SYMBOL_NAME(sys_statfs)
561 .long SYMBOL_NAME(sys_fstatfs) /* 100 */
562 .long SYMBOL_NAME(sys_ioperm)
563 .long SYMBOL_NAME(sys_socketcall)
564 .long SYMBOL_NAME(sys_syslog)
565 .long SYMBOL_NAME(sys_setitimer)
566 .long SYMBOL_NAME(sys_getitimer) /* 105 */
567 .long SYMBOL_NAME(sys_newstat)
568 .long SYMBOL_NAME(sys_newlstat)
569 .long SYMBOL_NAME(sys_newfstat)
570 .long SYMBOL_NAME(sys_uname)
571 .long SYMBOL_NAME(sys_iopl) /* 110 */
572 .long SYMBOL_NAME(sys_vhangup)
573 .long SYMBOL_NAME(sys_ni_syscall) /* old "idle" system call */
574 .long SYMBOL_NAME(sys_ni_syscall) /* was VM86 */
575 .long SYMBOL_NAME(sys_wait4)
576 .long SYMBOL_NAME(sys_swapoff) /* 115 */
577 .long SYMBOL_NAME(sys_sysinfo)
578 .long SYMBOL_NAME(sys_ipc)
579 .long SYMBOL_NAME(sys_fsync)
580 .long SYMBOL_NAME(sys_sigreturn)
581 .long SYMBOL_NAME(sys_clone) /* 120 */
582 .long SYMBOL_NAME(sys_setdomainname)
583 .long SYMBOL_NAME(sys_newuname)
584 .long SYMBOL_NAME(sys_modify_ldt)
585 .long SYMBOL_NAME(sys_adjtimex)
586 .long SYMBOL_NAME(sys_mprotect) /* 125 */
587 .long SYMBOL_NAME(sys_sigprocmask)
588 .long SYMBOL_NAME(sys_create_module)
589 .long SYMBOL_NAME(sys_init_module)
590 .long SYMBOL_NAME(sys_delete_module)
591 .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
592 .long SYMBOL_NAME(sys_quotactl)
593 .long SYMBOL_NAME(sys_getpgid)
594 .long SYMBOL_NAME(sys_fchdir)
595 .long SYMBOL_NAME(sys_bdflush)
596 .long SYMBOL_NAME(sys_sysfs) /* 135 */
597 .long SYMBOL_NAME(sys_personality)
598 .long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
599 .long SYMBOL_NAME(sys_setfsuid16)
600 .long SYMBOL_NAME(sys_setfsgid16)
601 .long SYMBOL_NAME(sys_llseek) /* 140 */
602 .long SYMBOL_NAME(sys_getdents)
603 .long SYMBOL_NAME(sys_select)
604 .long SYMBOL_NAME(sys_flock)
605 .long SYMBOL_NAME(sys_msync)
606 .long SYMBOL_NAME(sys_readv) /* 145 */
607 .long SYMBOL_NAME(sys_writev)
608 .long SYMBOL_NAME(sys_getsid)
609 .long SYMBOL_NAME(sys_fdatasync)
610 .long SYMBOL_NAME(sys_sysctl)
611 .long SYMBOL_NAME(sys_mlock) /* 150 */
612 .long SYMBOL_NAME(sys_munlock)
613 .long SYMBOL_NAME(sys_mlockall)
614 .long SYMBOL_NAME(sys_munlockall)
615 .long SYMBOL_NAME(sys_sched_setparam)
616 .long SYMBOL_NAME(sys_sched_getparam) /* 155 */
617 .long SYMBOL_NAME(sys_sched_setscheduler)
618 .long SYMBOL_NAME(sys_sched_getscheduler)
619 .long SYMBOL_NAME(sys_sched_yield)
620 .long SYMBOL_NAME(sys_sched_get_priority_max)
621 .long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */
622 .long SYMBOL_NAME(sys_sched_rr_get_interval)
623 .long SYMBOL_NAME(sys_nanosleep)
624 .long SYMBOL_NAME(sys_mremap)
625 .long SYMBOL_NAME(sys_setresuid16)
626 .long SYMBOL_NAME(sys_getresuid16) /* 165 */
627 .long SYMBOL_NAME(sys_ni_syscall) /* was VM86 */
628 .long SYMBOL_NAME(sys_query_module)
629 .long SYMBOL_NAME(sys_poll)
630 .long SYMBOL_NAME(sys_nfsservctl)
631 .long SYMBOL_NAME(sys_setresgid16) /* 170 */
632 .long SYMBOL_NAME(sys_getresgid16)
633 .long SYMBOL_NAME(sys_prctl)
634 .long SYMBOL_NAME(sys_rt_sigreturn)
635 .long SYMBOL_NAME(sys_rt_sigaction)
636 .long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */
637 .long SYMBOL_NAME(sys_rt_sigpending)
638 .long SYMBOL_NAME(sys_rt_sigtimedwait)
639 .long SYMBOL_NAME(sys_rt_sigqueueinfo)
640 .long SYMBOL_NAME(sys_rt_sigsuspend)
641 .long SYMBOL_NAME(sys_pread) /* 180 */
642 .long SYMBOL_NAME(sys_pwrite)
643 .long SYMBOL_NAME(sys_chown16)
644 .long SYMBOL_NAME(sys_getcwd)
645 .long SYMBOL_NAME(sys_capget)
646 .long SYMBOL_NAME(sys_capset) /* 185 */
647 .long SYMBOL_NAME(sys_sigaltstack)
648 .long SYMBOL_NAME(sys_sendfile)
649 .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
650 .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
651 .long SYMBOL_NAME(sys_vfork) /* 190 */
652 .long SYMBOL_NAME(sys_getrlimit)
653 .long SYMBOL_NAME(sys_mmap2)
654 .long SYMBOL_NAME(sys_truncate64)
655 .long SYMBOL_NAME(sys_ftruncate64)
656 .long SYMBOL_NAME(sys_stat64) /* 195 */
657 .long SYMBOL_NAME(sys_lstat64)
658 .long SYMBOL_NAME(sys_fstat64)
659 .long SYMBOL_NAME(sys_lchown)
660 .long SYMBOL_NAME(sys_getuid)
661 .long SYMBOL_NAME(sys_getgid) /* 200 */
662 .long SYMBOL_NAME(sys_geteuid)
663 .long SYMBOL_NAME(sys_getegid)
664 .long SYMBOL_NAME(sys_setreuid)
665 .long SYMBOL_NAME(sys_setregid)
666 .long SYMBOL_NAME(sys_getgroups) /* 205 */
667 .long SYMBOL_NAME(sys_setgroups)
668 .long SYMBOL_NAME(sys_fchown)
669 .long SYMBOL_NAME(sys_setresuid)
670 .long SYMBOL_NAME(sys_getresuid)
671 .long SYMBOL_NAME(sys_setresgid) /* 210 */
672 .long SYMBOL_NAME(sys_getresgid)
673 .long SYMBOL_NAME(sys_chown)
674 .long SYMBOL_NAME(sys_setuid)
675 .long SYMBOL_NAME(sys_setgid)
676 .long SYMBOL_NAME(sys_setfsuid) /* 215 */
677 .long SYMBOL_NAME(sys_setfsgid)
678 .long SYMBOL_NAME(sys_pivot_root)
679 .long SYMBOL_NAME(sys_mincore)
680 .long SYMBOL_NAME(sys_madvise)
681 .long SYMBOL_NAME(sys_getdents64) /* 220 */
682 .long SYMBOL_NAME(sys_fcntl64)
683 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for TUX */
684 .long SYMBOL_NAME(sys_ni_syscall) /* Reserved for Security */
685 .long SYMBOL_NAME(sys_gettid)
686 .long SYMBOL_NAME(sys_readahead) /* 225 */
687 .long SYMBOL_NAME(sys_setxattr)
688 .long SYMBOL_NAME(sys_lsetxattr)
689 .long SYMBOL_NAME(sys_fsetxattr)
690 .long SYMBOL_NAME(sys_getxattr)
691 .long SYMBOL_NAME(sys_lgetxattr) /* 230 */
692 .long SYMBOL_NAME(sys_fgetxattr)
693 .long SYMBOL_NAME(sys_listxattr)
694 .long SYMBOL_NAME(sys_llistxattr)
695 .long SYMBOL_NAME(sys_flistxattr)
696 .long SYMBOL_NAME(sys_removexattr) /* 235 */
697 .long SYMBOL_NAME(sys_lremovexattr)
698 .long SYMBOL_NAME(sys_fremovexattr)
699 .long SYMBOL_NAME(sys_tkill)
700 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sendfile64 */
701 .long SYMBOL_NAME(sys_ni_syscall) /* 240 reserved for futex */
702 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sched_setaffinity */
703 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sched_getaffinity */
704 .long SYMBOL_NAME(sys_ni_syscall) /* sys_set_thread_area */
705 .long SYMBOL_NAME(sys_ni_syscall) /* sys_get_thread_area */
706 .long SYMBOL_NAME(sys_ni_syscall) /* 245 sys_io_setup */
707 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_destroy */
708 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_getevents */
709 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_submit */
710 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_cancel */
711 .long SYMBOL_NAME(sys_ni_syscall) /* 250 sys_alloc_hugepages */
712 .long SYMBOL_NAME(sys_ni_syscall) /* sys_free_hugepages */
713 .long SYMBOL_NAME(sys_ni_syscall) /* sys_exit_group */
715 .rept NR_syscalls-(.-sys_call_table)/4
716 .long SYMBOL_NAME(sys_ni_syscall)
717 .endr