entry.S 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825
  1. /*
  2. * linux/arch/m32r/kernel/entry.S
  3. *
  4. * Copyright (c) 2001, 2002 Hirokazu Takata, Hitoshi Yamamoto, H. Kondo
  5. * Copyright (c) 2003 Hitoshi Yamamoto
  6. * Copyright (c) 2004 Hirokazu Takata <takata at linux-m32r.org>
  7. *
  8. * Taken from i386 version.
  9. * Copyright (C) 1991, 1992 Linus Torvalds
  10. */
  11. /*
  12. * entry.S contains the system-call and fault low-level handling routines.
  13. * This also contains the timer-interrupt handler, as well as all interrupts
  14. * and faults that can result in a task-switch.
  15. *
  16. * NOTE: This code handles signal-recognition, which happens every time
  17. * after a timer-interrupt and after each system call.
  18. *
  19. * Stack layout in 'ret_from_system_call':
  20. * ptrace needs to have all regs on the stack.
  21. * if the order here is changed, it needs to be
  22. * updated in fork.c:copy_thread, signal.c:do_signal,
  23. * ptrace.c and ptrace.h
  24. *
  25. * M32R/M32Rx/M32R2
  26. * @(sp) - r4
  27. * @(0x04,sp) - r5
  28. * @(0x08,sp) - r6
  29. * @(0x0c,sp) - *pt_regs
  30. * @(0x10,sp) - r0
  31. * @(0x14,sp) - r1
  32. * @(0x18,sp) - r2
  33. * @(0x1c,sp) - r3
  34. * @(0x20,sp) - r7
  35. * @(0x24,sp) - r8
  36. * @(0x28,sp) - r9
  37. * @(0x2c,sp) - r10
  38. * @(0x30,sp) - r11
  39. * @(0x34,sp) - r12
  40. * @(0x38,sp) - syscall_nr
  41. * @(0x3c,sp) - acc0h
  42. * @(0x40,sp) - acc0l
  43. * @(0x44,sp) - acc1h ; ISA_DSP_LEVEL2 only
  44. * @(0x48,sp) - acc1l ; ISA_DSP_LEVEL2 only
  45. * @(0x4c,sp) - psw
  46. * @(0x50,sp) - bpc
  47. * @(0x54,sp) - bbpsw
  48. * @(0x58,sp) - bbpc
  49. * @(0x5c,sp) - spu (cr3)
  50. * @(0x60,sp) - fp (r13)
  51. * @(0x64,sp) - lr (r14)
  52. * @(0x68,sp) - spi (cr2)
  53. * @(0x6c,sp) - orig_r0
  54. */
  55. #include <linux/linkage.h>
  56. #include <asm/irq.h>
  57. #include <asm/unistd.h>
  58. #include <asm/assembler.h>
  59. #include <asm/thread_info.h>
  60. #include <asm/errno.h>
  61. #include <asm/segment.h>
  62. #include <asm/smp.h>
  63. #include <asm/page.h>
  64. #include <asm/m32r.h>
  65. #include <asm/mmu_context.h>
  66. #if !defined(CONFIG_MMU)
  67. #define sys_madvise sys_ni_syscall
  68. #define sys_readahead sys_ni_syscall
  69. #define sys_mprotect sys_ni_syscall
  70. #define sys_msync sys_ni_syscall
  71. #define sys_mlock sys_ni_syscall
  72. #define sys_munlock sys_ni_syscall
  73. #define sys_mlockall sys_ni_syscall
  74. #define sys_munlockall sys_ni_syscall
  75. #define sys_mremap sys_ni_syscall
  76. #define sys_mincore sys_ni_syscall
  77. #define sys_remap_file_pages sys_ni_syscall
  78. #endif /* CONFIG_MMU */
  79. #define R4(reg) @reg
  80. #define R5(reg) @(0x04,reg)
  81. #define R6(reg) @(0x08,reg)
  82. #define PTREGS(reg) @(0x0C,reg)
  83. #define R0(reg) @(0x10,reg)
  84. #define R1(reg) @(0x14,reg)
  85. #define R2(reg) @(0x18,reg)
  86. #define R3(reg) @(0x1C,reg)
  87. #define R7(reg) @(0x20,reg)
  88. #define R8(reg) @(0x24,reg)
  89. #define R9(reg) @(0x28,reg)
  90. #define R10(reg) @(0x2C,reg)
  91. #define R11(reg) @(0x30,reg)
  92. #define R12(reg) @(0x34,reg)
  93. #define SYSCALL_NR(reg) @(0x38,reg)
  94. #define ACC0H(reg) @(0x3C,reg)
  95. #define ACC0L(reg) @(0x40,reg)
  96. #define ACC1H(reg) @(0x44,reg)
  97. #define ACC1L(reg) @(0x48,reg)
  98. #define PSW(reg) @(0x4C,reg)
  99. #define BPC(reg) @(0x50,reg)
  100. #define BBPSW(reg) @(0x54,reg)
  101. #define BBPC(reg) @(0x58,reg)
  102. #define SPU(reg) @(0x5C,reg)
  103. #define FP(reg) @(0x60,reg) /* FP = R13 */
  104. #define LR(reg) @(0x64,reg)
  105. #define SP(reg) @(0x68,reg)
  106. #define ORIG_R0(reg) @(0x6C,reg)
  107. #ifdef CONFIG_PREEMPT
  108. #define preempt_stop(x) CLI(x)
  109. #else
  110. #define preempt_stop(x)
  111. #define resume_kernel restore_all
  112. #endif
  113. ENTRY(ret_from_fork)
  114. pop r0
  115. bl schedule_tail
  116. GET_THREAD_INFO(r8)
  117. bra syscall_exit
  118. /*
  119. * Return to user mode is not as complex as all this looks,
  120. * but we want the default path for a system call return to
  121. * go as quickly as possible which is why some of this is
  122. * less clear than it otherwise should be.
  123. */
  124. ; userspace resumption stub bypassing syscall exit tracing
  125. ALIGN
  126. ret_from_exception:
  127. preempt_stop(r4)
  128. ret_from_intr:
  129. ld r4, PSW(sp)
  130. #ifdef CONFIG_ISA_M32R2
  131. and3 r4, r4, #0x8800 ; check BSM and BPM bits
  132. #else
  133. and3 r4, r4, #0x8000 ; check BSM bit
  134. #endif
  135. beqz r4, resume_kernel
  136. ENTRY(resume_userspace)
  137. CLI(r4) ; make sure we don't miss an interrupt
  138. ; setting need_resched or sigpending
  139. ; between sampling and the iret
  140. GET_THREAD_INFO(r8)
  141. ld r9, @(TI_FLAGS, r8)
  142. and3 r4, r9, #_TIF_WORK_MASK ; is there any work to be done on
  143. ; int/exception return?
  144. bnez r4, work_pending
  145. bra restore_all
  146. #ifdef CONFIG_PREEMPT
  147. ENTRY(resume_kernel)
  148. GET_THREAD_INFO(r8)
  149. ld r9, @(TI_PRE_COUNT, r8) ; non-zero preempt_count ?
  150. bnez r9, restore_all
  151. need_resched:
  152. ld r9, @(TI_FLAGS, r8) ; need_resched set ?
  153. and3 r4, r9, #_TIF_NEED_RESCHED
  154. beqz r4, restore_all
  155. ld r4, PSW(sp) ; interrupts off (exception path) ?
  156. and3 r4, r4, #0x4000
  157. beqz r4, restore_all
  158. LDIMM (r4, PREEMPT_ACTIVE)
  159. st r4, @(TI_PRE_COUNT, r8)
  160. STI(r4)
  161. bl schedule
  162. ldi r4, #0
  163. st r4, @(TI_PRE_COUNT, r8)
  164. CLI(r4)
  165. bra need_resched
  166. #endif
  167. ; system call handler stub
  168. ENTRY(system_call)
  169. SWITCH_TO_KERNEL_STACK
  170. SAVE_ALL
  171. STI(r4) ; Enable interrupt
  172. st sp, PTREGS(sp) ; implicit pt_regs parameter
  173. cmpui r7, #NR_syscalls
  174. bnc syscall_badsys
  175. st r7, SYSCALL_NR(sp) ; syscall_nr
  176. ; system call tracing in operation
  177. GET_THREAD_INFO(r8)
  178. ld r9, @(TI_FLAGS, r8)
  179. and3 r4, r9, #_TIF_SYSCALL_TRACE
  180. bnez r4, syscall_trace_entry
  181. syscall_call:
  182. slli r7, #2 ; table jump for the system call
  183. LDIMM (r4, sys_call_table)
  184. add r7, r4
  185. ld r7, @r7
  186. jl r7 ; execute system call
  187. st r0, R0(sp) ; save the return value
  188. syscall_exit:
  189. CLI(r4) ; make sure we don't miss an interrupt
  190. ; setting need_resched or sigpending
  191. ; between sampling and the iret
  192. ld r9, @(TI_FLAGS, r8)
  193. and3 r4, r9, #_TIF_ALLWORK_MASK ; current->work
  194. bnez r4, syscall_exit_work
  195. restore_all:
  196. RESTORE_ALL
  197. # perform work that needs to be done immediately before resumption
  198. # r9 : flags
  199. ALIGN
  200. work_pending:
  201. and3 r4, r9, #_TIF_NEED_RESCHED
  202. beqz r4, work_notifysig
  203. work_resched:
  204. bl schedule
  205. CLI(r4) ; make sure we don't miss an interrupt
  206. ; setting need_resched or sigpending
  207. ; between sampling and the iret
  208. ld r9, @(TI_FLAGS, r8)
  209. and3 r4, r9, #_TIF_WORK_MASK ; is there any work to be done other
  210. ; than syscall tracing?
  211. beqz r4, restore_all
  212. and3 r4, r4, #_TIF_NEED_RESCHED
  213. bnez r4, work_resched
  214. work_notifysig: ; deal with pending signals and
  215. ; notify-resume requests
  216. mv r0, sp ; arg1 : struct pt_regs *regs
  217. ldi r1, #0 ; arg2 : sigset_t *oldset
  218. mv r2, r9 ; arg3 : __u32 thread_info_flags
  219. bl do_notify_resume
  220. bra restore_all
  221. ; perform syscall exit tracing
  222. ALIGN
  223. syscall_trace_entry:
  224. ldi r4, #-ENOSYS
  225. st r4, R0(sp)
  226. bl do_syscall_trace
  227. ld r0, ORIG_R0(sp)
  228. ld r1, R1(sp)
  229. ld r2, R2(sp)
  230. ld r3, R3(sp)
  231. ld r4, R4(sp)
  232. ld r5, R5(sp)
  233. ld r6, R6(sp)
  234. ld r7, SYSCALL_NR(sp)
  235. cmpui r7, #NR_syscalls
  236. bc syscall_call
  237. bra syscall_exit
  238. ; perform syscall exit tracing
  239. ALIGN
  240. syscall_exit_work:
  241. ld r9, @(TI_FLAGS, r8)
  242. and3 r4, r9, #_TIF_SYSCALL_TRACE
  243. beqz r4, work_pending
  244. STI(r4) ; could let do_syscall_trace() call
  245. ; schedule() instead
  246. bl do_syscall_trace
  247. bra resume_userspace
  248. ALIGN
  249. syscall_fault:
  250. SAVE_ALL
  251. GET_THREAD_INFO(r8)
  252. ldi r4, #-EFAULT
  253. st r4, R0(sp)
  254. bra resume_userspace
  255. ALIGN
  256. syscall_badsys:
  257. ldi r4, #-ENOSYS
  258. st r4, R0(sp)
  259. bra resume_userspace
  260. .global eit_vector
  261. .equ ei_vec_table, eit_vector + 0x0200
  262. /*
  263. * EI handler routine
  264. */
  265. ENTRY(ei_handler)
  266. #if defined(CONFIG_CHIP_M32700)
  267. ; WORKAROUND: force to clear SM bit and use the kernel stack (SPI).
  268. SWITCH_TO_KERNEL_STACK
  269. #endif
  270. SAVE_ALL
  271. mv r1, sp ; arg1(regs)
  272. ; get ICU status
  273. seth r0, #shigh(M32R_ICU_ISTS_ADDR)
  274. ld r0, @(low(M32R_ICU_ISTS_ADDR),r0)
  275. push r0
  276. #if defined(CONFIG_SMP)
  277. /*
  278. * If IRQ == 0 --> Nothing to do, Not write IMASK
  279. * If IRQ == IPI --> Do IPI handler, Not write IMASK
  280. * If IRQ != 0, IPI --> Do do_IRQ(), Write IMASK
  281. */
  282. slli r0, #4
  283. srli r0, #24 ; r0(irq_num<<2)
  284. ;; IRQ exist check
  285. #if defined(CONFIG_CHIP_M32700)
  286. /* WORKAROUND: IMASK bug M32700-TS1, TS2 chip. */
  287. bnez r0, 0f
  288. ld24 r14, #0x00070000
  289. seth r0, #shigh(M32R_ICU_IMASK_ADDR)
  290. st r14, @(low(M32R_ICU_IMASK_ADDR),r0)
  291. bra 1f
  292. .fillinsn
  293. 0:
  294. #endif /* CONFIG_CHIP_M32700 */
  295. beqz r0, 1f ; if (!irq_num) goto exit
  296. ;; IPI check
  297. cmpi r0, #(M32R_IRQ_IPI0<<2) ; ISN < IPI0 check
  298. bc 2f
  299. cmpi r0, #((M32R_IRQ_IPI7+1)<<2) ; ISN > IPI7 check
  300. bnc 2f
  301. LDIMM (r2, ei_vec_table)
  302. add r2, r0
  303. ld r2, @r2
  304. beqz r2, 1f ; if (no IPI handler) goto exit
  305. mv r0, r1 ; arg0(regs)
  306. jl r2
  307. .fillinsn
  308. 1:
  309. addi sp, #4
  310. bra restore_all
  311. .fillinsn
  312. 2:
  313. srli r0, #2
  314. #else /* not CONFIG_SMP */
  315. srli r0, #22 ; r0(irq)
  316. #endif /* not CONFIG_SMP */
  317. #if defined(CONFIG_PLAT_HAS_INT1ICU)
  318. add3 r2, r0, #-(M32R_IRQ_INT1) ; INT1# interrupt
  319. bnez r2, 3f
  320. seth r0, #shigh(M32R_INT1ICU_ISTS)
  321. lduh r0, @(low(M32R_INT1ICU_ISTS),r0) ; bit10-6 : ISN
  322. slli r0, #21
  323. srli r0, #27 ; ISN
  324. addi r0, #(M32R_INT1ICU_IRQ_BASE)
  325. bra check_end
  326. .fillinsn
  327. 3:
  328. #endif /* CONFIG_PLAT_HAS_INT1ICU */
  329. #if defined(CONFIG_PLAT_HAS_INT0ICU)
  330. add3 r2, r0, #-(M32R_IRQ_INT0) ; INT0# interrupt
  331. bnez r2, 4f
  332. seth r0, #shigh(M32R_INT0ICU_ISTS)
  333. lduh r0, @(low(M32R_INT0ICU_ISTS),r0) ; bit10-6 : ISN
  334. slli r0, #21
  335. srli r0, #27 ; ISN
  336. addi r0, #(M32R_INT0ICU_IRQ_BASE)
  337. bra check_end
  338. .fillinsn
  339. 4:
  340. #endif /* CONFIG_PLAT_HAS_INT0ICU */
  341. #if defined(CONFIG_PLAT_HAS_INT2ICU)
  342. add3 r2, r0, #-(M32R_IRQ_INT2) ; INT2# interrupt
  343. bnez r2, 5f
  344. seth r0, #shigh(M32R_INT2ICU_ISTS)
  345. lduh r0, @(low(M32R_INT2ICU_ISTS),r0) ; bit10-6 : ISN
  346. slli r0, #21
  347. srli r0, #27 ; ISN
  348. addi r0, #(M32R_INT2ICU_IRQ_BASE)
  349. ; bra check_end
  350. .fillinsn
  351. 5:
  352. #endif /* CONFIG_PLAT_HAS_INT2ICU */
  353. check_end:
  354. bl do_IRQ
  355. pop r14
  356. seth r0, #shigh(M32R_ICU_IMASK_ADDR)
  357. st r14, @(low(M32R_ICU_IMASK_ADDR),r0)
  358. bra ret_from_intr
  359. /*
  360. * Default EIT handler
  361. */
  362. ALIGN
  363. int_msg:
  364. .asciz "Unknown interrupt\n"
  365. .byte 0
  366. ENTRY(default_eit_handler)
  367. push r0
  368. mvfc r0, psw
  369. push r1
  370. push r2
  371. push r3
  372. push r0
  373. LDIMM (r0, __KERNEL_DS)
  374. mv r0, r1
  375. mv r0, r2
  376. LDIMM (r0, int_msg)
  377. bl printk
  378. pop r0
  379. pop r3
  380. pop r2
  381. pop r1
  382. mvtc r0, psw
  383. pop r0
  384. infinit:
  385. bra infinit
  386. #ifdef CONFIG_MMU
  387. /*
  388. * Access Exception handler
  389. */
  390. ENTRY(ace_handler)
  391. SWITCH_TO_KERNEL_STACK
  392. SAVE_ALL
  393. seth r2, #shigh(MMU_REG_BASE) /* Check status register */
  394. ld r4, @(low(MESTS_offset),r2)
  395. st r4, @(low(MESTS_offset),r2)
  396. srl3 r1, r4, #4
  397. #ifdef CONFIG_CHIP_M32700
  398. and3 r1, r1, #0x0000ffff
  399. ; WORKAROUND: ignore TME bit for the M32700(TS1).
  400. #endif /* CONFIG_CHIP_M32700 */
  401. beqz r1, inst
  402. oprand:
  403. ld r2, @(low(MDEVA_offset),r2) ; set address
  404. srli r1, #1
  405. bra 1f
  406. inst:
  407. and3 r1, r4, #2
  408. srli r1, #1
  409. or3 r1, r1, #8
  410. mvfc r2, bpc ; set address
  411. .fillinsn
  412. 1:
  413. mvfc r3, psw
  414. mv r0, sp
  415. and3 r3, r3, 0x800
  416. srli r3, #9
  417. or r1, r3
  418. /*
  419. * do_page_fault():
  420. * r0 : struct pt_regs *regs
  421. * r1 : unsigned long error-code
  422. * r2 : unsigned long address
  423. * error-code:
  424. * +------+------+------+------+
  425. * | bit3 | bit2 | bit1 | bit0 |
  426. * +------+------+------+------+
  427. * bit 3 == 0:means data, 1:means instruction
  428. * bit 2 == 0:means kernel, 1:means user-mode
  429. * bit 1 == 0:means read, 1:means write
  430. * bit 0 == 0:means no page found 1:means protection fault
  431. *
  432. */
  433. bl do_page_fault
  434. bra ret_from_intr
  435. #endif /* CONFIG_MMU */
  436. ENTRY(alignment_check)
  437. /* void alignment_check(int error_code) */
  438. SWITCH_TO_KERNEL_STACK
  439. SAVE_ALL
  440. ldi r1, #0x30 ; error_code
  441. mv r0, sp ; pt_regs
  442. bl do_alignment_check
  443. error_code:
  444. bra ret_from_exception
  445. ENTRY(rie_handler)
  446. /* void rie_handler(int error_code) */
  447. SWITCH_TO_KERNEL_STACK
  448. SAVE_ALL
  449. ldi r1, #0x20 ; error_code
  450. mv r0, sp ; pt_regs
  451. bl do_rie_handler
  452. bra error_code
  453. ENTRY(pie_handler)
  454. /* void pie_handler(int error_code) */
  455. SWITCH_TO_KERNEL_STACK
  456. SAVE_ALL
  457. ldi r1, #0 ; error_code ; FIXME
  458. mv r0, sp ; pt_regs
  459. bl do_pie_handler
  460. bra error_code
  461. ENTRY(debug_trap)
  462. /* void debug_trap(void) */
  463. .global withdraw_debug_trap
  464. SWITCH_TO_KERNEL_STACK
  465. SAVE_ALL
  466. mv r0, sp ; pt_regs
  467. bl withdraw_debug_trap
  468. ldi r1, #0 ; error_code
  469. mv r0, sp ; pt_regs
  470. bl do_debug_trap
  471. bra error_code
  472. ENTRY(ill_trap)
  473. /* void ill_trap(void) */
  474. SWITCH_TO_KERNEL_STACK
  475. SAVE_ALL
  476. ldi r1, #0 ; error_code ; FIXME
  477. mv r0, sp ; pt_regs
  478. bl do_ill_trap
  479. bra error_code
  480. ENTRY(cache_flushing_handler)
  481. /* void _flush_cache_all(void); */
  482. .global _flush_cache_all
  483. SWITCH_TO_KERNEL_STACK
  484. push r0
  485. push r1
  486. push r2
  487. push r3
  488. push r4
  489. push r5
  490. push r6
  491. push r7
  492. push lr
  493. bl _flush_cache_all
  494. pop lr
  495. pop r7
  496. pop r6
  497. pop r5
  498. pop r4
  499. pop r3
  500. pop r2
  501. pop r1
  502. pop r0
  503. rte
  504. .data
  505. ENTRY(sys_call_table)
  506. .long sys_restart_syscall /* 0 - old "setup()" system call*/
  507. .long sys_exit
  508. .long sys_fork
  509. .long sys_read
  510. .long sys_write
  511. .long sys_open /* 5 */
  512. .long sys_close
  513. .long sys_waitpid
  514. .long sys_creat
  515. .long sys_link
  516. .long sys_unlink /* 10 */
  517. .long sys_execve
  518. .long sys_chdir
  519. .long sys_time
  520. .long sys_mknod
  521. .long sys_chmod /* 15 */
  522. .long sys_ni_syscall /* lchown16 syscall holder */
  523. .long sys_ni_syscall /* old break syscall holder */
  524. .long sys_ni_syscall /* old stat syscall holder */
  525. .long sys_lseek
  526. .long sys_getpid /* 20 */
  527. .long sys_mount
  528. .long sys_oldumount
  529. .long sys_ni_syscall /* setuid16 syscall holder */
  530. .long sys_ni_syscall /* getuid16 syscall holder */
  531. .long sys_stime /* 25 */
  532. .long sys_ptrace
  533. .long sys_alarm
  534. .long sys_ni_syscall /* old fstat syscall holder */
  535. .long sys_pause
  536. .long sys_utime /* 30 */
  537. .long sys_ni_syscall /* old stty syscall holder */
  538. .long sys_cachectl /* for M32R */ /* old gtty syscall holder */
  539. .long sys_access
  540. .long sys_ni_syscall /* nice syscall holder */
  541. .long sys_ni_syscall /* 35 - old ftime syscall holder */
  542. .long sys_sync
  543. .long sys_kill
  544. .long sys_rename
  545. .long sys_mkdir
  546. .long sys_rmdir /* 40 */
  547. .long sys_dup
  548. .long sys_pipe
  549. .long sys_times
  550. .long sys_ni_syscall /* old prof syscall holder */
  551. .long sys_brk /* 45 */
  552. .long sys_ni_syscall /* setgid16 syscall holder */
  553. .long sys_getgid /* will be unused */
  554. .long sys_ni_syscall /* signal syscall holder */
  555. .long sys_ni_syscall /* geteuid16 syscall holder */
  556. .long sys_ni_syscall /* 50 - getegid16 syscall holder */
  557. .long sys_acct
  558. .long sys_umount /* recycled never used phys() */
  559. .long sys_ni_syscall /* old lock syscall holder */
  560. .long sys_ioctl
  561. .long sys_fcntl /* 55 - will be unused */
  562. .long sys_ni_syscall /* mpx syscall holder */
  563. .long sys_setpgid
  564. .long sys_ni_syscall /* old ulimit syscall holder */
  565. .long sys_ni_syscall /* sys_olduname */
  566. .long sys_umask /* 60 */
  567. .long sys_chroot
  568. .long sys_ustat
  569. .long sys_dup2
  570. .long sys_getppid
  571. .long sys_getpgrp /* 65 */
  572. .long sys_setsid
  573. .long sys_ni_syscall /* sigaction syscall holder */
  574. .long sys_ni_syscall /* sgetmask syscall holder */
  575. .long sys_ni_syscall /* ssetmask syscall holder */
  576. .long sys_ni_syscall /* 70 - setreuid16 syscall holder */
  577. .long sys_ni_syscall /* setregid16 syscall holder */
  578. .long sys_ni_syscall /* sigsuspend syscall holder */
  579. .long sys_ni_syscall /* sigpending syscall holder */
  580. .long sys_sethostname
  581. .long sys_setrlimit /* 75 */
  582. .long sys_getrlimit/*will be unused*/
  583. .long sys_getrusage
  584. .long sys_gettimeofday
  585. .long sys_settimeofday
  586. .long sys_ni_syscall /* 80 - getgroups16 syscall holder */
  587. .long sys_ni_syscall /* setgroups16 syscall holder */
  588. .long sys_ni_syscall /* sys_oldselect */
  589. .long sys_symlink
  590. .long sys_ni_syscall /* old lstat syscall holder */
  591. .long sys_readlink /* 85 */
  592. .long sys_uselib
  593. .long sys_swapon
  594. .long sys_reboot
  595. .long sys_ni_syscall /* readdir syscall holder */
  596. .long sys_ni_syscall /* 90 - old_mmap syscall holder */
  597. .long sys_munmap
  598. .long sys_truncate
  599. .long sys_ftruncate
  600. .long sys_fchmod
  601. .long sys_ni_syscall /* 95 - fchwon16 syscall holder */
  602. .long sys_getpriority
  603. .long sys_setpriority
  604. .long sys_ni_syscall /* old profil syscall holder */
  605. .long sys_statfs
  606. .long sys_fstatfs /* 100 */
  607. .long sys_ni_syscall /* ioperm syscall holder */
  608. .long sys_socketcall
  609. .long sys_syslog
  610. .long sys_setitimer
  611. .long sys_getitimer /* 105 */
  612. .long sys_newstat
  613. .long sys_newlstat
  614. .long sys_newfstat
  615. .long sys_ni_syscall /* old uname syscall holder */
  616. .long sys_ni_syscall /* 110 - iopl syscall holder */
  617. .long sys_vhangup
  618. .long sys_ni_syscall /* idle syscall holder */
  619. .long sys_ni_syscall /* vm86old syscall holder */
  620. .long sys_wait4
  621. .long sys_swapoff /* 115 */
  622. .long sys_sysinfo
  623. .long sys_ipc
  624. .long sys_fsync
  625. .long sys_ni_syscall /* sigreturn syscall holder */
  626. .long sys_clone /* 120 */
  627. .long sys_setdomainname
  628. .long sys_newuname
  629. .long sys_ni_syscall /* modify_ldt syscall holder */
  630. .long sys_adjtimex
  631. .long sys_mprotect /* 125 */
  632. .long sys_ni_syscall /* sigprocmask syscall holder */
  633. .long sys_ni_syscall /* create_module syscall holder */
  634. .long sys_init_module
  635. .long sys_delete_module
  636. .long sys_ni_syscall /* 130 - get_kernel_syms */
  637. .long sys_quotactl
  638. .long sys_getpgid
  639. .long sys_fchdir
  640. .long sys_bdflush
  641. .long sys_sysfs /* 135 */
  642. .long sys_personality
  643. .long sys_ni_syscall /* afs_syscall syscall holder */
  644. .long sys_ni_syscall /* setfsuid16 syscall holder */
  645. .long sys_ni_syscall /* setfsgid16 syscall holder */
  646. .long sys_llseek /* 140 */
  647. .long sys_getdents
  648. .long sys_select
  649. .long sys_flock
  650. .long sys_msync
  651. .long sys_readv /* 145 */
  652. .long sys_writev
  653. .long sys_getsid
  654. .long sys_fdatasync
  655. .long sys_sysctl
  656. .long sys_mlock /* 150 */
  657. .long sys_munlock
  658. .long sys_mlockall
  659. .long sys_munlockall
  660. .long sys_sched_setparam
  661. .long sys_sched_getparam /* 155 */
  662. .long sys_sched_setscheduler
  663. .long sys_sched_getscheduler
  664. .long sys_sched_yield
  665. .long sys_sched_get_priority_max
  666. .long sys_sched_get_priority_min /* 160 */
  667. .long sys_sched_rr_get_interval
  668. .long sys_nanosleep
  669. .long sys_mremap
  670. .long sys_ni_syscall /* setresuid16 syscall holder */
  671. .long sys_ni_syscall /* 165 - getresuid16 syscall holder */
  672. .long sys_tas /* vm86 syscall holder */
  673. .long sys_ni_syscall /* query_module syscall holder */
  674. .long sys_poll
  675. .long sys_nfsservctl
  676. .long sys_setresgid /* 170 */
  677. .long sys_getresgid
  678. .long sys_prctl
  679. .long sys_rt_sigreturn
  680. .long sys_rt_sigaction
  681. .long sys_rt_sigprocmask /* 175 */
  682. .long sys_rt_sigpending
  683. .long sys_rt_sigtimedwait
  684. .long sys_rt_sigqueueinfo
  685. .long sys_rt_sigsuspend
  686. .long sys_pread64 /* 180 */
  687. .long sys_pwrite64
  688. .long sys_ni_syscall /* chown16 syscall holder */
  689. .long sys_getcwd
  690. .long sys_capget
  691. .long sys_capset /* 185 */
  692. .long sys_sigaltstack
  693. .long sys_sendfile
  694. .long sys_ni_syscall /* streams1 */
  695. .long sys_ni_syscall /* streams2 */
  696. .long sys_vfork /* 190 */
  697. .long sys_getrlimit
  698. .long sys_mmap2
  699. .long sys_truncate64
  700. .long sys_ftruncate64
  701. .long sys_stat64 /* 195 */
  702. .long sys_lstat64
  703. .long sys_fstat64
  704. .long sys_lchown
  705. .long sys_getuid
  706. .long sys_getgid /* 200 */
  707. .long sys_geteuid
  708. .long sys_getegid
  709. .long sys_setreuid
  710. .long sys_setregid
  711. .long sys_getgroups /* 205 */
  712. .long sys_setgroups
  713. .long sys_fchown
  714. .long sys_setresuid
  715. .long sys_getresuid
  716. .long sys_setresgid /* 210 */
  717. .long sys_getresgid
  718. .long sys_chown
  719. .long sys_setuid
  720. .long sys_setgid
  721. .long sys_setfsuid /* 215 */
  722. .long sys_setfsgid
  723. .long sys_pivot_root
  724. .long sys_mincore
  725. .long sys_madvise
  726. .long sys_getdents64 /* 220 */
  727. .long sys_fcntl64
  728. .long sys_ni_syscall /* reserved for TUX */
  729. .long sys_ni_syscall /* Reserved for Security */
  730. .long sys_gettid
  731. .long sys_readahead /* 225 */
  732. .long sys_setxattr
  733. .long sys_lsetxattr
  734. .long sys_fsetxattr
  735. .long sys_getxattr
  736. .long sys_lgetxattr /* 230 */
  737. .long sys_fgetxattr
  738. .long sys_listxattr
  739. .long sys_llistxattr
  740. .long sys_flistxattr
  741. .long sys_removexattr /* 235 */
  742. .long sys_lremovexattr
  743. .long sys_fremovexattr
  744. .long sys_tkill
  745. .long sys_sendfile64
  746. .long sys_futex /* 240 */
  747. .long sys_sched_setaffinity
  748. .long sys_sched_getaffinity
  749. .long sys_ni_syscall /* reserved for "set_thread_area" system call */
  750. .long sys_ni_syscall /* reserved for "get_thread_area" system call */
  751. .long sys_io_setup /* 245 */
  752. .long sys_io_destroy
  753. .long sys_io_getevents
  754. .long sys_io_submit
  755. .long sys_io_cancel
  756. .long sys_fadvise64 /* 250 */
  757. .long sys_ni_syscall
  758. .long sys_exit_group
  759. .long sys_lookup_dcookie
  760. .long sys_epoll_create
  761. .long sys_epoll_ctl /* 255 */
  762. .long sys_epoll_wait
  763. .long sys_remap_file_pages
  764. .long sys_set_tid_address
  765. .long sys_timer_create
  766. .long sys_timer_settime /* 260 */
  767. .long sys_timer_gettime
  768. .long sys_timer_getoverrun
  769. .long sys_timer_delete
  770. .long sys_clock_settime
  771. .long sys_clock_gettime /* 265 */
  772. .long sys_clock_getres
  773. .long sys_clock_nanosleep
  774. .long sys_statfs64
  775. .long sys_fstatfs64
  776. .long sys_tgkill /* 270 */
  777. .long sys_utimes
  778. .long sys_fadvise64_64
  779. .long sys_ni_syscall /* Reserved for sys_vserver */
  780. .long sys_ni_syscall /* Reserved for sys_mbind */
  781. .long sys_ni_syscall /* Reserved for sys_get_mempolicy */
  782. .long sys_ni_syscall /* Reserved for sys_set_mempolicy */
  783. .long sys_mq_open
  784. .long sys_mq_unlink
  785. .long sys_mq_timedsend
  786. .long sys_mq_timedreceive /* 280 */
  787. .long sys_mq_notify
  788. .long sys_mq_getsetattr
  789. .long sys_ni_syscall /* reserved for kexec */
  790. .long sys_waitid
  791. syscall_table_size=(.-sys_call_table)