entry.S
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:18k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/arch/i386/entry.S
  3.  *
  4.  *  Copyright (C) 1991, 1992  Linus Torvalds
  5.  */
  6. /*
  7.  * entry.S contains the system-call and fault low-level handling routines.
  8.  * This also contains the timer-interrupt handler, as well as all interrupts
  9.  * and faults that can result in a task-switch.
  10.  *
  11.  * NOTE: This code handles signal-recognition, which happens every time
  12.  * after a timer-interrupt and after each system call.
  13.  *
  14.  * I changed all the .align's to 4 (16 byte alignment), as that's faster
  15.  * on a 486.
  16.  *
  17.  * Stack layout in 'ret_from_system_call':
  18.  *  ptrace needs to have all regs on the stack.
  19.  * if the order here is changed, it needs to be
  20.  * updated in fork.c:copy_process, signal.c:do_signal,
  21.  * ptrace.c and ptrace.h
  22.  *
  23.  *  0(%esp) - %ebx
  24.  *  4(%esp) - %ecx
  25.  *  8(%esp) - %edx
  26.  *       C(%esp) - %esi
  27.  * 10(%esp) - %edi
  28.  * 14(%esp) - %ebp
  29.  * 18(%esp) - %eax
  30.  * 1C(%esp) - %ds
  31.  * 20(%esp) - %es
  32.  * 24(%esp) - orig_eax
  33.  * 28(%esp) - %eip
  34.  * 2C(%esp) - %cs
  35.  * 30(%esp) - %eflags
  36.  * 34(%esp) - %oldesp
  37.  * 38(%esp) - %oldss
  38.  *
  39.  * "current" is in register %ebx during any slow entries.
  40.  */
  41. #include <linux/config.h>
  42. #include <linux/sys.h>
  43. #include <linux/linkage.h>
  44. #include <asm/segment.h>
  45. #include <asm/smp.h>
  46. EBX = 0x00
  47. ECX = 0x04
  48. EDX = 0x08
  49. ESI = 0x0C
  50. EDI = 0x10
  51. EBP = 0x14
  52. EAX = 0x18
  53. DS = 0x1C
  54. ES = 0x20
  55. ORIG_EAX = 0x24
  56. EIP = 0x28
  57. CS = 0x2C
  58. EFLAGS = 0x30
  59. OLDESP = 0x34
  60. OLDSS = 0x38
  61. CF_MASK = 0x00000001
  62. TF_MASK = 0x00000100
  63. IF_MASK = 0x00000200
  64. DF_MASK = 0x00000400
  65. NT_MASK = 0x00004000
  66. VM_MASK = 0x00020000
  67. /*
  68.  * these are offsets into the task-struct.
  69.  */
  70. state =  0
  71. flags =  4
  72. sigpending =  8
  73. addr_limit = 12
  74. exec_domain = 16
  75. need_resched = 20
  76. tsk_ptrace = 24
  77. processor = 52
  78. ENOSYS = 38
  79. #define SAVE_ALL 
  80. cld; 
  81. pushl %es; 
  82. pushl %ds; 
  83. pushl %eax; 
  84. pushl %ebp; 
  85. pushl %edi; 
  86. pushl %esi; 
  87. pushl %edx; 
  88. pushl %ecx; 
  89. pushl %ebx; 
  90. movl $(__KERNEL_DS),%edx; 
  91. movl %edx,%ds; 
  92. movl %edx,%es;
  93. #define RESTORE_ALL
  94. popl %ebx;
  95. popl %ecx;
  96. popl %edx;
  97. popl %esi;
  98. popl %edi;
  99. popl %ebp;
  100. popl %eax;
  101. 1: popl %ds;
  102. 2: popl %es;
  103. addl $4,%esp;
  104. 3: iret;
  105. .section .fixup,"ax";
  106. 4: movl $0,(%esp);
  107. jmp 1b;
  108. 5: movl $0,(%esp);
  109. jmp 2b;
  110. 6: pushl %ss;
  111. popl %ds;
  112. pushl %ss;
  113. popl %es;
  114. pushl $11;
  115. call do_exit;
  116. .previous;
  117. .section __ex_table,"a";
  118. .align 4;
  119. .long 1b,4b;
  120. .long 2b,5b;
  121. .long 3b,6b;
  122. .previous
  123. #define GET_CURRENT(reg) 
  124. movl $-8192, reg; 
  125. andl %esp, reg
  126. ENTRY(lcall7)
  127. pushfl # We get a different stack layout with call gates,
  128. pushl %eax # which has to be cleaned up later..
  129. SAVE_ALL
  130. movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
  131. movl CS(%esp),%edx # this is eip..
  132. movl EFLAGS(%esp),%ecx # and this is cs..
  133. movl %eax,EFLAGS(%esp) #
  134. andl $~(NT_MASK|TF_MASK|DF_MASK), %eax
  135. pushl %eax
  136. popfl
  137. movl %edx,EIP(%esp) # Now we move them to their "normal" places
  138. movl %ecx,CS(%esp) #
  139. movl %esp,%ebx
  140. pushl %ebx
  141. andl $-8192,%ebx # GET_CURRENT
  142. movl exec_domain(%ebx),%edx # Get the execution domain
  143. movl 4(%edx),%edx # Get the lcall7 handler for the domain
  144. pushl $0x7
  145. call *%edx
  146. addl $4, %esp
  147. popl %eax
  148. jmp ret_from_sys_call
  149. ENTRY(lcall27)
  150. pushfl # We get a different stack layout with call gates,
  151. pushl %eax # which has to be cleaned up later..
  152. SAVE_ALL
  153. movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
  154. movl CS(%esp),%edx # this is eip..
  155. movl EFLAGS(%esp),%ecx # and this is cs..
  156. movl %eax,EFLAGS(%esp) #
  157. andl $~(NT_MASK|TF_MASK|DF_MASK), %eax
  158. pushl %eax
  159. popfl
  160. movl %edx,EIP(%esp) # Now we move them to their "normal" places
  161. movl %ecx,CS(%esp) #
  162. movl %esp,%ebx
  163. pushl %ebx
  164. andl $-8192,%ebx # GET_CURRENT
  165. movl exec_domain(%ebx),%edx # Get the execution domain
  166. movl 4(%edx),%edx # Get the lcall7 handler for the domain
  167. pushl $0x27
  168. call *%edx
  169. addl $4, %esp
  170. popl %eax
  171. jmp ret_from_sys_call
  172. ENTRY(ret_from_fork)
  173. pushl %ebx
  174. call SYMBOL_NAME(schedule_tail)
  175. addl $4, %esp
  176. GET_CURRENT(%ebx)
  177. testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS
  178. jne tracesys_exit
  179. jmp ret_from_sys_call
  180. /*
  181.  * Return to user mode is not as complex as all this looks,
  182.  * but we want the default path for a system call return to
  183.  * go as quickly as possible which is why some of this is
  184.  * less clear than it otherwise should be.
  185.  */
  186. ENTRY(system_call)
  187. pushl %eax # save orig_eax
  188. SAVE_ALL
  189. GET_CURRENT(%ebx)
  190. testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS
  191. jne tracesys
  192. cmpl $(NR_syscalls),%eax
  193. jae badsys
  194. call *SYMBOL_NAME(sys_call_table)(,%eax,4)
  195. movl %eax,EAX(%esp) # save the return value
  196. ENTRY(ret_from_sys_call)
  197. cli # need_resched and signals atomic test
  198. cmpl $0,need_resched(%ebx)
  199. jne reschedule
  200. cmpl $0,sigpending(%ebx)
  201. jne signal_return
  202. restore_all:
  203. RESTORE_ALL
  204. ALIGN
  205. signal_return:
  206. sti # we can get here from an interrupt handler
  207. testl $(VM_MASK),EFLAGS(%esp)
  208. movl %esp,%eax
  209. jne v86_signal_return
  210. xorl %edx,%edx
  211. call SYMBOL_NAME(do_signal)
  212. jmp restore_all
  213. ALIGN
  214. v86_signal_return:
  215. call SYMBOL_NAME(save_v86_state)
  216. movl %eax,%esp
  217. xorl %edx,%edx
  218. call SYMBOL_NAME(do_signal)
  219. jmp restore_all
  220. ALIGN
  221. tracesys:
  222. movl $-ENOSYS,EAX(%esp)
  223. call SYMBOL_NAME(syscall_trace)
  224. movl ORIG_EAX(%esp),%eax
  225. cmpl $(NR_syscalls),%eax
  226. jae tracesys_exit
  227. call *SYMBOL_NAME(sys_call_table)(,%eax,4)
  228. movl %eax,EAX(%esp) # save the return value
  229. tracesys_exit:
  230. call SYMBOL_NAME(syscall_trace)
  231. jmp ret_from_sys_call
  232. badsys:
  233. movl $-ENOSYS,EAX(%esp)
  234. jmp ret_from_sys_call
  235. ALIGN
  236. ENTRY(ret_from_intr)
  237. GET_CURRENT(%ebx)
  238. ret_from_exception:
  239. movl EFLAGS(%esp),%eax # mix EFLAGS and CS
  240. movb CS(%esp),%al
  241. testl $(VM_MASK | 3),%eax # return to VM86 mode or non-supervisor?
  242. jne ret_from_sys_call
  243. jmp restore_all
  244. ALIGN
  245. reschedule:
  246. call SYMBOL_NAME(schedule)    # test
  247. jmp ret_from_sys_call
  248. ENTRY(divide_error)
  249. pushl $0 # no error code
  250. pushl $ SYMBOL_NAME(do_divide_error)
  251. ALIGN
  252. error_code:
  253. pushl %ds
  254. pushl %eax
  255. xorl %eax,%eax
  256. pushl %ebp
  257. pushl %edi
  258. pushl %esi
  259. pushl %edx
  260. decl %eax # eax = -1
  261. pushl %ecx
  262. pushl %ebx
  263. cld
  264. movl %es,%ecx
  265. movl ORIG_EAX(%esp), %esi # get the error code
  266. movl ES(%esp), %edi # get the function address
  267. movl %eax, ORIG_EAX(%esp)
  268. movl %ecx, ES(%esp)
  269. movl %esp,%edx
  270. pushl %esi # push the error code
  271. pushl %edx # push the pt_regs pointer
  272. movl $(__KERNEL_DS),%edx
  273. movl %edx,%ds
  274. movl %edx,%es
  275. GET_CURRENT(%ebx)
  276. call *%edi
  277. addl $8,%esp
  278. jmp ret_from_exception
  279. ENTRY(coprocessor_error)
  280. pushl $0
  281. pushl $ SYMBOL_NAME(do_coprocessor_error)
  282. jmp error_code
  283. ENTRY(simd_coprocessor_error)
  284. pushl $0
  285. pushl $ SYMBOL_NAME(do_simd_coprocessor_error)
  286. jmp error_code
  287. ENTRY(device_not_available)
  288. pushl $-1 # mark this as an int
  289. SAVE_ALL
  290. GET_CURRENT(%ebx)
  291. movl %cr0,%eax
  292. testl $0x4,%eax # EM (math emulation bit)
  293. jne device_not_available_emulate
  294. call SYMBOL_NAME(math_state_restore)
  295. jmp ret_from_exception
  296. device_not_available_emulate:
  297. pushl $0 # temporary storage for ORIG_EIP
  298. call  SYMBOL_NAME(math_emulate)
  299. addl $4,%esp
  300. jmp ret_from_exception
  301. ENTRY(debug)
  302. pushl $0
  303. pushl $ SYMBOL_NAME(do_debug)
  304. jmp error_code
  305. ENTRY(nmi)
  306. pushl %eax
  307. SAVE_ALL
  308. movl %esp,%edx
  309. pushl $0
  310. pushl %edx
  311. call SYMBOL_NAME(do_nmi)
  312. addl $8,%esp
  313. RESTORE_ALL
  314. ENTRY(int3)
  315. pushl $0
  316. pushl $ SYMBOL_NAME(do_int3)
  317. jmp error_code
  318. ENTRY(overflow)
  319. pushl $0
  320. pushl $ SYMBOL_NAME(do_overflow)
  321. jmp error_code
  322. ENTRY(bounds)
  323. pushl $0
  324. pushl $ SYMBOL_NAME(do_bounds)
  325. jmp error_code
  326. ENTRY(invalid_op)
  327. pushl $0
  328. pushl $ SYMBOL_NAME(do_invalid_op)
  329. jmp error_code
  330. ENTRY(coprocessor_segment_overrun)
  331. pushl $0
  332. pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
  333. jmp error_code
  334. ENTRY(double_fault)
  335. pushl $ SYMBOL_NAME(do_double_fault)
  336. jmp error_code
  337. ENTRY(invalid_TSS)
  338. pushl $ SYMBOL_NAME(do_invalid_TSS)
  339. jmp error_code
  340. ENTRY(segment_not_present)
  341. pushl $ SYMBOL_NAME(do_segment_not_present)
  342. jmp error_code
  343. ENTRY(stack_segment)
  344. pushl $ SYMBOL_NAME(do_stack_segment)
  345. jmp error_code
  346. ENTRY(general_protection)
  347. pushl $ SYMBOL_NAME(do_general_protection)
  348. jmp error_code
  349. ENTRY(alignment_check)
  350. pushl $ SYMBOL_NAME(do_alignment_check)
  351. jmp error_code
  352. ENTRY(page_fault)
  353. pushl $ SYMBOL_NAME(do_page_fault)
  354. jmp error_code
  355. ENTRY(machine_check)
  356. pushl $0
  357. pushl $ SYMBOL_NAME(do_machine_check)
  358. jmp error_code
  359. ENTRY(spurious_interrupt_bug)
  360. pushl $0
  361. pushl $ SYMBOL_NAME(do_spurious_interrupt_bug)
  362. jmp error_code
  363. .data
  364. ENTRY(sys_call_table)
  365. .long SYMBOL_NAME(sys_ni_syscall) /* 0  -  old "setup()" system call*/
  366. .long SYMBOL_NAME(sys_exit)
  367. .long SYMBOL_NAME(sys_fork)
  368. .long SYMBOL_NAME(sys_read)
  369. .long SYMBOL_NAME(sys_write)
  370. .long SYMBOL_NAME(sys_open) /* 5 */
  371. .long SYMBOL_NAME(sys_close)
  372. .long SYMBOL_NAME(sys_waitpid)
  373. .long SYMBOL_NAME(sys_creat)
  374. .long SYMBOL_NAME(sys_link)
  375. .long SYMBOL_NAME(sys_unlink) /* 10 */
  376. .long SYMBOL_NAME(sys_execve)
  377. .long SYMBOL_NAME(sys_chdir)
  378. .long SYMBOL_NAME(sys_time)
  379. .long SYMBOL_NAME(sys_mknod)
  380. .long SYMBOL_NAME(sys_chmod) /* 15 */
  381. .long SYMBOL_NAME(sys_lchown16)
  382. .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */
  383. .long SYMBOL_NAME(sys_stat)
  384. .long SYMBOL_NAME(sys_lseek)
  385. .long SYMBOL_NAME(sys_getpid) /* 20 */
  386. .long SYMBOL_NAME(sys_mount)
  387. .long SYMBOL_NAME(sys_oldumount)
  388. .long SYMBOL_NAME(sys_setuid16)
  389. .long SYMBOL_NAME(sys_getuid16)
  390. .long SYMBOL_NAME(sys_stime) /* 25 */
  391. .long SYMBOL_NAME(sys_ptrace)
  392. .long SYMBOL_NAME(sys_alarm)
  393. .long SYMBOL_NAME(sys_fstat)
  394. .long SYMBOL_NAME(sys_pause)
  395. .long SYMBOL_NAME(sys_utime) /* 30 */
  396. .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */
  397. .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */
  398. .long SYMBOL_NAME(sys_access)
  399. .long SYMBOL_NAME(sys_nice)
  400. .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */
  401. .long SYMBOL_NAME(sys_sync)
  402. .long SYMBOL_NAME(sys_kill)
  403. .long SYMBOL_NAME(sys_rename)
  404. .long SYMBOL_NAME(sys_mkdir)
  405. .long SYMBOL_NAME(sys_rmdir) /* 40 */
  406. .long SYMBOL_NAME(sys_dup)
  407. .long SYMBOL_NAME(sys_pipe)
  408. .long SYMBOL_NAME(sys_times)
  409. .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */
  410. .long SYMBOL_NAME(sys_brk) /* 45 */
  411. .long SYMBOL_NAME(sys_setgid16)
  412. .long SYMBOL_NAME(sys_getgid16)
  413. .long SYMBOL_NAME(sys_signal)
  414. .long SYMBOL_NAME(sys_geteuid16)
  415. .long SYMBOL_NAME(sys_getegid16) /* 50 */
  416. .long SYMBOL_NAME(sys_acct)
  417. .long SYMBOL_NAME(sys_umount) /* recycled never used phys() */
  418. .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */
  419. .long SYMBOL_NAME(sys_ioctl)
  420. .long SYMBOL_NAME(sys_fcntl) /* 55 */
  421. .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */
  422. .long SYMBOL_NAME(sys_setpgid)
  423. .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */
  424. .long SYMBOL_NAME(sys_olduname)
  425. .long SYMBOL_NAME(sys_umask) /* 60 */
  426. .long SYMBOL_NAME(sys_chroot)
  427. .long SYMBOL_NAME(sys_ustat)
  428. .long SYMBOL_NAME(sys_dup2)
  429. .long SYMBOL_NAME(sys_getppid)
  430. .long SYMBOL_NAME(sys_getpgrp) /* 65 */
  431. .long SYMBOL_NAME(sys_setsid)
  432. .long SYMBOL_NAME(sys_sigaction)
  433. .long SYMBOL_NAME(sys_sgetmask)
  434. .long SYMBOL_NAME(sys_ssetmask)
  435. .long SYMBOL_NAME(sys_setreuid16) /* 70 */
  436. .long SYMBOL_NAME(sys_setregid16)
  437. .long SYMBOL_NAME(sys_sigsuspend)
  438. .long SYMBOL_NAME(sys_sigpending)
  439. .long SYMBOL_NAME(sys_sethostname)
  440. .long SYMBOL_NAME(sys_setrlimit) /* 75 */
  441. .long SYMBOL_NAME(sys_old_getrlimit)
  442. .long SYMBOL_NAME(sys_getrusage)
  443. .long SYMBOL_NAME(sys_gettimeofday)
  444. .long SYMBOL_NAME(sys_settimeofday)
  445. .long SYMBOL_NAME(sys_getgroups16) /* 80 */
  446. .long SYMBOL_NAME(sys_setgroups16)
  447. .long SYMBOL_NAME(old_select)
  448. .long SYMBOL_NAME(sys_symlink)
  449. .long SYMBOL_NAME(sys_lstat)
  450. .long SYMBOL_NAME(sys_readlink) /* 85 */
  451. .long SYMBOL_NAME(sys_uselib)
  452. .long SYMBOL_NAME(sys_swapon)
  453. .long SYMBOL_NAME(sys_reboot)
  454. .long SYMBOL_NAME(old_readdir)
  455. .long SYMBOL_NAME(old_mmap) /* 90 */
  456. .long SYMBOL_NAME(sys_munmap)
  457. .long SYMBOL_NAME(sys_truncate)
  458. .long SYMBOL_NAME(sys_ftruncate)
  459. .long SYMBOL_NAME(sys_fchmod)
  460. .long SYMBOL_NAME(sys_fchown16) /* 95 */
  461. .long SYMBOL_NAME(sys_getpriority)
  462. .long SYMBOL_NAME(sys_setpriority)
  463. .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */
  464. .long SYMBOL_NAME(sys_statfs)
  465. .long SYMBOL_NAME(sys_fstatfs) /* 100 */
  466. .long SYMBOL_NAME(sys_ioperm)
  467. .long SYMBOL_NAME(sys_socketcall)
  468. .long SYMBOL_NAME(sys_syslog)
  469. .long SYMBOL_NAME(sys_setitimer)
  470. .long SYMBOL_NAME(sys_getitimer) /* 105 */
  471. .long SYMBOL_NAME(sys_newstat)
  472. .long SYMBOL_NAME(sys_newlstat)
  473. .long SYMBOL_NAME(sys_newfstat)
  474. .long SYMBOL_NAME(sys_uname)
  475. .long SYMBOL_NAME(sys_iopl) /* 110 */
  476. .long SYMBOL_NAME(sys_vhangup)
  477. .long SYMBOL_NAME(sys_ni_syscall) /* old "idle" system call */
  478. .long SYMBOL_NAME(sys_vm86old)
  479. .long SYMBOL_NAME(sys_wait4)
  480. .long SYMBOL_NAME(sys_swapoff) /* 115 */
  481. .long SYMBOL_NAME(sys_sysinfo)
  482. .long SYMBOL_NAME(sys_ipc)
  483. .long SYMBOL_NAME(sys_fsync)
  484. .long SYMBOL_NAME(sys_sigreturn)
  485. .long SYMBOL_NAME(sys_clone) /* 120 */
  486. .long SYMBOL_NAME(sys_setdomainname)
  487. .long SYMBOL_NAME(sys_newuname)
  488. .long SYMBOL_NAME(sys_modify_ldt)
  489. .long SYMBOL_NAME(sys_adjtimex)
  490. .long SYMBOL_NAME(sys_mprotect) /* 125 */
  491. .long SYMBOL_NAME(sys_sigprocmask)
  492. .long SYMBOL_NAME(sys_create_module)
  493. .long SYMBOL_NAME(sys_init_module)
  494. .long SYMBOL_NAME(sys_delete_module)
  495. .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
  496. .long SYMBOL_NAME(sys_quotactl)
  497. .long SYMBOL_NAME(sys_getpgid)
  498. .long SYMBOL_NAME(sys_fchdir)
  499. .long SYMBOL_NAME(sys_bdflush)
  500. .long SYMBOL_NAME(sys_sysfs) /* 135 */
  501. .long SYMBOL_NAME(sys_personality)
  502. .long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
  503. .long SYMBOL_NAME(sys_setfsuid16)
  504. .long SYMBOL_NAME(sys_setfsgid16)
  505. .long SYMBOL_NAME(sys_llseek) /* 140 */
  506. .long SYMBOL_NAME(sys_getdents)
  507. .long SYMBOL_NAME(sys_select)
  508. .long SYMBOL_NAME(sys_flock)
  509. .long SYMBOL_NAME(sys_msync)
  510. .long SYMBOL_NAME(sys_readv) /* 145 */
  511. .long SYMBOL_NAME(sys_writev)
  512. .long SYMBOL_NAME(sys_getsid)
  513. .long SYMBOL_NAME(sys_fdatasync)
  514. .long SYMBOL_NAME(sys_sysctl)
  515. .long SYMBOL_NAME(sys_mlock) /* 150 */
  516. .long SYMBOL_NAME(sys_munlock)
  517. .long SYMBOL_NAME(sys_mlockall)
  518. .long SYMBOL_NAME(sys_munlockall)
  519. .long SYMBOL_NAME(sys_sched_setparam)
  520. .long SYMBOL_NAME(sys_sched_getparam)   /* 155 */
  521. .long SYMBOL_NAME(sys_sched_setscheduler)
  522. .long SYMBOL_NAME(sys_sched_getscheduler)
  523. .long SYMBOL_NAME(sys_sched_yield)
  524. .long SYMBOL_NAME(sys_sched_get_priority_max)
  525. .long SYMBOL_NAME(sys_sched_get_priority_min)  /* 160 */
  526. .long SYMBOL_NAME(sys_sched_rr_get_interval)
  527. .long SYMBOL_NAME(sys_nanosleep)
  528. .long SYMBOL_NAME(sys_mremap)
  529. .long SYMBOL_NAME(sys_setresuid16)
  530. .long SYMBOL_NAME(sys_getresuid16) /* 165 */
  531. .long SYMBOL_NAME(sys_vm86)
  532. .long SYMBOL_NAME(sys_query_module)
  533. .long SYMBOL_NAME(sys_poll)
  534. .long SYMBOL_NAME(sys_nfsservctl)
  535. .long SYMBOL_NAME(sys_setresgid16) /* 170 */
  536. .long SYMBOL_NAME(sys_getresgid16)
  537. .long SYMBOL_NAME(sys_prctl)
  538. .long SYMBOL_NAME(sys_rt_sigreturn)
  539. .long SYMBOL_NAME(sys_rt_sigaction)
  540. .long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */
  541. .long SYMBOL_NAME(sys_rt_sigpending)
  542. .long SYMBOL_NAME(sys_rt_sigtimedwait)
  543. .long SYMBOL_NAME(sys_rt_sigqueueinfo)
  544. .long SYMBOL_NAME(sys_rt_sigsuspend)
  545. .long SYMBOL_NAME(sys_pread) /* 180 */
  546. .long SYMBOL_NAME(sys_pwrite)
  547. .long SYMBOL_NAME(sys_chown16)
  548. .long SYMBOL_NAME(sys_getcwd)
  549. .long SYMBOL_NAME(sys_capget)
  550. .long SYMBOL_NAME(sys_capset)           /* 185 */
  551. .long SYMBOL_NAME(sys_sigaltstack)
  552. .long SYMBOL_NAME(sys_sendfile)
  553. .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
  554. .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
  555. .long SYMBOL_NAME(sys_vfork)            /* 190 */
  556. .long SYMBOL_NAME(sys_getrlimit)
  557. .long SYMBOL_NAME(sys_mmap2)
  558. .long SYMBOL_NAME(sys_truncate64)
  559. .long SYMBOL_NAME(sys_ftruncate64)
  560. .long SYMBOL_NAME(sys_stat64) /* 195 */
  561. .long SYMBOL_NAME(sys_lstat64)
  562. .long SYMBOL_NAME(sys_fstat64)
  563. .long SYMBOL_NAME(sys_lchown)
  564. .long SYMBOL_NAME(sys_getuid)
  565. .long SYMBOL_NAME(sys_getgid) /* 200 */
  566. .long SYMBOL_NAME(sys_geteuid)
  567. .long SYMBOL_NAME(sys_getegid)
  568. .long SYMBOL_NAME(sys_setreuid)
  569. .long SYMBOL_NAME(sys_setregid)
  570. .long SYMBOL_NAME(sys_getgroups) /* 205 */
  571. .long SYMBOL_NAME(sys_setgroups)
  572. .long SYMBOL_NAME(sys_fchown)
  573. .long SYMBOL_NAME(sys_setresuid)
  574. .long SYMBOL_NAME(sys_getresuid)
  575. .long SYMBOL_NAME(sys_setresgid) /* 210 */
  576. .long SYMBOL_NAME(sys_getresgid)
  577. .long SYMBOL_NAME(sys_chown)
  578. .long SYMBOL_NAME(sys_setuid)
  579. .long SYMBOL_NAME(sys_setgid)
  580. .long SYMBOL_NAME(sys_setfsuid) /* 215 */
  581. .long SYMBOL_NAME(sys_setfsgid)
  582. .long SYMBOL_NAME(sys_pivot_root)
  583. .long SYMBOL_NAME(sys_mincore)
  584. .long SYMBOL_NAME(sys_madvise)
  585. .long SYMBOL_NAME(sys_getdents64) /* 220 */
  586. .long SYMBOL_NAME(sys_fcntl64)
  587. .long SYMBOL_NAME(sys_ni_syscall) /* reserved for TUX */
  588. .long SYMBOL_NAME(sys_ni_syscall) /* Reserved for Security */
  589. .long SYMBOL_NAME(sys_gettid)
  590. .long SYMBOL_NAME(sys_readahead) /* 225 */
  591. .long SYMBOL_NAME(sys_setxattr)
  592. .long SYMBOL_NAME(sys_lsetxattr)
  593. .long SYMBOL_NAME(sys_fsetxattr)
  594. .long SYMBOL_NAME(sys_getxattr)
  595. .long SYMBOL_NAME(sys_lgetxattr) /* 230 */
  596. .long SYMBOL_NAME(sys_fgetxattr)
  597. .long SYMBOL_NAME(sys_listxattr)
  598. .long SYMBOL_NAME(sys_llistxattr)
  599. .long SYMBOL_NAME(sys_flistxattr)
  600. .long SYMBOL_NAME(sys_removexattr) /* 235 */
  601. .long SYMBOL_NAME(sys_lremovexattr)
  602. .long SYMBOL_NAME(sys_fremovexattr)
  603.   .long SYMBOL_NAME(sys_tkill)
  604. .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sendfile64 */
  605. .long SYMBOL_NAME(sys_ni_syscall) /* 240 reserved for futex */
  606. .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sched_setaffinity */
  607. .long SYMBOL_NAME(sys_ni_syscall) /* reserved for sched_getaffinity */
  608. .long SYMBOL_NAME(sys_ni_syscall) /* sys_set_thread_area */
  609. .long SYMBOL_NAME(sys_ni_syscall) /* sys_get_thread_area */
  610. .long SYMBOL_NAME(sys_ni_syscall) /* 245 sys_io_setup */
  611. .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_destroy */
  612. .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_getevents */
  613. .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_submit */
  614. .long SYMBOL_NAME(sys_ni_syscall) /* sys_io_cancel */
  615. .long SYMBOL_NAME(sys_ni_syscall) /* 250 sys_alloc_hugepages */
  616. .long SYMBOL_NAME(sys_ni_syscall) /* sys_free_hugepages */
  617. .long SYMBOL_NAME(sys_ni_syscall) /* sys_exit_group */
  618. .rept NR_syscalls-(.-sys_call_table)/4
  619. .long SYMBOL_NAME(sys_ni_syscall)
  620. .endr