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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* -*- mode: asm -*-
  2.  *
  3.  *  linux/arch/m68k/kernel/entry.S
  4.  *
  5.  *  Copyright (C) 1991, 1992  Linus Torvalds
  6.  *
  7.  * This file is subject to the terms and conditions of the GNU General Public
  8.  * License.  See the file README.legal in the main directory of this archive
  9.  * for more details.
  10.  *
  11.  * Linux/m68k support by Hamish Macdonald
  12.  *
  13.  * 68060 fixes by Jesper Skov
  14.  *
  15.  */
  16. /*
  17.  * entry.S  contains the system-call and fault low-level handling routines.
  18.  * This also contains the timer-interrupt handler, as well as all interrupts
  19.  * and faults that can result in a task-switch.
  20.  *
  21.  * NOTE: This code handles signal-recognition, which happens every time
  22.  * after a timer-interrupt and after each system call.
  23.  *
  24.  */
  25. /*
  26.  * 12/03/96 Jes: Currently we only support m68k single-cpu systems, so
  27.  *               all pointers that used to be 'current' are now entry
  28.  *               number 0 in the 'current_set' list.
  29.  *
  30.  *  6/05/00 RZ:  addedd writeback completion after return from sighandler
  31.  *  for 68040
  32.  */
  33. #include <linux/sys.h>
  34. #include <linux/config.h>
  35. #include <linux/linkage.h>
  36. #include <asm/entry.h>
  37. #include <asm/errno.h>
  38. #include <asm/setup.h>
  39. #include <asm/segment.h>
  40. #include <asm/traps.h>
  41. #include "m68k_defs.h"
  42. .globl SYMBOL_NAME(system_call), SYMBOL_NAME(buserr), SYMBOL_NAME(trap)
  43. .globl SYMBOL_NAME(resume), SYMBOL_NAME(ret_from_exception)
  44. .globl SYMBOL_NAME(ret_from_signal)
  45. .globl SYMBOL_NAME(inthandler), SYMBOL_NAME(sys_call_table)
  46. .globl SYMBOL_NAME(sys_fork), SYMBOL_NAME(sys_clone), SYMBOL_NAME(sys_vfork)
  47. .globl SYMBOL_NAME(ret_from_interrupt), SYMBOL_NAME(bad_interrupt)
  48. .text
  49. ENTRY(buserr)
  50. SAVE_ALL_INT
  51. GET_CURRENT(%d0)
  52. movel %sp,%sp@-  | stack frame pointer argument
  53. bsrl SYMBOL_NAME(buserr_c)
  54. addql #4,%sp
  55. jra SYMBOL_NAME(ret_from_exception)
  56. ENTRY(trap)
  57. SAVE_ALL_INT
  58. GET_CURRENT(%d0)
  59. movel %sp,%sp@-  | stack frame pointer argument
  60. bsrl SYMBOL_NAME(trap_c)
  61. addql #4,%sp
  62. jra SYMBOL_NAME(ret_from_exception)
  63. ENTRY(reschedule)
  64. | save top of frame
  65. movel %sp,%curptr@(TASK_THREAD+THREAD_ESP0)
  66. pea SYMBOL_NAME(ret_from_exception)
  67. jmp SYMBOL_NAME(schedule)
  68. | After a fork we jump here directly from resume,
  69. | so that %d1 contains the previous task
  70. | Theoretically only needed on SMP, but let's watch
  71. | what happens in schedule_tail() in future...
  72. ENTRY(ret_from_fork)
  73. movel %d1,%sp@-
  74. jsr SYMBOL_NAME(schedule_tail)
  75. addql #4,%sp
  76. jra SYMBOL_NAME(ret_from_exception)
  77. badsys:
  78. movel #-ENOSYS,%sp@(PT_D0)
  79. jra SYMBOL_NAME(ret_from_exception)
  80. do_trace:
  81. movel #-ENOSYS,%sp@(PT_D0) | needed for strace
  82. subql #4,%sp
  83. SAVE_SWITCH_STACK
  84. jbsr SYMBOL_NAME(syscall_trace)
  85. RESTORE_SWITCH_STACK
  86. addql #4,%sp
  87. movel %sp@(PT_ORIG_D0),%d1
  88. movel #-ENOSYS,%d0
  89. cmpl #NR_syscalls,%d1
  90. jcc 1f
  91. jbsr @(SYMBOL_NAME(sys_call_table),%d1:l:4)@(0)
  92. 1: movel %d0,%sp@(PT_D0) | save the return value
  93. subql #4,%sp | dummy return address
  94. SAVE_SWITCH_STACK
  95. jbsr SYMBOL_NAME(syscall_trace)
  96. SYMBOL_NAME_LABEL(ret_from_signal)
  97. RESTORE_SWITCH_STACK 
  98. addql #4,%sp
  99. /* on 68040 complete pending writebacks if any */
  100. #ifdef CONFIG_M68040
  101. bfextu %sp@(PT_VECTOR){#0,#4},%d0  
  102. subql #7,%d0 | bus error frame ?
  103. jbne 1f
  104. movel %sp,%sp@-
  105. jbsr SYMBOL_NAME(berr_040cleanup)
  106. addql #4,%sp
  107. 1:
  108. #endif
  109. jra SYMBOL_NAME(ret_from_exception)
  110. ENTRY(system_call)
  111. SAVE_ALL_SYS
  112. GET_CURRENT(%d1)
  113. | save top of frame
  114. movel %sp,%curptr@(TASK_THREAD+THREAD_ESP0)
  115. btst #PT_TRACESYS_BIT,%curptr@(TASK_PTRACE+PT_TRACESYS_OFF)
  116. jne do_trace
  117. cmpl #NR_syscalls,%d0
  118. jcc badsys
  119. jbsr @(SYMBOL_NAME(sys_call_table),%d0:l:4)@(0)
  120. movel %d0,%sp@(PT_D0) | save the return value
  121. SYMBOL_NAME_LABEL(ret_from_exception)
  122. btst #5,%sp@(PT_SR) | check if returning to kernel
  123. bnes 2f | if so, skip resched, signals
  124. | only allow interrupts when we are really the last one on the
  125. | kernel stack, otherwise stack overflow can occur during
  126. | heavy interrupt load
  127. andw #ALLOWINT,%sr
  128. tstl %curptr@(TASK_NEEDRESCHED)
  129. jne SYMBOL_NAME(reschedule)
  130. #if 0
  131. cmpl #SYMBOL_NAME(task),%curptr | task[0] cannot have signals
  132. jeq 2f
  133. #endif
  134. | check for delayed trace
  135. bclr #PT_DTRACE_BIT,%curptr@(TASK_PTRACE+PT_DTRACE_OFF)
  136. jne do_delayed_trace
  137. 5:
  138. tstl %curptr@(TASK_STATE) | state
  139. jne SYMBOL_NAME(reschedule)
  140. tstl %curptr@(TASK_SIGPENDING)
  141. jne Lsignal_return
  142. 2: RESTORE_ALL
  143. Lsignal_return:
  144. subql #4,%sp | dummy return address
  145. SAVE_SWITCH_STACK
  146. pea %sp@(SWITCH_STACK_SIZE)
  147. clrl %sp@-
  148. bsrl SYMBOL_NAME(do_signal)
  149. addql #8,%sp
  150. RESTORE_SWITCH_STACK
  151. addql #4,%sp
  152. RESTORE_ALL
  153. do_delayed_trace:
  154. bclr #7,%sp@(PT_SR) | clear trace bit in SR
  155. pea 1 | send SIGTRAP
  156. movel %curptr,%sp@-
  157. pea LSIGTRAP
  158. jbsr SYMBOL_NAME(send_sig)
  159. addql #8,%sp
  160. addql #4,%sp
  161. jra 5b
  162. #if 0
  163. #if CONFIG_AMIGA
  164. SYMBOL_NAME_LABEL(ami_inthandler)
  165. addql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
  166. SAVE_ALL_INT
  167. GET_CURRENT(%d0)
  168. bfextu %sp@(PT_VECTOR){#4,#12},%d0
  169. movel %d0,%a0
  170. addql #1,%a0@(SYMBOL_NAME(kstat)+STAT_IRQ-VECOFF(VEC_SPUR))
  171. movel %a0@(SYMBOL_NAME(autoirq_list)-VECOFF(VEC_SPUR)),%a0
  172. | amiga vector int handler get the req mask instead of irq vector
  173. lea CUSTOMBASE,%a1
  174. movew %a1@(C_INTREQR),%d0
  175. andw %a1@(C_INTENAR),%d0
  176. | prepare stack (push frame pointer, dev_id & req mask)
  177. pea %sp@
  178. movel %a0@(IRQ_DEVID),%sp@-
  179. movel %d0,%sp@-
  180. pea %pc@(SYMBOL_NAME(ret_from_interrupt):w)
  181. jbra @(IRQ_HANDLER,%a0)@(0)
  182. ENTRY(nmi_handler)
  183. rte
  184. #endif
  185. #endif
  186. /*
  187. ** This is the main interrupt handler, responsible for calling process_int()
  188. */
  189. SYMBOL_NAME_LABEL(inthandler)
  190. SAVE_ALL_INT
  191. GET_CURRENT(%d0)
  192. addql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
  193. |  put exception # in d0
  194. bfextu %sp@(PT_VECTOR){#4,#10},%d0
  195. movel %sp,%sp@-
  196. movel %d0,%sp@-  |  put vector # on stack
  197. #if defined(MACH_Q40_ONLY) && defined(CONFIG_BLK_DEV_FD)
  198. btstb #4,0xff000000 | Q40 floppy needs very special treatment ...
  199. jbeq 1f
  200. btstb #3,0xff000004
  201. jbeq 1f
  202. jbsr SYMBOL_NAME(floppy_hardint)
  203. jbra 3f
  204. 1:
  205. #endif
  206. jbsr SYMBOL_NAME(process_int)|  process the IRQ
  207. 3:      addql #8,%sp |  pop parameters off stack
  208. SYMBOL_NAME_LABEL(ret_from_interrupt)
  209. subql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
  210. jeq 1f
  211. 2:
  212. RESTORE_ALL
  213. 1:
  214. #if 1
  215. bfextu  %sp@(PT_SR){#5,#3},%d0 | Check for nested interrupt.
  216. #if MAX_NOINT_IPL > 0
  217. cmpiw #MAX_NOINT_IPL,%d0
  218. #endif
  219. jhi 2b
  220. #endif
  221. /* check if we need to do software interrupts */
  222. tstl SYMBOL_NAME(irq_stat) | softirq_pending ?
  223. jeq SYMBOL_NAME(ret_from_exception)
  224. pea SYMBOL_NAME(ret_from_exception)
  225. jra SYMBOL_NAME(do_softirq)
  226. /* Handler for uninitialized and spurious interrupts */
  227. SYMBOL_NAME_LABEL(bad_interrupt)
  228. addql #1,SYMBOL_NAME(num_spurious)
  229. rte
  230. ENTRY(sys_fork)
  231. SAVE_SWITCH_STACK
  232. pea %sp@(SWITCH_STACK_SIZE)
  233. jbsr SYMBOL_NAME(m68k_fork)
  234. addql #4,%sp
  235. RESTORE_SWITCH_STACK
  236. rts
  237. ENTRY(sys_clone)
  238. SAVE_SWITCH_STACK
  239. pea %sp@(SWITCH_STACK_SIZE)
  240. jbsr SYMBOL_NAME(m68k_clone)
  241. addql #4,%sp
  242. RESTORE_SWITCH_STACK
  243. rts
  244. ENTRY(sys_vfork)
  245. SAVE_SWITCH_STACK
  246. pea %sp@(SWITCH_STACK_SIZE)
  247. jbsr SYMBOL_NAME(m68k_vfork)
  248. addql #4,%sp
  249. RESTORE_SWITCH_STACK
  250. rts
  251. ENTRY(sys_sigsuspend)
  252. SAVE_SWITCH_STACK
  253. pea %sp@(SWITCH_STACK_SIZE)
  254. jbsr SYMBOL_NAME(do_sigsuspend)
  255. addql #4,%sp
  256. RESTORE_SWITCH_STACK
  257. rts
  258. ENTRY(sys_rt_sigsuspend)
  259. SAVE_SWITCH_STACK
  260. pea %sp@(SWITCH_STACK_SIZE)
  261. jbsr SYMBOL_NAME(do_rt_sigsuspend)
  262. addql #4,%sp
  263. RESTORE_SWITCH_STACK
  264. rts
  265. ENTRY(sys_sigreturn)
  266. SAVE_SWITCH_STACK
  267. jbsr SYMBOL_NAME(do_sigreturn)
  268. RESTORE_SWITCH_STACK
  269. rts
  270. ENTRY(sys_rt_sigreturn)
  271. SAVE_SWITCH_STACK
  272. jbsr SYMBOL_NAME(do_rt_sigreturn)
  273. RESTORE_SWITCH_STACK
  274. rts
  275. SYMBOL_NAME_LABEL(resume)
  276. /*
  277.  * Beware - when entering resume, prev (the current task) is
  278.  * in a0, next (the new task) is in a1,so don't change these
  279.  * registers until their contents are no longer needed.
  280.  */
  281. /* save sr */
  282. movew %sr,%a0@(TASK_THREAD+THREAD_SR)
  283. /* save fs (sfc,%dfc) (may be pointing to kernel memory) */
  284. movec %sfc,%d0
  285. movew %d0,%a0@(TASK_THREAD+THREAD_FS)
  286. /* save usp */
  287. /* it is better to use a movel here instead of a movew 8*) */
  288. movec %usp,%d0
  289. movel %d0,%a0@(TASK_THREAD+THREAD_USP)
  290. /* save non-scratch registers on stack */
  291. SAVE_SWITCH_STACK
  292. /* save current kernel stack pointer */
  293. movel %sp,%a0@(TASK_THREAD+THREAD_KSP)
  294. /* save floating point context */
  295. #ifndef CONFIG_M68KFPU_EMU_ONLY
  296. #ifdef CONFIG_M68KFPU_EMU
  297. tstl SYMBOL_NAME(m68k_fputype)
  298. jeq 3f
  299. #endif
  300. fsave %a0@(TASK_THREAD+THREAD_FPSTATE)
  301. #if defined(CONFIG_M68060)
  302. #if !defined(CPU_M68060_ONLY)
  303. btst #3,SYMBOL_NAME(m68k_cputype)+3
  304. beqs 1f
  305. #endif
  306. /* The 060 FPU keeps status in bits 15-8 of the first longword */
  307. tstb %a0@(TASK_THREAD+THREAD_FPSTATE+2)
  308. jeq 3f
  309. #if !defined(CPU_M68060_ONLY)
  310. jra 2f
  311. #endif
  312. #endif /* CONFIG_M68060 */
  313. #if !defined(CPU_M68060_ONLY)
  314. 1: tstb %a0@(TASK_THREAD+THREAD_FPSTATE)
  315. jeq 3f
  316. #endif
  317. 2: fmovemx %fp0-%fp7,%a0@(TASK_THREAD+THREAD_FPREG)
  318. fmoveml %fpcr/%fpsr/%fpiar,%a0@(TASK_THREAD+THREAD_FPCNTL)
  319. 3:
  320. #endif /* CONFIG_M68KFPU_EMU_ONLY */
  321. /* Return previous task in %d1 */
  322. movel %curptr,%d1
  323. /* switch to new task (a1 contains new task) */
  324. movel %a1,%curptr
  325. /* restore floating point context */
  326. #ifndef CONFIG_M68KFPU_EMU_ONLY
  327. #ifdef CONFIG_M68KFPU_EMU
  328. tstl SYMBOL_NAME(m68k_fputype)
  329. jeq 4f
  330. #endif
  331. #if defined(CONFIG_M68060)
  332. #if !defined(CPU_M68060_ONLY)
  333. btst #3,SYMBOL_NAME(m68k_cputype)+3
  334. beqs 1f
  335. #endif
  336. /* The 060 FPU keeps status in bits 15-8 of the first longword */
  337. tstb %a1@(TASK_THREAD+THREAD_FPSTATE+2)
  338. jeq 3f
  339. #if !defined(CPU_M68060_ONLY)
  340. jra 2f
  341. #endif
  342. #endif /* CONFIG_M68060 */
  343. #if !defined(CPU_M68060_ONLY)
  344. 1: tstb %a1@(TASK_THREAD+THREAD_FPSTATE)
  345. jeq 3f
  346. #endif
  347. 2: fmovemx %a1@(TASK_THREAD+THREAD_FPREG),%fp0-%fp7
  348. fmoveml %a1@(TASK_THREAD+THREAD_FPCNTL),%fpcr/%fpsr/%fpiar
  349. 3: frestore %a1@(TASK_THREAD+THREAD_FPSTATE)
  350. 4:
  351. #endif /* CONFIG_M68KFPU_EMU_ONLY */
  352. /* restore the kernel stack pointer */
  353. movel %a1@(TASK_THREAD+THREAD_KSP),%sp
  354. /* restore non-scratch registers */
  355. RESTORE_SWITCH_STACK
  356. /* restore user stack pointer */
  357. movel %a1@(TASK_THREAD+THREAD_USP),%a0
  358. movel %a0,%usp
  359. /* restore fs (sfc,%dfc) */
  360. movew %a1@(TASK_THREAD+THREAD_FS),%a0
  361. movec %a0,%sfc
  362. movec %a0,%dfc
  363. /* restore status register */
  364. movew %a1@(TASK_THREAD+THREAD_SR),%sr
  365. rts
  366. .data
  367. ALIGN
  368. SYMBOL_NAME_LABEL(sys_call_table)
  369. .long SYMBOL_NAME(sys_ni_syscall) /* 0  -  old "setup()" system call*/
  370. .long SYMBOL_NAME(sys_exit)
  371. .long SYMBOL_NAME(sys_fork)
  372. .long SYMBOL_NAME(sys_read)
  373. .long SYMBOL_NAME(sys_write)
  374. .long SYMBOL_NAME(sys_open) /* 5 */
  375. .long SYMBOL_NAME(sys_close)
  376. .long SYMBOL_NAME(sys_waitpid)
  377. .long SYMBOL_NAME(sys_creat)
  378. .long SYMBOL_NAME(sys_link)
  379. .long SYMBOL_NAME(sys_unlink) /* 10 */
  380. .long SYMBOL_NAME(sys_execve)
  381. .long SYMBOL_NAME(sys_chdir)
  382. .long SYMBOL_NAME(sys_time)
  383. .long SYMBOL_NAME(sys_mknod)
  384. .long SYMBOL_NAME(sys_chmod) /* 15 */
  385. .long SYMBOL_NAME(sys_chown16)
  386. .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */
  387. .long SYMBOL_NAME(sys_stat)
  388. .long SYMBOL_NAME(sys_lseek)
  389. .long SYMBOL_NAME(sys_getpid) /* 20 */
  390. .long SYMBOL_NAME(sys_mount)
  391. .long SYMBOL_NAME(sys_oldumount)
  392. .long SYMBOL_NAME(sys_setuid16)
  393. .long SYMBOL_NAME(sys_getuid16)
  394. .long SYMBOL_NAME(sys_stime) /* 25 */
  395. .long SYMBOL_NAME(sys_ptrace)
  396. .long SYMBOL_NAME(sys_alarm)
  397. .long SYMBOL_NAME(sys_fstat)
  398. .long SYMBOL_NAME(sys_pause)
  399. .long SYMBOL_NAME(sys_utime) /* 30 */
  400. .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */
  401. .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */
  402. .long SYMBOL_NAME(sys_access)
  403. .long SYMBOL_NAME(sys_nice)
  404. .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */
  405. .long SYMBOL_NAME(sys_sync)
  406. .long SYMBOL_NAME(sys_kill)
  407. .long SYMBOL_NAME(sys_rename)
  408. .long SYMBOL_NAME(sys_mkdir)
  409. .long SYMBOL_NAME(sys_rmdir) /* 40 */
  410. .long SYMBOL_NAME(sys_dup)
  411. .long SYMBOL_NAME(sys_pipe)
  412. .long SYMBOL_NAME(sys_times)
  413. .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */
  414. .long SYMBOL_NAME(sys_brk) /* 45 */
  415. .long SYMBOL_NAME(sys_setgid16)
  416. .long SYMBOL_NAME(sys_getgid16)
  417. .long SYMBOL_NAME(sys_signal)
  418. .long SYMBOL_NAME(sys_geteuid16)
  419. .long SYMBOL_NAME(sys_getegid16) /* 50 */
  420. .long SYMBOL_NAME(sys_acct)
  421. .long SYMBOL_NAME(sys_umount) /* recycled never used phys() */
  422. .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */
  423. .long SYMBOL_NAME(sys_ioctl)
  424. .long SYMBOL_NAME(sys_fcntl) /* 55 */
  425. .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */
  426. .long SYMBOL_NAME(sys_setpgid)
  427. .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */
  428. .long SYMBOL_NAME(sys_ni_syscall)
  429. .long SYMBOL_NAME(sys_umask) /* 60 */
  430. .long SYMBOL_NAME(sys_chroot)
  431. .long SYMBOL_NAME(sys_ustat)
  432. .long SYMBOL_NAME(sys_dup2)
  433. .long SYMBOL_NAME(sys_getppid)
  434. .long SYMBOL_NAME(sys_getpgrp) /* 65 */
  435. .long SYMBOL_NAME(sys_setsid)
  436. .long SYMBOL_NAME(sys_sigaction)
  437. .long SYMBOL_NAME(sys_sgetmask)
  438. .long SYMBOL_NAME(sys_ssetmask)
  439. .long SYMBOL_NAME(sys_setreuid16) /* 70 */
  440. .long SYMBOL_NAME(sys_setregid16)
  441. .long SYMBOL_NAME(sys_sigsuspend)
  442. .long SYMBOL_NAME(sys_sigpending)
  443. .long SYMBOL_NAME(sys_sethostname)
  444. .long SYMBOL_NAME(sys_setrlimit) /* 75 */
  445. .long SYMBOL_NAME(sys_old_getrlimit)
  446. .long SYMBOL_NAME(sys_getrusage)
  447. .long SYMBOL_NAME(sys_gettimeofday)
  448. .long SYMBOL_NAME(sys_settimeofday)
  449. .long SYMBOL_NAME(sys_getgroups16) /* 80 */
  450. .long SYMBOL_NAME(sys_setgroups16)
  451. .long SYMBOL_NAME(old_select)
  452. .long SYMBOL_NAME(sys_symlink)
  453. .long SYMBOL_NAME(sys_lstat)
  454. .long SYMBOL_NAME(sys_readlink) /* 85 */
  455. .long SYMBOL_NAME(sys_uselib)
  456. .long SYMBOL_NAME(sys_swapon)
  457. .long SYMBOL_NAME(sys_reboot)
  458. .long SYMBOL_NAME(old_readdir)
  459. .long SYMBOL_NAME(old_mmap) /* 90 */
  460. .long SYMBOL_NAME(sys_munmap)
  461. .long SYMBOL_NAME(sys_truncate)
  462. .long SYMBOL_NAME(sys_ftruncate)
  463. .long SYMBOL_NAME(sys_fchmod)
  464. .long SYMBOL_NAME(sys_fchown16) /* 95 */
  465. .long SYMBOL_NAME(sys_getpriority)
  466. .long SYMBOL_NAME(sys_setpriority)
  467. .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */
  468. .long SYMBOL_NAME(sys_statfs)
  469. .long SYMBOL_NAME(sys_fstatfs) /* 100 */
  470. .long SYMBOL_NAME(sys_ioperm)
  471. .long SYMBOL_NAME(sys_socketcall)
  472. .long SYMBOL_NAME(sys_syslog)
  473. .long SYMBOL_NAME(sys_setitimer)
  474. .long SYMBOL_NAME(sys_getitimer) /* 105 */
  475. .long SYMBOL_NAME(sys_newstat)
  476. .long SYMBOL_NAME(sys_newlstat)
  477. .long SYMBOL_NAME(sys_newfstat)
  478. .long SYMBOL_NAME(sys_ni_syscall)
  479. .long SYMBOL_NAME(sys_ni_syscall) /* iopl for i386 */ /* 110 */
  480. .long SYMBOL_NAME(sys_vhangup)
  481. .long SYMBOL_NAME(sys_ni_syscall) /* obsolete idle() syscall */
  482. .long SYMBOL_NAME(sys_ni_syscall) /* vm86old for i386 */
  483. .long SYMBOL_NAME(sys_wait4)
  484. .long SYMBOL_NAME(sys_swapoff) /* 115 */
  485. .long SYMBOL_NAME(sys_sysinfo)
  486. .long SYMBOL_NAME(sys_ipc)
  487. .long SYMBOL_NAME(sys_fsync)
  488. .long SYMBOL_NAME(sys_sigreturn)
  489. .long SYMBOL_NAME(sys_clone) /* 120 */
  490. .long SYMBOL_NAME(sys_setdomainname)
  491. .long SYMBOL_NAME(sys_newuname)
  492. .long SYMBOL_NAME(sys_cacheflush) /* modify_ldt for i386 */
  493. .long SYMBOL_NAME(sys_adjtimex)
  494. .long SYMBOL_NAME(sys_mprotect) /* 125 */
  495. .long SYMBOL_NAME(sys_sigprocmask)
  496. .long SYMBOL_NAME(sys_create_module)
  497. .long SYMBOL_NAME(sys_init_module)
  498. .long SYMBOL_NAME(sys_delete_module)
  499. .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
  500. .long SYMBOL_NAME(sys_quotactl)
  501. .long SYMBOL_NAME(sys_getpgid)
  502. .long SYMBOL_NAME(sys_fchdir)
  503. .long SYMBOL_NAME(sys_bdflush)
  504. .long SYMBOL_NAME(sys_sysfs) /* 135 */
  505. .long SYMBOL_NAME(sys_personality)
  506. .long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
  507. .long SYMBOL_NAME(sys_setfsuid16)
  508. .long SYMBOL_NAME(sys_setfsgid16)
  509. .long SYMBOL_NAME(sys_llseek) /* 140 */
  510. .long SYMBOL_NAME(sys_getdents)
  511. .long SYMBOL_NAME(sys_select)
  512. .long SYMBOL_NAME(sys_flock)
  513. .long SYMBOL_NAME(sys_msync)
  514. .long SYMBOL_NAME(sys_readv) /* 145 */
  515. .long SYMBOL_NAME(sys_writev)
  516. .long SYMBOL_NAME(sys_getsid)
  517. .long SYMBOL_NAME(sys_fdatasync)
  518. .long SYMBOL_NAME(sys_sysctl)
  519. .long SYMBOL_NAME(sys_mlock) /* 150 */
  520. .long SYMBOL_NAME(sys_munlock)
  521. .long SYMBOL_NAME(sys_mlockall)
  522. .long SYMBOL_NAME(sys_munlockall)
  523. .long SYMBOL_NAME(sys_sched_setparam)
  524. .long SYMBOL_NAME(sys_sched_getparam)   /* 155 */
  525. .long SYMBOL_NAME(sys_sched_setscheduler)
  526. .long SYMBOL_NAME(sys_sched_getscheduler)
  527. .long SYMBOL_NAME(sys_sched_yield)
  528. .long SYMBOL_NAME(sys_sched_get_priority_max)
  529. .long SYMBOL_NAME(sys_sched_get_priority_min)  /* 160 */
  530. .long SYMBOL_NAME(sys_sched_rr_get_interval)
  531. .long SYMBOL_NAME(sys_nanosleep)
  532. .long SYMBOL_NAME(sys_mremap)
  533. .long SYMBOL_NAME(sys_setresuid16)
  534. .long SYMBOL_NAME(sys_getresuid16) /* 165 */
  535. .long SYMBOL_NAME(sys_getpagesize)
  536. .long SYMBOL_NAME(sys_query_module)
  537. .long SYMBOL_NAME(sys_poll)
  538. .long SYMBOL_NAME(sys_nfsservctl)
  539. .long SYMBOL_NAME(sys_setresgid16) /* 170 */
  540. .long SYMBOL_NAME(sys_getresgid16)
  541. .long SYMBOL_NAME(sys_prctl)
  542. .long SYMBOL_NAME(sys_rt_sigreturn)
  543. .long SYMBOL_NAME(sys_rt_sigaction)
  544. .long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */
  545. .long SYMBOL_NAME(sys_rt_sigpending)
  546. .long SYMBOL_NAME(sys_rt_sigtimedwait)
  547. .long SYMBOL_NAME(sys_rt_sigqueueinfo)
  548. .long SYMBOL_NAME(sys_rt_sigsuspend)
  549. .long SYMBOL_NAME(sys_pread) /* 180 */
  550. .long SYMBOL_NAME(sys_pwrite)
  551. .long SYMBOL_NAME(sys_lchown16);
  552. .long SYMBOL_NAME(sys_getcwd)
  553. .long SYMBOL_NAME(sys_capget)
  554. .long SYMBOL_NAME(sys_capset)           /* 185 */
  555. .long SYMBOL_NAME(sys_sigaltstack)
  556. .long SYMBOL_NAME(sys_sendfile)
  557. .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
  558. .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
  559. .long SYMBOL_NAME(sys_vfork)            /* 190 */
  560. .long SYMBOL_NAME(sys_getrlimit)
  561. .long SYMBOL_NAME(sys_mmap2)
  562. .long SYMBOL_NAME(sys_truncate64)
  563. .long SYMBOL_NAME(sys_ftruncate64)
  564. .long SYMBOL_NAME(sys_stat64) /* 195 */
  565. .long SYMBOL_NAME(sys_lstat64)
  566. .long SYMBOL_NAME(sys_fstat64)
  567. .long SYMBOL_NAME(sys_chown)
  568. .long SYMBOL_NAME(sys_getuid)
  569. .long SYMBOL_NAME(sys_getgid) /* 200 */
  570. .long SYMBOL_NAME(sys_geteuid)
  571. .long SYMBOL_NAME(sys_getegid)
  572. .long SYMBOL_NAME(sys_setreuid)
  573. .long SYMBOL_NAME(sys_setregid)
  574. .long SYMBOL_NAME(sys_getgroups) /* 205 */
  575. .long SYMBOL_NAME(sys_setgroups)
  576. .long SYMBOL_NAME(sys_fchown)
  577. .long SYMBOL_NAME(sys_setresuid)
  578. .long SYMBOL_NAME(sys_getresuid)
  579. .long SYMBOL_NAME(sys_setresgid) /* 210 */
  580. .long SYMBOL_NAME(sys_getresgid)
  581. .long SYMBOL_NAME(sys_lchown)
  582. .long SYMBOL_NAME(sys_setuid)
  583. .long SYMBOL_NAME(sys_setgid)
  584. .long SYMBOL_NAME(sys_setfsuid) /* 215 */
  585. .long SYMBOL_NAME(sys_setfsgid)
  586. .long SYMBOL_NAME(sys_pivot_root)
  587. .long SYMBOL_NAME(sys_ni_syscall)
  588. .long SYMBOL_NAME(sys_ni_syscall)
  589. .long SYMBOL_NAME(sys_getdents64) /* 220 */
  590. .long SYMBOL_NAME(sys_gettid)
  591. .long SYMBOL_NAME(sys_tkill)
  592. .long SYMBOL_NAME(sys_setxattr)
  593. .long SYMBOL_NAME(sys_lsetxattr)
  594. .long SYMBOL_NAME(sys_fsetxattr) /* 225 */
  595. .long SYMBOL_NAME(sys_getxattr)
  596. .long SYMBOL_NAME(sys_lgetxattr)
  597. .long SYMBOL_NAME(sys_fgetxattr)
  598. .long SYMBOL_NAME(sys_listxattr)
  599. .long SYMBOL_NAME(sys_llistxattr) /* 230 */
  600. .long SYMBOL_NAME(sys_flistxattr)
  601. .long SYMBOL_NAME(sys_removexattr)
  602. .long SYMBOL_NAME(sys_lremovexattr)
  603. .long SYMBOL_NAME(sys_fremovexattr)
  604. .rept NR_syscalls-(.-SYMBOL_NAME(sys_call_table))/4
  605. .long SYMBOL_NAME(sys_ni_syscall)
  606. .endr