ia64/xen-unstable

view xenolinux-2.4.22-sparse/arch/xeno/kernel/entry.S @ 789:9c21e28c40a0

bitkeeper revision 1.479.1.1 (3f819a2fnjjfq6SkNEPt-IcLHQFovA)

entry.S, memory.c:
Fix bug which caused extra entries into Xenolinux event dispatcher.
author kaf24@scramble.cl.cam.ac.uk
date Mon Oct 06 16:37:03 2003 +0000 (2003-10-06)
parents 86f8a7112ba1
children 22057fc2142f
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(lcall7)
137 pushfl # We get a different stack layout with call
138 pushl %eax # gates, which has to be cleaned up later..
139 SAVE_ALL
140 movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
141 movl CS(%esp),%edx # this is eip..
142 movl EFLAGS(%esp),%ecx # and this is cs..
143 movl %eax,EFLAGS(%esp) #
144 andl $~(NT_MASK|TF_MASK|DF_MASK), %eax
145 pushl %eax
146 popfl
147 movl %edx,EIP(%esp) # Now we move them to their "normal" places
148 movl %ecx,CS(%esp) #
149 movl %esp,%ebx
150 pushl %ebx
151 andl $-8192,%ebx # GET_CURRENT
152 movl exec_domain(%ebx),%edx # Get the execution domain
153 movl 4(%edx),%edx # Get the lcall7 handler for the domain
154 pushl $0x7
155 call *%edx
156 addl $4, %esp
157 popl %eax
158 jmp ret_from_sys_call
160 ENTRY(lcall27)
161 pushfl # We get a different stack layout with call
162 pushl %eax # gates, which has to be cleaned up later..
163 SAVE_ALL
164 movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
165 movl CS(%esp),%edx # this is eip..
166 movl EFLAGS(%esp),%ecx # and this is cs..
167 movl %eax,EFLAGS(%esp) #
168 andl $~(NT_MASK|TF_MASK|DF_MASK), %eax
169 pushl %eax
170 popfl
171 movl %edx,EIP(%esp) # Now we move them to their "normal" places
172 movl %ecx,CS(%esp) #
173 movl %esp,%ebx
174 pushl %ebx
175 andl $-8192,%ebx # GET_CURRENT
176 movl exec_domain(%ebx),%edx # Get the execution domain
177 movl 4(%edx),%edx # Get the lcall7 handler for the domain
178 pushl $0x27
179 call *%edx
180 addl $4, %esp
181 popl %eax
182 jmp ret_from_sys_call
184 ENTRY(ret_from_fork)
185 pushl %ebx
186 call SYMBOL_NAME(schedule_tail)
187 addl $4, %esp
188 GET_CURRENT(%ebx)
189 testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS
190 jne tracesys_exit
191 jmp ret_from_sys_call
193 /*
194 * Return to user mode is not as complex as all this looks,
195 * but we want the default path for a system call return to
196 * go as quickly as possible which is why some of this is
197 * less clear than it otherwise should be.
198 */
199 ENTRY(system_call)
200 pushl %eax # save orig_eax
201 SAVE_ALL
202 GET_CURRENT(%ebx)
203 testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS
204 jne tracesys
205 cmpl $(NR_syscalls),%eax
206 jae badsys
207 call *SYMBOL_NAME(sys_call_table)(,%eax,4)
208 movl %eax,EAX(%esp) # save the return value
209 ENTRY(ret_from_sys_call)
210 movl SYMBOL_NAME(HYPERVISOR_shared_info),%esi
211 btrl $EVENTS_MASTER_ENABLE_BIT,4(%esi) # make tests atomic
212 ret_syscall_tests:
213 cmpl $0,need_resched(%ebx)
214 jne reschedule
215 cmpl $0,sigpending(%ebx)
216 je safesti # ensure need_resched updates are seen
217 signal_return:
218 btsl $EVENTS_MASTER_ENABLE_BIT,4(%esi) # reenable event callbacks
219 movl %esp,%eax
220 xorl %edx,%edx
221 call SYMBOL_NAME(do_signal)
222 jmp ret_from_sys_call
224 ALIGN
225 restore_all:
226 RESTORE_ALL
228 ALIGN
229 tracesys:
230 movl $-ENOSYS,EAX(%esp)
231 call SYMBOL_NAME(syscall_trace)
232 movl ORIG_EAX(%esp),%eax
233 cmpl $(NR_syscalls),%eax
234 jae tracesys_exit
235 call *SYMBOL_NAME(sys_call_table)(,%eax,4)
236 movl %eax,EAX(%esp) # save the return value
237 tracesys_exit:
238 call SYMBOL_NAME(syscall_trace)
239 jmp ret_from_sys_call
240 badsys:
241 movl $-ENOSYS,EAX(%esp)
242 jmp ret_from_sys_call
244 ALIGN
245 ENTRY(ret_from_intr)
246 GET_CURRENT(%ebx)
247 ret_from_exception:
248 movb CS(%esp),%al
249 testl $2,%eax
250 jne ret_from_sys_call
251 jmp restore_all
253 ALIGN
254 reschedule:
255 btsl $EVENTS_MASTER_ENABLE_BIT,4(%esi) # reenable event callbacks
256 call SYMBOL_NAME(schedule) # test
257 jmp ret_from_sys_call
259 ENTRY(divide_error)
260 pushl $0 # no error code
261 pushl $ SYMBOL_NAME(do_divide_error)
262 ALIGN
263 error_code:
264 pushl %ds
265 pushl %eax
266 xorl %eax,%eax
267 pushl %ebp
268 pushl %edi
269 pushl %esi
270 pushl %edx
271 decl %eax # eax = -1
272 pushl %ecx
273 pushl %ebx
274 GET_CURRENT(%ebx)
275 cld
276 movl %es,%ecx
277 movl ORIG_EAX(%esp), %esi # get the error code
278 movl ES(%esp), %edi # get the function address
279 movl %eax, ORIG_EAX(%esp)
280 movl %ecx, ES(%esp)
281 movl %esp,%edx
282 pushl %esi # push the error code
283 pushl %edx # push the pt_regs pointer
284 movl $(__KERNEL_DS),%edx
285 movl %edx,%ds
286 movl %edx,%es
287 call *%edi
288 addl $8,%esp
289 jmp ret_from_exception
291 # A note on the "critical region" in our callback handler.
292 # We want to avoid stacking callback handlers due to events occurring
293 # during handling of the last event. To do this, we keep events disabled
294 # until we've done all processing. HOWEVER, we must enable events before
295 # popping the stack frame (can't be done atomically) and so it would still
296 # be possible to get enough handler activations to overflow the stack.
297 # Although unlikely, bugs of that kind are hard to track down, so we'd
298 # like to avoid the possibility.
299 # So, on entry to the handler we detect whether we interrupted an
300 # existing activation in its critical region -- if so, we pop the current
301 # activation and restart the handler using the previous one.
302 ENTRY(hypervisor_callback)
303 pushl %eax
304 SAVE_ALL
305 GET_CURRENT(%ebx)
306 movl EIP(%esp),%eax
307 cmpl $scrit,%eax
308 jb 11f
309 cmpl $ecrit,%eax
310 jb critical_region_fixup
311 11: push %esp
312 call do_hypervisor_callback
313 add $4,%esp
314 movl SYMBOL_NAME(HYPERVISOR_shared_info),%esi
315 movb CS(%esp),%cl
316 test $2,%cl # slow return to ring 2 or 3
317 jne ret_syscall_tests
318 safesti:btsl $EVENTS_MASTER_ENABLE_BIT,4(%esi) # reenable event callbacks
319 scrit: /**** START OF CRITICAL REGION ****/
320 cmpl $0,(%esi)
321 jne 14f # process more events if necessary...
322 RESTORE_ALL
323 14: btrl $EVENTS_MASTER_ENABLE_BIT,4(%esi)
324 jmp 11b
325 ecrit: /**** END OF CRITICAL REGION ****/
326 # [How we do the fixup]. We want to merge the current stack frame with the
327 # just-interrupted frame. How we do this depends on where in the critical
328 # region the interrupted handler was executing, and so how many saved
329 # registers are in each frame. We do this quickly using the lookup table
330 # 'critical_fixup_table'. For each byte offset in the critical region, it
331 # provides the number of bytes which have already been popped from the
332 # interrupted stack frame.
333 critical_region_fixup:
334 addl $critical_fixup_table-scrit,%eax
335 movzbl (%eax),%eax # %eax contains num bytes popped
336 mov %esp,%esi
337 add %eax,%esi # %esi points at end of src region
338 mov %esp,%edi
339 add $0x34,%edi # %edi points at end of dst region
340 mov %eax,%ecx
341 shr $2,%ecx # convert words to bytes
342 je 16f # skip loop if nothing to copy
343 15: subl $4,%esi # pre-decrementing copy loop
344 subl $4,%edi
345 movl (%esi),%eax
346 movl %eax,(%edi)
347 loop 15b
348 16: movl %edi,%esp # final %edi is top of merged stack
349 jmp 11b
351 critical_fixup_table:
352 .byte 0x00,0x00,0x00 # cmpl $0,(%esi)
353 .byte 0x00,0x00 # jne 14f
354 .byte 0x00 # pop %ebx
355 .byte 0x04 # pop %ecx
356 .byte 0x08 # pop %edx
357 .byte 0x0c # pop %esi
358 .byte 0x10 # pop %edi
359 .byte 0x14 # pop %ebp
360 .byte 0x18 # pop %eax
361 .byte 0x1c # pop %ds
362 .byte 0x20 # pop %es
363 .byte 0x24,0x24,0x24 # add $4,%esp
364 .byte 0x28 # iret
365 .byte 0x00,0x00,0x00,0x00,0x00 # btrl $31,4(%esi)
366 .byte 0x00,0x00 # jmp 11b
368 # Hypervisor uses this for application faults while it executes.
369 ENTRY(failsafe_callback)
370 1: pop %ds
371 2: pop %es
372 3: pop %fs
373 4: pop %gs
374 5: iret
375 .section .fixup,"ax"; \
376 6: movl $0,(%esp); \
377 jmp 1b; \
378 7: movl $0,(%esp); \
379 jmp 2b; \
380 8: movl $0,(%esp); \
381 jmp 3b; \
382 9: movl $0,(%esp); \
383 jmp 4b; \
384 10: pushl %ss; \
385 popl %ds; \
386 pushl %ss; \
387 popl %es; \
388 pushl $11; \
389 call do_exit; \
390 .previous; \
391 .section __ex_table,"a";\
392 .align 4; \
393 .long 1b,6b; \
394 .long 2b,7b; \
395 .long 3b,8b; \
396 .long 4b,9b; \
397 .long 5b,10b; \
398 .previous
400 ENTRY(coprocessor_error)
401 pushl $0
402 pushl $ SYMBOL_NAME(do_coprocessor_error)
403 jmp error_code
405 ENTRY(simd_coprocessor_error)
406 pushl $0
407 pushl $ SYMBOL_NAME(do_simd_coprocessor_error)
408 jmp error_code
410 ENTRY(device_not_available)
411 pushl $-1 # mark this as an int
412 SAVE_ALL
413 GET_CURRENT(%ebx)
414 call SYMBOL_NAME(math_state_restore)
415 jmp ret_from_exception
417 ENTRY(debug)
418 pushl $0
419 pushl $ SYMBOL_NAME(do_debug)
420 jmp error_code
422 ENTRY(int3)
423 pushl $0
424 pushl $ SYMBOL_NAME(do_int3)
425 jmp error_code
427 ENTRY(overflow)
428 pushl $0
429 pushl $ SYMBOL_NAME(do_overflow)
430 jmp error_code
432 ENTRY(bounds)
433 pushl $0
434 pushl $ SYMBOL_NAME(do_bounds)
435 jmp error_code
437 ENTRY(invalid_op)
438 pushl $0
439 pushl $ SYMBOL_NAME(do_invalid_op)
440 jmp error_code
442 ENTRY(coprocessor_segment_overrun)
443 pushl $0
444 pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
445 jmp error_code
447 ENTRY(double_fault)
448 pushl $ SYMBOL_NAME(do_double_fault)
449 jmp error_code
451 ENTRY(invalid_TSS)
452 pushl $ SYMBOL_NAME(do_invalid_TSS)
453 jmp error_code
455 ENTRY(segment_not_present)
456 pushl $ SYMBOL_NAME(do_segment_not_present)
457 jmp error_code
459 ENTRY(stack_segment)
460 pushl $ SYMBOL_NAME(do_stack_segment)
461 jmp error_code
463 ENTRY(general_protection)
464 pushl $ SYMBOL_NAME(do_general_protection)
465 jmp error_code
467 ENTRY(alignment_check)
468 pushl $ SYMBOL_NAME(do_alignment_check)
469 jmp error_code
471 # This handler is special, because it gets an extra value on its stack,
472 # which is the linear faulting address.
473 ENTRY(page_fault)
474 pushl %ds
475 pushl %eax
476 xorl %eax,%eax
477 pushl %ebp
478 pushl %edi
479 pushl %esi
480 pushl %edx
481 decl %eax # eax = -1
482 pushl %ecx
483 pushl %ebx
484 GET_CURRENT(%ebx)
485 cld
486 movl %es,%ecx
487 movl ORIG_EAX(%esp), %esi # get the error code
488 movl ES(%esp), %edi # get the faulting address
489 movl %eax, ORIG_EAX(%esp)
490 movl %ecx, ES(%esp)
491 movl %esp,%edx
492 pushl %edi # push the faulting address
493 pushl %esi # push the error code
494 pushl %edx # push the pt_regs pointer
495 movl $(__KERNEL_DS),%edx
496 movl %edx,%ds
497 movl %edx,%es
498 call SYMBOL_NAME(do_page_fault)
499 addl $12,%esp
500 jmp ret_from_exception
502 ENTRY(machine_check)
503 pushl $0
504 pushl $ SYMBOL_NAME(do_machine_check)
505 jmp error_code
507 ENTRY(spurious_interrupt_bug)
508 pushl $0
509 pushl $ SYMBOL_NAME(do_spurious_interrupt_bug)
510 jmp error_code
512 .data
513 ENTRY(sys_call_table)
514 .long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/
515 .long SYMBOL_NAME(sys_exit)
516 .long SYMBOL_NAME(sys_fork)
517 .long SYMBOL_NAME(sys_read)
518 .long SYMBOL_NAME(sys_write)
519 .long SYMBOL_NAME(sys_open) /* 5 */
520 .long SYMBOL_NAME(sys_close)
521 .long SYMBOL_NAME(sys_waitpid)
522 .long SYMBOL_NAME(sys_creat)
523 .long SYMBOL_NAME(sys_link)
524 .long SYMBOL_NAME(sys_unlink) /* 10 */
525 .long SYMBOL_NAME(sys_execve)
526 .long SYMBOL_NAME(sys_chdir)
527 .long SYMBOL_NAME(sys_time)
528 .long SYMBOL_NAME(sys_mknod)
529 .long SYMBOL_NAME(sys_chmod) /* 15 */
530 .long SYMBOL_NAME(sys_lchown16)
531 .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */
532 .long SYMBOL_NAME(sys_stat)
533 .long SYMBOL_NAME(sys_lseek)
534 .long SYMBOL_NAME(sys_getpid) /* 20 */
535 .long SYMBOL_NAME(sys_mount)
536 .long SYMBOL_NAME(sys_oldumount)
537 .long SYMBOL_NAME(sys_setuid16)
538 .long SYMBOL_NAME(sys_getuid16)
539 .long SYMBOL_NAME(sys_stime) /* 25 */
540 .long SYMBOL_NAME(sys_ptrace)
541 .long SYMBOL_NAME(sys_alarm)
542 .long SYMBOL_NAME(sys_fstat)
543 .long SYMBOL_NAME(sys_pause)
544 .long SYMBOL_NAME(sys_utime) /* 30 */
545 .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */
546 .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */
547 .long SYMBOL_NAME(sys_access)
548 .long SYMBOL_NAME(sys_nice)
549 .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */
550 .long SYMBOL_NAME(sys_sync)
551 .long SYMBOL_NAME(sys_kill)
552 .long SYMBOL_NAME(sys_rename)
553 .long SYMBOL_NAME(sys_mkdir)
554 .long SYMBOL_NAME(sys_rmdir) /* 40 */
555 .long SYMBOL_NAME(sys_dup)
556 .long SYMBOL_NAME(sys_pipe)
557 .long SYMBOL_NAME(sys_times)
558 .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */
559 .long SYMBOL_NAME(sys_brk) /* 45 */
560 .long SYMBOL_NAME(sys_setgid16)
561 .long SYMBOL_NAME(sys_getgid16)
562 .long SYMBOL_NAME(sys_signal)
563 .long SYMBOL_NAME(sys_geteuid16)
564 .long SYMBOL_NAME(sys_getegid16) /* 50 */
565 .long SYMBOL_NAME(sys_acct)
566 .long SYMBOL_NAME(sys_umount) /* recycled never used phys() */
567 .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */
568 .long SYMBOL_NAME(sys_ioctl)
569 .long SYMBOL_NAME(sys_fcntl) /* 55 */
570 .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */
571 .long SYMBOL_NAME(sys_setpgid)
572 .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */
573 .long SYMBOL_NAME(sys_olduname)
574 .long SYMBOL_NAME(sys_umask) /* 60 */
575 .long SYMBOL_NAME(sys_chroot)
576 .long SYMBOL_NAME(sys_ustat)
577 .long SYMBOL_NAME(sys_dup2)
578 .long SYMBOL_NAME(sys_getppid)
579 .long SYMBOL_NAME(sys_getpgrp) /* 65 */
580 .long SYMBOL_NAME(sys_setsid)
581 .long SYMBOL_NAME(sys_sigaction)
582 .long SYMBOL_NAME(sys_sgetmask)
583 .long SYMBOL_NAME(sys_ssetmask)
584 .long SYMBOL_NAME(sys_setreuid16) /* 70 */
585 .long SYMBOL_NAME(sys_setregid16)
586 .long SYMBOL_NAME(sys_sigsuspend)
587 .long SYMBOL_NAME(sys_sigpending)
588 .long SYMBOL_NAME(sys_sethostname)
589 .long SYMBOL_NAME(sys_setrlimit) /* 75 */
590 .long SYMBOL_NAME(sys_old_getrlimit)
591 .long SYMBOL_NAME(sys_getrusage)
592 .long SYMBOL_NAME(sys_gettimeofday)
593 .long SYMBOL_NAME(sys_settimeofday)
594 .long SYMBOL_NAME(sys_getgroups16) /* 80 */
595 .long SYMBOL_NAME(sys_setgroups16)
596 .long SYMBOL_NAME(old_select)
597 .long SYMBOL_NAME(sys_symlink)
598 .long SYMBOL_NAME(sys_lstat)
599 .long SYMBOL_NAME(sys_readlink) /* 85 */
600 .long SYMBOL_NAME(sys_uselib)
601 .long SYMBOL_NAME(sys_swapon)
602 .long SYMBOL_NAME(sys_reboot)
603 .long SYMBOL_NAME(old_readdir)
604 .long SYMBOL_NAME(old_mmap) /* 90 */
605 .long SYMBOL_NAME(sys_munmap)
606 .long SYMBOL_NAME(sys_truncate)
607 .long SYMBOL_NAME(sys_ftruncate)
608 .long SYMBOL_NAME(sys_fchmod)
609 .long SYMBOL_NAME(sys_fchown16) /* 95 */
610 .long SYMBOL_NAME(sys_getpriority)
611 .long SYMBOL_NAME(sys_setpriority)
612 .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */
613 .long SYMBOL_NAME(sys_statfs)
614 .long SYMBOL_NAME(sys_fstatfs) /* 100 */
615 .long SYMBOL_NAME(sys_ioperm)
616 .long SYMBOL_NAME(sys_socketcall)
617 .long SYMBOL_NAME(sys_syslog)
618 .long SYMBOL_NAME(sys_setitimer)
619 .long SYMBOL_NAME(sys_getitimer) /* 105 */
620 .long SYMBOL_NAME(sys_newstat)
621 .long SYMBOL_NAME(sys_newlstat)
622 .long SYMBOL_NAME(sys_newfstat)
623 .long SYMBOL_NAME(sys_uname)
624 .long SYMBOL_NAME(sys_iopl) /* 110 */
625 .long SYMBOL_NAME(sys_vhangup)
626 .long SYMBOL_NAME(sys_ni_syscall) /* old "idle" system call */
627 .long SYMBOL_NAME(sys_ni_syscall) /* was VM86 */
628 .long SYMBOL_NAME(sys_wait4)
629 .long SYMBOL_NAME(sys_swapoff) /* 115 */
630 .long SYMBOL_NAME(sys_sysinfo)
631 .long SYMBOL_NAME(sys_ipc)
632 .long SYMBOL_NAME(sys_fsync)
633 .long SYMBOL_NAME(sys_sigreturn)
634 .long SYMBOL_NAME(sys_clone) /* 120 */
635 .long SYMBOL_NAME(sys_setdomainname)
636 .long SYMBOL_NAME(sys_newuname)
637 .long SYMBOL_NAME(sys_modify_ldt)
638 .long SYMBOL_NAME(sys_adjtimex)
639 .long SYMBOL_NAME(sys_mprotect) /* 125 */
640 .long SYMBOL_NAME(sys_sigprocmask)
641 .long SYMBOL_NAME(sys_create_module)
642 .long SYMBOL_NAME(sys_init_module)
643 .long SYMBOL_NAME(sys_delete_module)
644 .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
645 .long SYMBOL_NAME(sys_quotactl)
646 .long SYMBOL_NAME(sys_getpgid)
647 .long SYMBOL_NAME(sys_fchdir)
648 .long SYMBOL_NAME(sys_bdflush)
649 .long SYMBOL_NAME(sys_sysfs) /* 135 */
650 .long SYMBOL_NAME(sys_personality)
651 .long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
652 .long SYMBOL_NAME(sys_setfsuid16)
653 .long SYMBOL_NAME(sys_setfsgid16)
654 .long SYMBOL_NAME(sys_llseek) /* 140 */
655 .long SYMBOL_NAME(sys_getdents)
656 .long SYMBOL_NAME(sys_select)
657 .long SYMBOL_NAME(sys_flock)
658 .long SYMBOL_NAME(sys_msync)
659 .long SYMBOL_NAME(sys_readv) /* 145 */
660 .long SYMBOL_NAME(sys_writev)
661 .long SYMBOL_NAME(sys_getsid)
662 .long SYMBOL_NAME(sys_fdatasync)
663 .long SYMBOL_NAME(sys_sysctl)
664 .long SYMBOL_NAME(sys_mlock) /* 150 */
665 .long SYMBOL_NAME(sys_munlock)
666 .long SYMBOL_NAME(sys_mlockall)
667 .long SYMBOL_NAME(sys_munlockall)
668 .long SYMBOL_NAME(sys_sched_setparam)
669 .long SYMBOL_NAME(sys_sched_getparam) /* 155 */
670 .long SYMBOL_NAME(sys_sched_setscheduler)
671 .long SYMBOL_NAME(sys_sched_getscheduler)
672 .long SYMBOL_NAME(sys_sched_yield)
673 .long SYMBOL_NAME(sys_sched_get_priority_max)
674 .long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */
675 .long SYMBOL_NAME(sys_sched_rr_get_interval)
676 .long SYMBOL_NAME(sys_nanosleep)
677 .long SYMBOL_NAME(sys_mremap)
678 .long SYMBOL_NAME(sys_setresuid16)
679 .long SYMBOL_NAME(sys_getresuid16) /* 165 */
680 .long SYMBOL_NAME(sys_ni_syscall) /* was VM86 */
681 .long SYMBOL_NAME(sys_query_module)
682 .long SYMBOL_NAME(sys_poll)
683 .long SYMBOL_NAME(sys_nfsservctl)
684 .long SYMBOL_NAME(sys_setresgid16) /* 170 */
685 .long SYMBOL_NAME(sys_getresgid16)
686 .long SYMBOL_NAME(sys_prctl)
687 .long SYMBOL_NAME(sys_rt_sigreturn)
688 .long SYMBOL_NAME(sys_rt_sigaction)
689 .long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */
690 .long SYMBOL_NAME(sys_rt_sigpending)
691 .long SYMBOL_NAME(sys_rt_sigtimedwait)
692 .long SYMBOL_NAME(sys_rt_sigqueueinfo)
693 .long SYMBOL_NAME(sys_rt_sigsuspend)
694 .long SYMBOL_NAME(sys_pread) /* 180 */
695 .long SYMBOL_NAME(sys_pwrite)
696 .long SYMBOL_NAME(sys_chown16)
697 .long SYMBOL_NAME(sys_getcwd)
698 .long SYMBOL_NAME(sys_capget)
699 .long SYMBOL_NAME(sys_capset) /* 185 */
700 .long SYMBOL_NAME(sys_sigaltstack)
701 .long SYMBOL_NAME(sys_sendfile)
702 .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
703 .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
704 .long SYMBOL_NAME(sys_vfork) /* 190 */
705 .long SYMBOL_NAME(sys_getrlimit)
706 .long SYMBOL_NAME(sys_mmap2)
707 .long SYMBOL_NAME(sys_truncate64)
708 .long SYMBOL_NAME(sys_ftruncate64)
709 .long SYMBOL_NAME(sys_stat64) /* 195 */
710 .long SYMBOL_NAME(sys_lstat64)
711 .long SYMBOL_NAME(sys_fstat64)
712 .long SYMBOL_NAME(sys_lchown)
713 .long SYMBOL_NAME(sys_getuid)
714 .long SYMBOL_NAME(sys_getgid) /* 200 */
715 .long SYMBOL_NAME(sys_geteuid)
716 .long SYMBOL_NAME(sys_getegid)
717 .long SYMBOL_NAME(sys_setreuid)
718 .long SYMBOL_NAME(sys_setregid)
719 .long SYMBOL_NAME(sys_getgroups) /* 205 */
720 .long SYMBOL_NAME(sys_setgroups)
721 .long SYMBOL_NAME(sys_fchown)
722 .long SYMBOL_NAME(sys_setresuid)
723 .long SYMBOL_NAME(sys_getresuid)
724 .long SYMBOL_NAME(sys_setresgid) /* 210 */
725 .long SYMBOL_NAME(sys_getresgid)
726 .long SYMBOL_NAME(sys_chown)
727 .long SYMBOL_NAME(sys_setuid)
728 .long SYMBOL_NAME(sys_setgid)
729 .long SYMBOL_NAME(sys_setfsuid) /* 215 */
730 .long SYMBOL_NAME(sys_setfsgid)
731 .long SYMBOL_NAME(sys_pivot_root)
732 .long SYMBOL_NAME(sys_mincore)
733 .long SYMBOL_NAME(sys_madvise)
734 .long SYMBOL_NAME(sys_getdents64) /* 220 */
735 .long SYMBOL_NAME(sys_fcntl64)
736 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for TUX */
737 .long SYMBOL_NAME(sys_ni_syscall) /* Reserved for Security */
738 .long SYMBOL_NAME(sys_gettid)
739 .long SYMBOL_NAME(sys_readahead) /* 225 */
740 .long SYMBOL_NAME(sys_setxattr)
741 .long SYMBOL_NAME(sys_lsetxattr)
742 .long SYMBOL_NAME(sys_fsetxattr)
743 .long SYMBOL_NAME(sys_getxattr)
744 .long SYMBOL_NAME(sys_lgetxattr) /* 230 */
745 .long SYMBOL_NAME(sys_fgetxattr)
746 .long SYMBOL_NAME(sys_listxattr)
747 .long SYMBOL_NAME(sys_llistxattr)
748 .long SYMBOL_NAME(sys_flistxattr)
749 .long SYMBOL_NAME(sys_removexattr) /* 235 */
750 .long SYMBOL_NAME(sys_lremovexattr)
751 .long SYMBOL_NAME(sys_fremovexattr)
752 .long SYMBOL_NAME(sys_tkill)
753 .long SYMBOL_NAME(sys_sendfile64)
754 .long SYMBOL_NAME(sys_ni_syscall) /* 240 reserved for futex */
755 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sched_setaffinity */
756 .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sched_getaffinity */
757 .long SYMBOL_NAME(sys_ni_syscall) /* sys_set_thread_area */
758 .long SYMBOL_NAME(sys_ni_syscall) /* sys_get_thread_area */
759 .long SYMBOL_NAME(sys_ni_syscall) /* 245 sys_io_setup */
760 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_destroy */
761 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_getevents */
762 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_submit */
763 .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_cancel */
764 .long SYMBOL_NAME(sys_ni_syscall) /* 250 sys_alloc_hugepages */
765 .long SYMBOL_NAME(sys_ni_syscall) /* sys_free_hugepages */
766 .long SYMBOL_NAME(sys_ni_syscall) /* sys_exit_group */
767 .long SYMBOL_NAME(sys_ni_syscall) /* sys_lookup_dcookie */
768 .long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_create */
769 .long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_ctl 255 */
770 .long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_wait */
771 .long SYMBOL_NAME(sys_ni_syscall) /* sys_remap_file_pages */
772 .long SYMBOL_NAME(sys_ni_syscall) /* sys_set_tid_address */
774 .rept NR_syscalls-(.-sys_call_table)/4
775 .long SYMBOL_NAME(sys_ni_syscall)
776 .endr