1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <linux/sys.h>
44 #include <linux/linkage.h>
45 #include <asm/segment.h>
46 #define ASSEMBLY
47 #include <asm/smp.h>
48
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 FS = 0x24
59 GS = 0x28
60 ORIG_EAX = 0x2C
61 EIP = 0x30
62 CS = 0x34
63 EFLAGS = 0x38
64 OLDESP = 0x3C
65 OLDSS = 0x40
66
67 CF_MASK = 0x00000001
68 IF_MASK = 0x00000200
69 NT_MASK = 0x00004000
70 VM_MASK = 0x00020000
71
72
73
74
75 state = 0
76 counter = 4
77 priority = 8
78 signal = 12
79 blocked = 16
80 flags = 20
81 errno = 24
82 dbgreg6 = 52
83 dbgreg7 = 56
84 exec_domain = 60
85
86 ENOSYS = 38
87
88 #define SAVE_ALL \
89 cld; \
90 push %gs; \
91 push %fs; \
92 push %es; \
93 push %ds; \
94 pushl %eax; \
95 pushl %ebp; \
96 pushl %edi; \
97 pushl %esi; \
98 pushl %edx; \
99 pushl %ecx; \
100 pushl %ebx; \
101 movl $(KERNEL_DS),%edx; \
102 mov %dx,%ds; \
103 mov %dx,%es; \
104 movl $(USER_DS),%edx; \
105 mov %dx,%fs;
106
107 #ifdef __SMP__
108
109 #define GET_PROCESSOR_ID \
110 movl SYMBOL_NAME(apic_reg), %edx; \
111 movl 32(%edx), %eax;\
112 movl %eax,SYMBOL_NAME(apic_retval); \
113 shrl $24,%eax; \
114 andb $0x0F,%al;
115
116
117
118
119
120 #define GET_PROCESSOR_OFFSET(x) \
121 movl SYMBOL_NAME(apic_reg), x ; \
122 movl 32( x ), x ; \
123 shrl $22, x ; \
124 andl $0x3C, x ;
125
126
127
128 #define LEAVE_KERNEL \
129 pushfl; \
130 cli; \
131 GET_PROCESSOR_ID \
132 btrl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \
133 decl SYMBOL_NAME(syscall_count); \
134 decl SYMBOL_NAME(kernel_counter); \
135 jnz 1f; \
136 movb $(NO_PROC_ID), SYMBOL_NAME(active_kernel_processor); \
137 lock; \
138 btrl $0, SYMBOL_NAME(kernel_flag); \
139 1: popfl;
140
141
142
143
144
145
146
147
148
149
150
151
152
153 #ifndef __SMP_PROF__
154
155 #define SMP_PROF_A
156 #define SMP_PROF_B
157
158 #else
159
160 #define SMP_PROF_A movl $0,SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4);
161 #define SMP_PROF_B incl SYMBOL_NAME(smp_spins_syscall)(,%eax,4); \
162 incl SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4);
163 #endif
164
165 #define ENTER_KERNEL \
166 pushl %eax; \
167 pushl %edx; \
168 pushfl; \
169 cli; \
170 GET_PROCESSOR_ID \
171 btsl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \
172 SMP_PROF_A \
173 1: lock; \
174 btsl $0, SYMBOL_NAME(kernel_flag); \
175 jnc 3f; \
176 cmpb SYMBOL_NAME(active_kernel_processor), %al; \
177 je 4f; \
178 2: SMP_PROF_B \
179 btl %al, SYMBOL_NAME(smp_invalidate_needed); \
180 jnc 5f; \
181 lock; \
182 btrl %al, SYMBOL_NAME(smp_invalidate_needed); \
183 jnc 5f; \
184 movl %cr3,%edx; \
185 movl %edx,%cr3; \
186 5: btl $0, SYMBOL_NAME(kernel_flag); \
187 jc 2b; \
188 jmp 1b; \
189 3: movb %al, SYMBOL_NAME(active_kernel_processor); \
190 4: incl SYMBOL_NAME(kernel_counter); \
191 incl SYMBOL_NAME(syscall_count); \
192 popfl; \
193 popl %edx; \
194 popl %eax;
195
196
197 #define RESTORE_ALL \
198 cmpw $(KERNEL_CS),CS(%esp); \
199 je 1f; \
200 GET_PROCESSOR_OFFSET(%edx) \
201 movl SYMBOL_NAME(current_set)(,%edx), %eax ; ; \
202 movl dbgreg7(%eax),%ebx; \
203 movl %ebx,%db7; \
204 1: LEAVE_KERNEL \
205 popl %ebx; \
206 popl %ecx; \
207 popl %edx; \
208 popl %esi; \
209 popl %edi; \
210 popl %ebp; \
211 popl %eax; \
212 pop %ds; \
213 pop %es; \
214 pop %fs; \
215 pop %gs; \
216 addl $4,%esp; \
217 iret
218
219 #else
220
221 #define RESTORE_ALL \
222 cmpw $(KERNEL_CS),CS(%esp); \
223 je 1f; \
224 movl SYMBOL_NAME(current_set),%eax; \
225 movl dbgreg7(%eax),%ebx; \
226 movl %ebx,%db7; \
227 1: \
228 popl %ebx; \
229 popl %ecx; \
230 popl %edx; \
231 popl %esi; \
232 popl %edi; \
233 popl %ebp; \
234 popl %eax; \
235 pop %ds; \
236 pop %es; \
237 pop %fs; \
238 pop %gs; \
239 addl $4,%esp; \
240 iret
241 #endif
242
243
244 ENTRY(lcall7)
245 pushfl # We get a different stack layout with call gates,
246 pushl %eax # which has to be cleaned up later..
247 SAVE_ALL
248 #ifdef __SMP__
249 ENTER_KERNEL
250 #endif
251 movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
252 movl CS(%esp),%edx # this is eip..
253 movl EFLAGS(%esp),%ecx # and this is cs..
254 movl %eax,EFLAGS(%esp) #
255 movl %edx,EIP(%esp) # Now we move them to their "normal" places
256 movl %ecx,CS(%esp) #
257 movl %esp,%eax
258 #ifdef __SMP__
259 GET_PROCESSOR_OFFSET(%edx) # Processor offset into edx
260 movl SYMBOL_NAME(current_set)(,%edx),%edx
261 #else
262 movl SYMBOL_NAME(current_set),%edx
263 #endif
264 pushl %eax
265 movl exec_domain(%edx),%edx # Get the execution domain
266 movl 4(%edx),%edx # Get the lcall7 handler for the domain
267 call *%edx
268 popl %eax
269 jmp ret_from_sys_call
270
271 ALIGN
272 handle_bottom_half:
273 pushfl
274 incl SYMBOL_NAME(intr_count)
275 sti
276 call SYMBOL_NAME(do_bottom_half)
277 popfl
278 decl SYMBOL_NAME(intr_count)
279 jmp 9f
280 ALIGN
281 reschedule:
282 pushl $ret_from_sys_call
283 jmp SYMBOL_NAME(schedule) # test
284
285 ENTRY(system_call)
286 pushl %eax # save orig_eax
287 SAVE_ALL
288 #ifdef __SMP__
289 ENTER_KERNEL
290 #endif
291 movl $-ENOSYS,EAX(%esp)
292 cmpl $(NR_syscalls),%eax
293 jae ret_from_sys_call
294 movl SYMBOL_NAME(sys_call_table)(,%eax,4),%eax
295 testl %eax,%eax
296 je ret_from_sys_call
297 #ifdef __SMP__
298 GET_PROCESSOR_OFFSET(%edx)
299 movl SYMBOL_NAME(current_set)(,%edx),%ebx
300 #else
301 movl SYMBOL_NAME(current_set),%ebx
302 #endif
303 andl $~CF_MASK,EFLAGS(%esp) # clear carry - assume no errors
304 movl $0,errno(%ebx)
305 movl %db6,%edx
306 movl %edx,dbgreg6(%ebx) # save current hardware debugging status
307 testb $0x20,flags(%ebx) # PF_TRACESYS
308 jne 1f
309 call *%eax
310 movl %eax,EAX(%esp) # save the return value
311 movl errno(%ebx),%edx
312 negl %edx
313 je ret_from_sys_call
314 movl %edx,EAX(%esp)
315 orl $(CF_MASK),EFLAGS(%esp) # set carry to indicate error
316 jmp ret_from_sys_call
317 ALIGN
318 1: call SYMBOL_NAME(syscall_trace)
319 movl ORIG_EAX(%esp),%eax
320 call SYMBOL_NAME(sys_call_table)(,%eax,4)
321 movl %eax,EAX(%esp) # save the return value
322 #ifdef __SMP__
323 GET_PROCESSOR_OFFSET(%eax)
324 movl SYMBOL_NAME(current_set)(,%eax),%eax
325 #else
326 movl SYMBOL_NAME(current_set),%eax
327 #endif
328 movl errno(%eax),%edx
329 negl %edx
330 je 1f
331 movl %edx,EAX(%esp)
332 orl $(CF_MASK),EFLAGS(%esp) # set carry to indicate error
333 1: call SYMBOL_NAME(syscall_trace)
334
335 ALIGN
336 .globl ret_from_sys_call
337 ret_from_sys_call:
338 cmpl $0,SYMBOL_NAME(intr_count)
339 jne 2f
340 9: movl SYMBOL_NAME(bh_mask),%eax
341 andl SYMBOL_NAME(bh_active),%eax
342 jne handle_bottom_half
343 movl EFLAGS(%esp),%eax # check VM86 flag: CS/SS are
344 testl $(VM_MASK),%eax # different then
345 jne 1f
346 cmpw $(KERNEL_CS),CS(%esp) # was old code segment supervisor ?
347 je 2f
348 1: sti
349 orl $(IF_MASK),%eax # these just try to make sure
350 andl $~NT_MASK,%eax # the program doesn't do anything
351 movl %eax,EFLAGS(%esp) # stupid
352 cmpl $0,SYMBOL_NAME(need_resched)
353 jne reschedule
354 #ifdef __SMP__
355 GET_PROCESSOR_OFFSET(%eax)
356 movl SYMBOL_NAME(current_set)(,%eax), %eax
357 #else
358 movl SYMBOL_NAME(current_set),%eax
359 #endif
360 cmpl SYMBOL_NAME(task),%eax # task[0] cannot have signals
361 je 2f
362 movl blocked(%eax),%ecx
363 movl %ecx,%ebx # save blocked in %ebx for signal handling
364 notl %ecx
365 andl signal(%eax),%ecx
366 jne signal_return
367 2: RESTORE_ALL
368 ALIGN
369 signal_return:
370 movl %esp,%ecx
371 pushl %ecx
372 testl $(VM_MASK),EFLAGS(%ecx)
373 jne v86_signal_return
374 pushl %ebx
375 call SYMBOL_NAME(do_signal)
376 popl %ebx
377 popl %ebx
378 RESTORE_ALL
379 ALIGN
380 v86_signal_return:
381 call SYMBOL_NAME(save_v86_state)
382 movl %eax,%esp
383 pushl %eax
384 pushl %ebx
385 call SYMBOL_NAME(do_signal)
386 popl %ebx
387 popl %ebx
388 RESTORE_ALL
389
390 ENTRY(divide_error)
391 pushl $0 # no error code
392 pushl $ SYMBOL_NAME(do_divide_error)
393 ALIGN
394 error_code:
395 push %fs
396 push %es
397 push %ds
398 pushl %eax
399 pushl %ebp
400 pushl %edi
401 pushl %esi
402 pushl %edx
403 pushl %ecx
404 pushl %ebx
405 movl $0,%eax
406 movl %eax,%db7 # disable hardware debugging...
407 cld
408 movl $-1, %eax
409 xchgl %eax, ORIG_EAX(%esp) # orig_eax (get the error code. )
410 xorl %ebx,%ebx # zero ebx
411 mov %gs,%bx # get the lower order bits of gs
412 xchgl %ebx, GS(%esp) # get the address and save gs.
413 pushl %eax # push the error code
414 lea 4(%esp),%edx
415 pushl %edx
416 movl $(KERNEL_DS),%edx
417 mov %dx,%ds
418 mov %dx,%es
419 movl $(USER_DS),%edx
420 mov %dx,%fs
421 #ifdef __SMP__
422 ENTER_KERNEL
423 #endif
424 pushl %eax
425 #ifdef __SMP__
426 GET_PROCESSOR_OFFSET(%eax)
427 movl SYMBOL_NAME(current_set)(,%eax), %eax
428 #else
429 movl SYMBOL_NAME(current_set),%eax
430 #endif
431 movl %db6,%edx
432 movl %edx,dbgreg6(%eax) # save current hardware debugging status
433 popl %eax
434 call *%ebx
435 addl $8,%esp
436 jmp ret_from_sys_call
437
438 ENTRY(coprocessor_error)
439 pushl $0
440 pushl $ SYMBOL_NAME(do_coprocessor_error)
441 jmp error_code
442
443 ENTRY(device_not_available)
444 pushl $-1 # mark this as an int
445 SAVE_ALL
446 #ifdef __SMP__
447 ENTER_KERNEL
448 #endif
449 pushl $ret_from_sys_call
450 movl %cr0,%eax
451 testl $0x4,%eax # EM (math emulation bit)
452 je SYMBOL_NAME(math_state_restore)
453 pushl $0 # temporary storage for ORIG_EIP
454 call SYMBOL_NAME(math_emulate)
455 addl $4,%esp
456 ret
457
458 ENTRY(debug)
459 pushl $0
460 pushl $ SYMBOL_NAME(do_debug)
461 jmp error_code
462
463 ENTRY(nmi)
464 pushl $0
465 pushl $ SYMBOL_NAME(do_nmi)
466 jmp error_code
467
468 ENTRY(int3)
469 pushl $0
470 pushl $ SYMBOL_NAME(do_int3)
471 jmp error_code
472
473 ENTRY(overflow)
474 pushl $0
475 pushl $ SYMBOL_NAME(do_overflow)
476 jmp error_code
477
478 ENTRY(bounds)
479 pushl $0
480 pushl $ SYMBOL_NAME(do_bounds)
481 jmp error_code
482
483 ENTRY(invalid_op)
484 pushl $0
485 pushl $ SYMBOL_NAME(do_invalid_op)
486 jmp error_code
487
488 ENTRY(coprocessor_segment_overrun)
489 pushl $0
490 pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
491 jmp error_code
492
493 ENTRY(reserved)
494 pushl $0
495 pushl $ SYMBOL_NAME(do_reserved)
496 jmp error_code
497
498 ENTRY(double_fault)
499 pushl $ SYMBOL_NAME(do_double_fault)
500 jmp error_code
501
502 ENTRY(invalid_TSS)
503 pushl $ SYMBOL_NAME(do_invalid_TSS)
504 jmp error_code
505
506 ENTRY(segment_not_present)
507 pushl $ SYMBOL_NAME(do_segment_not_present)
508 jmp error_code
509
510 ENTRY(stack_segment)
511 pushl $ SYMBOL_NAME(do_stack_segment)
512 jmp error_code
513
514 ENTRY(general_protection)
515 pushl $ SYMBOL_NAME(do_general_protection)
516 jmp error_code
517
518 ENTRY(alignment_check)
519 pushl $ SYMBOL_NAME(do_alignment_check)
520 jmp error_code
521
522 ENTRY(page_fault)
523 pushl $ SYMBOL_NAME(do_page_fault)
524 jmp error_code
525
526 .data
527 ENTRY(sys_call_table)
528 .long SYMBOL_NAME(sys_setup)
529 .long SYMBOL_NAME(sys_exit)
530 .long SYMBOL_NAME(sys_fork)
531 .long SYMBOL_NAME(sys_read)
532 .long SYMBOL_NAME(sys_write)
533 .long SYMBOL_NAME(sys_open)
534 .long SYMBOL_NAME(sys_close)
535 .long SYMBOL_NAME(sys_waitpid)
536 .long SYMBOL_NAME(sys_creat)
537 .long SYMBOL_NAME(sys_link)
538 .long SYMBOL_NAME(sys_unlink)
539 .long SYMBOL_NAME(sys_execve)
540 .long SYMBOL_NAME(sys_chdir)
541 .long SYMBOL_NAME(sys_time)
542 .long SYMBOL_NAME(sys_mknod)
543 .long SYMBOL_NAME(sys_chmod)
544 .long SYMBOL_NAME(sys_chown)
545 .long SYMBOL_NAME(sys_break)
546 .long SYMBOL_NAME(sys_stat)
547 .long SYMBOL_NAME(sys_lseek)
548 .long SYMBOL_NAME(sys_getpid)
549 .long SYMBOL_NAME(sys_mount)
550 .long SYMBOL_NAME(sys_umount)
551 .long SYMBOL_NAME(sys_setuid)
552 .long SYMBOL_NAME(sys_getuid)
553 .long SYMBOL_NAME(sys_stime)
554 .long SYMBOL_NAME(sys_ptrace)
555 .long SYMBOL_NAME(sys_alarm)
556 .long SYMBOL_NAME(sys_fstat)
557 .long SYMBOL_NAME(sys_pause)
558 .long SYMBOL_NAME(sys_utime)
559 .long SYMBOL_NAME(sys_stty)
560 .long SYMBOL_NAME(sys_gtty)
561 .long SYMBOL_NAME(sys_access)
562 .long SYMBOL_NAME(sys_nice)
563 .long SYMBOL_NAME(sys_ftime)
564 .long SYMBOL_NAME(sys_sync)
565 .long SYMBOL_NAME(sys_kill)
566 .long SYMBOL_NAME(sys_rename)
567 .long SYMBOL_NAME(sys_mkdir)
568 .long SYMBOL_NAME(sys_rmdir)
569 .long SYMBOL_NAME(sys_dup)
570 .long SYMBOL_NAME(sys_pipe)
571 .long SYMBOL_NAME(sys_times)
572 .long SYMBOL_NAME(sys_prof)
573 .long SYMBOL_NAME(sys_brk)
574 .long SYMBOL_NAME(sys_setgid)
575 .long SYMBOL_NAME(sys_getgid)
576 .long SYMBOL_NAME(sys_signal)
577 .long SYMBOL_NAME(sys_geteuid)
578 .long SYMBOL_NAME(sys_getegid)
579 .long SYMBOL_NAME(sys_acct)
580 .long SYMBOL_NAME(sys_phys)
581 .long SYMBOL_NAME(sys_lock)
582 .long SYMBOL_NAME(sys_ioctl)
583 .long SYMBOL_NAME(sys_fcntl)
584 .long SYMBOL_NAME(sys_mpx)
585 .long SYMBOL_NAME(sys_setpgid)
586 .long SYMBOL_NAME(sys_ulimit)
587 .long SYMBOL_NAME(sys_olduname)
588 .long SYMBOL_NAME(sys_umask)
589 .long SYMBOL_NAME(sys_chroot)
590 .long SYMBOL_NAME(sys_ustat)
591 .long SYMBOL_NAME(sys_dup2)
592 .long SYMBOL_NAME(sys_getppid)
593 .long SYMBOL_NAME(sys_getpgrp)
594 .long SYMBOL_NAME(sys_setsid)
595 .long SYMBOL_NAME(sys_sigaction)
596 .long SYMBOL_NAME(sys_sgetmask)
597 .long SYMBOL_NAME(sys_ssetmask)
598 .long SYMBOL_NAME(sys_setreuid)
599 .long SYMBOL_NAME(sys_setregid)
600 .long SYMBOL_NAME(sys_sigsuspend)
601 .long SYMBOL_NAME(sys_sigpending)
602 .long SYMBOL_NAME(sys_sethostname)
603 .long SYMBOL_NAME(sys_setrlimit)
604 .long SYMBOL_NAME(sys_getrlimit)
605 .long SYMBOL_NAME(sys_getrusage)
606 .long SYMBOL_NAME(sys_gettimeofday)
607 .long SYMBOL_NAME(sys_settimeofday)
608 .long SYMBOL_NAME(sys_getgroups)
609 .long SYMBOL_NAME(sys_setgroups)
610 .long SYMBOL_NAME(old_select)
611 .long SYMBOL_NAME(sys_symlink)
612 .long SYMBOL_NAME(sys_lstat)
613 .long SYMBOL_NAME(sys_readlink)
614 .long SYMBOL_NAME(sys_uselib)
615 .long SYMBOL_NAME(sys_swapon)
616 .long SYMBOL_NAME(sys_reboot)
617 .long SYMBOL_NAME(old_readdir)
618 .long SYMBOL_NAME(old_mmap)
619 .long SYMBOL_NAME(sys_munmap)
620 .long SYMBOL_NAME(sys_truncate)
621 .long SYMBOL_NAME(sys_ftruncate)
622 .long SYMBOL_NAME(sys_fchmod)
623 .long SYMBOL_NAME(sys_fchown)
624 .long SYMBOL_NAME(sys_getpriority)
625 .long SYMBOL_NAME(sys_setpriority)
626 .long SYMBOL_NAME(sys_profil)
627 .long SYMBOL_NAME(sys_statfs)
628 .long SYMBOL_NAME(sys_fstatfs)
629 .long SYMBOL_NAME(sys_ioperm)
630 .long SYMBOL_NAME(sys_socketcall)
631 .long SYMBOL_NAME(sys_syslog)
632 .long SYMBOL_NAME(sys_setitimer)
633 .long SYMBOL_NAME(sys_getitimer)
634 .long SYMBOL_NAME(sys_newstat)
635 .long SYMBOL_NAME(sys_newlstat)
636 .long SYMBOL_NAME(sys_newfstat)
637 .long SYMBOL_NAME(sys_uname)
638 .long SYMBOL_NAME(sys_iopl)
639 .long SYMBOL_NAME(sys_vhangup)
640 .long SYMBOL_NAME(sys_idle)
641 .long SYMBOL_NAME(sys_vm86)
642 .long SYMBOL_NAME(sys_wait4)
643 .long SYMBOL_NAME(sys_swapoff)
644 .long SYMBOL_NAME(sys_sysinfo)
645 .long SYMBOL_NAME(sys_ipc)
646 .long SYMBOL_NAME(sys_fsync)
647 .long SYMBOL_NAME(sys_sigreturn)
648 .long SYMBOL_NAME(sys_clone)
649 .long SYMBOL_NAME(sys_setdomainname)
650 .long SYMBOL_NAME(sys_newuname)
651 .long SYMBOL_NAME(sys_modify_ldt)
652 .long SYMBOL_NAME(sys_adjtimex)
653 .long SYMBOL_NAME(sys_mprotect)
654 .long SYMBOL_NAME(sys_sigprocmask)
655 .long SYMBOL_NAME(sys_create_module)
656 .long SYMBOL_NAME(sys_init_module)
657 .long SYMBOL_NAME(sys_delete_module)
658 .long SYMBOL_NAME(sys_get_kernel_syms)
659 .long SYMBOL_NAME(sys_quotactl)
660 .long SYMBOL_NAME(sys_getpgid)
661 .long SYMBOL_NAME(sys_fchdir)
662 .long SYMBOL_NAME(sys_bdflush)
663 .long SYMBOL_NAME(sys_sysfs)
664 .long SYMBOL_NAME(sys_personality)
665 .long 0
666 .long SYMBOL_NAME(sys_setfsuid)
667 .long SYMBOL_NAME(sys_setfsgid)
668 .long SYMBOL_NAME(sys_llseek)
669 .long SYMBOL_NAME(sys_getdents)
670 .long SYMBOL_NAME(sys_select)
671 .long SYMBOL_NAME(sys_flock)
672 .long SYMBOL_NAME(sys_msync)
673 .long SYMBOL_NAME(sys_readv)
674 .long SYMBOL_NAME(sys_writev)
675 .long SYMBOL_NAME(sys_getsid)
676 .long SYMBOL_NAME(sys_fdatasync)
677 .long SYMBOL_NAME(sys_sysctl)
678 .long SYMBOL_NAME(sys_mlock)
679 .long SYMBOL_NAME(sys_munlock)
680 .long SYMBOL_NAME(sys_mlockall)
681 .long SYMBOL_NAME(sys_munlockall)
682 .long SYMBOL_NAME(sys_sched_setparam)
683 .long SYMBOL_NAME(sys_sched_getparam)
684 .long SYMBOL_NAME(sys_sched_setscheduler)
685 .long SYMBOL_NAME(sys_sched_getscheduler)
686 .long SYMBOL_NAME(sys_sched_yield)
687 .long SYMBOL_NAME(sys_sched_get_priority_max)
688 .long SYMBOL_NAME(sys_sched_get_priority_min)
689 .long SYMBOL_NAME(sys_sched_rr_get_interval)
690 .long SYMBOL_NAME(sys_nanosleep)
691 .space (NR_syscalls-163)*4