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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  arch/ppc/kernel/misc.S
  3.  *
  4.  *  
  5.  *
  6.  * This file contains miscellaneous low-level functions.
  7.  *    Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
  8.  *
  9.  * Largely rewritten by Cort Dougan (cort@cs.nmt.edu)
  10.  * and Paul Mackerras.
  11.  * Adapted for iSeries by Mike Corrigan (mikejc@us.ibm.com)
  12.  * PPC64 updates by Dave Engebretsen (engebret@us.ibm.com) 
  13.  * 
  14.  * This program is free software; you can redistribute it and/or
  15.  * modify it under the terms of the GNU General Public License
  16.  * as published by the Free Software Foundation; either version
  17.  * 2 of the License, or (at your option) any later version.
  18.  *
  19.  */
  20. #include <linux/config.h>
  21. #include <linux/sys.h>
  22. #include <asm/unistd.h>
  23. #include <asm/errno.h>
  24. #include <asm/processor.h>
  25. #include <asm/page.h>
  26. #include <asm/cache.h>
  27. #include "ppc_asm.h"
  28. .text
  29. /*
  30.  * Returns (address we're running at) - (address we were linked at)
  31.  * for use before the text and data are mapped to KERNELBASE.
  32.  */
  33. _GLOBAL(reloc_offset)
  34. mflr r0
  35. bl 1f
  36. 1: mflr r3
  37. LOADADDR(r4,1b)
  38. sub r3,r4,r3
  39. mtlr r0
  40. blr
  41. _GLOBAL(get_msr)
  42. mfmsr r3
  43. blr
  44. _GLOBAL(get_dar)
  45. mfdar r3
  46. blr
  47. _GLOBAL(get_srr0)
  48. mfsrr0  r3
  49. blr
  50. _GLOBAL(get_srr1)
  51. mfsrr1  r3
  52. blr
  53. _GLOBAL(get_sp)
  54. mr r3,r1
  55. blr
  56. #ifdef CONFIG_PPC_ISERIES
  57. /* unsigned long __no_use_save_flags(void) */
  58. _GLOBAL(__no_use_save_flags)
  59. mfspr r4,SPRG3
  60. lbz r3,PACAPROCENABLED(r4)
  61. blr
  62. /* void __no_use_restore_flags(unsigned long flags) */
  63. _GLOBAL(__no_use_restore_flags)
  64. /*
  65.  * Just set/clear the MSR_EE bit through restore/flags but do not
  66.  * change anything else.  This is needed by the RT system and makes
  67.  * sense anyway.
  68.  *    -- Cort
  69.  */
  70. mfspr r6,SPRG3
  71. lbz r5,PACAPROCENABLED(r6)
  72.  /* Check if things are setup the way we want _already_. */
  73. cmpw 0,r3,r5
  74. beqlr
  75. /* are we enabling interrupts? */
  76. cmpi 0,r3,0
  77. stb r3,PACAPROCENABLED(r6)
  78. beqlr
  79. /* Check pending interrupts */
  80. CHECKANYINT(r4,r5)
  81. beqlr
  82. /* 
  83.  * Handle pending interrupts in interrupt context
  84.  */
  85. li r0,0x5555
  86. sc
  87. blr
  88. _GLOBAL(__no_use_cli)
  89. mfspr r5,SPRG3
  90. lbz r3,PACAPROCENABLED(r5)
  91. li r4,0
  92. stb r4,PACAPROCENABLED(r5)
  93. blr /* Done */
  94. _GLOBAL(__no_use_sti)
  95. mfspr r6,SPRG3
  96. li r3,1
  97. stb r3,PACAPROCENABLED(r6)
  98. /* Check for pending interrupts
  99.  *   A decrementer, IPI or PMC interrupt may have occurred
  100.  *   while we were in the hypervisor (which enables)
  101.  */
  102. CHECKANYINT(r4,r5)
  103. beqlr
  104. /* 
  105.  * Handle pending interrupts in interrupt context
  106.  */
  107. li r0,0x5555
  108. sc
  109. blr
  110. #endif
  111. /*
  112.  * Flush instruction cache.
  113.  */
  114. _GLOBAL(flush_instruction_cache)
  115. /*
  116.  * This is called by kgdb code
  117.  * and should probably go away
  118.  * to be replaced by invalidating
  119.  * the cache lines that are actually
  120.  * modified
  121.  */
  122. /* use invalidate-all bit in HID0
  123.  *  - is this consistent across all 64-bit cpus?  -- paulus */
  124. mfspr r3,HID0
  125. ori r3,r3,HID0_ICFI
  126. mtspr HID0,r3
  127. sync
  128. isync
  129. blr
  130. /*
  131.  * Write any modified data cache blocks out to memory
  132.  * and invalidate the corresponding instruction cache blocks.
  133.  *
  134.  * flush_icache_range(unsigned long start, unsigned long stop)
  135.  *
  136.  *   flush all bytes from start through stop-1 inclusive
  137.  */
  138. _GLOBAL(flush_icache_range)
  139. /*
  140.  * Flush the data cache to memory 
  141.  * 
  142.  * Different systems have different cache line sizes
  143.  * and in some cases i-cache and d-cache line sizes differ from
  144.  * each other.
  145.  */
  146. LOADADDR(r10,naca) /* Get Naca address */
  147. ld r10,0(r10)
  148. lhz r7,DCACHEL1LINESIZE(r10) /* Get cache line size */
  149. addi r5,r7,-1
  150. andc r6,r3,r5 /* round low to line bdy */
  151. subf r8,r6,r4 /* compute length */
  152. add r8,r8,r5 /* ensure we get enough */
  153. lhz r9,DCACHEL1LOGLINESIZE(r10) /* Get log-2 of cache line size */
  154. srw. r8,r8,r9 /* compute line count */
  155. beqlr /* nothing to do? */
  156. mtctr r8
  157. 1: dcbst 0,r6
  158. add r6,r6,r7
  159. bdnz 1b
  160. sync
  161. /* Now invalidate the instruction cache */
  162. lhz r7,ICACHEL1LINESIZE(r10) /* Get Icache line size */
  163. addi r5,r7,-1
  164. andc r6,r3,r5 /* round low to line bdy */
  165. subf r8,r6,r4 /* compute length */
  166. add r8,r8,r5
  167. lhz r9,ICACHEL1LOGLINESIZE(r10) /* Get log-2 of Icache line size */
  168. srw. r8,r8,r9 /* compute line count */
  169. beqlr /* nothing to do? */
  170. mtctr r8
  171. 2: icbi 0,r6
  172. add r6,r6,r7
  173. bdnz 2b
  174. isync
  175. blr
  176. /*
  177.  * Like above, but only do the D-cache.
  178.  *
  179.  * flush_dcache_range(unsigned long start, unsigned long stop)
  180.  *
  181.  *    flush all bytes from start to stop-1 inclusive
  182.  */
  183. _GLOBAL(flush_dcache_range)
  184. /*
  185.  * Flush the data cache to memory 
  186.  * 
  187.  * Different systems have different cache line sizes
  188.  */
  189. LOADADDR(r10,naca) /* Get Naca address */
  190. ld r10,0(r10)
  191. lhz r7,DCACHEL1LINESIZE(r10) /* Get dcache line size */
  192. addi r5,r7,-1
  193. andc r6,r3,r5 /* round low to line bdy */
  194. subf r8,r6,r4 /* compute length */
  195. add r8,r8,r5 /* ensure we get enough */
  196. lhz r9,DCACHEL1LOGLINESIZE(r10) /* Get log-2 of dcache line size */
  197. srw. r8,r8,r9 /* compute line count */
  198. beqlr /* nothing to do? */
  199. mtctr r8
  200. 0: dcbst 0,r6
  201. add r6,r6,r7
  202. bdnz 0b
  203. sync
  204. blr
  205. /*
  206.  * Flush a particular page from the data cache to RAM.
  207.  * Note: this is necessary because the instruction cache does *not*
  208.  * snoop from the data cache.
  209.  *
  210.  * void __flush_dcache_icache(void *page)
  211.  */
  212. _GLOBAL(__flush_dcache_icache)
  213. /*
  214.  * Flush the data cache to memory 
  215.  * 
  216.  * Different systems have different cache line sizes
  217.  */
  218. /* Flush the dcache */
  219. LOADADDR(r7,naca)
  220. ld r7,0(r7)
  221. clrrdi r3,r3,12                /* Page align */
  222. lhz r4,DCACHEL1LINESPERPAGE(r7) /* Get # dcache lines per page */
  223. lhz r5,DCACHEL1LINESIZE(r7) /* Get dcache line size */
  224. mr r6,r3
  225. mtctr r4
  226. 0: dcbst 0,r6
  227. add r6,r6,r5
  228. bdnz 0b
  229. sync
  230. /* Now invalidate the icache */
  231. lhz r4,ICACHEL1LINESPERPAGE(r7) /* Get # icache lines per page */
  232. lhz r5,ICACHEL1LINESIZE(r7) /* Get icache line size */
  233. mtctr r4
  234. 1: icbi 0,r3
  235. add r3,r3,r5
  236. bdnz 1b
  237. isync
  238. blr
  239. /*
  240.  * Copy a whole page.  Assumes a 4096B page size.
  241.  */
  242. _GLOBAL(copy_page)
  243. clrrdi r3,r3,12                /* Page align */
  244. clrrdi r4,r4,12                /* Page align */
  245. li r5,256
  246. mtctr r5
  247. addi r3,r3,-8
  248. addi r4,r4,-8
  249. 1:      ld  r6,8(r4)
  250.         ldu r7,16(r4)
  251. std     r6,8(r3) 
  252. stdu    r7,16(r3) 
  253. bdnz+ 1b
  254. blr  
  255. /*
  256.  * I/O string operations
  257.  *
  258.  * insb(port, buf, len)
  259.  * outsb(port, buf, len)
  260.  * insw(port, buf, len)
  261.  * outsw(port, buf, len)
  262.  * insl(port, buf, len)
  263.  * outsl(port, buf, len)
  264.  * insw_ns(port, buf, len)
  265.  * outsw_ns(port, buf, len)
  266.  * insl_ns(port, buf, len)
  267.  * outsl_ns(port, buf, len)
  268.  *
  269.  * The *_ns versions don't do byte-swapping.
  270.  */
  271. _GLOBAL(_insb)
  272. cmpwi 0,r5,0
  273. mtctr r5
  274. subi r4,r4,1
  275. blelr-
  276. 00: lbz r5,0(r3)
  277. eieio
  278. stbu r5,1(r4)
  279. bdnz 00b
  280. blr
  281. _GLOBAL(_outsb)
  282. cmpwi 0,r5,0
  283. mtctr r5
  284. subi r4,r4,1
  285. blelr-
  286. 00: lbzu r5,1(r4)
  287. stb r5,0(r3)
  288. eieio
  289. bdnz 00b
  290. blr
  291. _GLOBAL(_insw)
  292. cmpwi 0,r5,0
  293. mtctr r5
  294. subi r4,r4,2
  295. blelr-
  296. 00: lhbrx r5,0,r3
  297. eieio
  298. sthu r5,2(r4)
  299. bdnz 00b
  300. blr
  301. _GLOBAL(_outsw)
  302. cmpwi 0,r5,0
  303. mtctr r5
  304. subi r4,r4,2
  305. blelr-
  306. 00: lhzu r5,2(r4)
  307. eieio
  308. sthbrx r5,0,r3
  309. bdnz 00b
  310. blr
  311. _GLOBAL(_insl)
  312. cmpwi 0,r5,0
  313. mtctr r5
  314. subi r4,r4,4
  315. blelr-
  316. 00: lwbrx r5,0,r3
  317. eieio
  318. stwu r5,4(r4)
  319. bdnz 00b
  320. blr
  321. _GLOBAL(_outsl)
  322. cmpwi 0,r5,0
  323. mtctr r5
  324. subi r4,r4,4
  325. blelr-
  326. 00: lwzu r5,4(r4)
  327. stwbrx r5,0,r3
  328. eieio
  329. bdnz 00b
  330. blr
  331. _GLOBAL(ide_insw)
  332. _GLOBAL(_insw_ns)
  333. cmpwi 0,r5,0
  334. mtctr r5
  335. subi r4,r4,2
  336. blelr-
  337. 00: lhz r5,0(r3)
  338. eieio
  339. sthu r5,2(r4)
  340. bdnz 00b
  341. blr
  342. _GLOBAL(ide_outsw)
  343. _GLOBAL(_outsw_ns)
  344. cmpwi 0,r5,0
  345. mtctr r5
  346. subi r4,r4,2
  347. blelr-
  348. 00: lhzu r5,2(r4)
  349. sth r5,0(r3)
  350. eieio
  351. bdnz 00b
  352. blr
  353. _GLOBAL(_insl_ns)
  354. cmpwi 0,r5,0
  355. mtctr r5
  356. subi r4,r4,4
  357. blelr-
  358. 00: lwz r5,0(r3)
  359. eieio
  360. stwu r5,4(r4)
  361. bdnz 00b
  362. blr
  363. _GLOBAL(_outsl_ns)
  364. cmpwi 0,r5,0
  365. mtctr r5
  366. subi r4,r4,4
  367. blelr-
  368. 00: lwzu r5,4(r4)
  369. stw r5,0(r3)
  370. eieio
  371. bdnz 00b
  372. blr
  373. /*
  374.  * Extended precision shifts
  375.  *
  376.  * R3/R4 has 64 bit value
  377.  * R5    has shift count
  378.  * result in R3/R4
  379.  *
  380.  *  ashrdi3:     XXXYYY/ZZZAAA -> SSSXXX/YYYZZZ
  381.  *  ashldi3:     XXXYYY/ZZZAAA -> YYYZZZ/AAA000
  382.  *  lshrdi3:     XXXYYY/ZZZAAA -> 000XXX/YYYZZZ
  383.  */
  384. /* MIKEC: These may no longer be needed...what does gcc expect ? */
  385. _GLOBAL(__ashrdi3)
  386. li r6,32
  387. sub r6,r6,r5
  388. slw r7,r3,r6 /* isolate YYY */
  389. srw r4,r4,r5 /* isolate ZZZ */
  390. or r4,r4,r7 /* YYYZZZ */
  391. sraw r3,r3,r5 /* SSSXXX */
  392. blr
  393. _GLOBAL(__ashldi3)
  394. li r6,32
  395. sub r6,r6,r5
  396. srw r7,r4,r6 /* isolate ZZZ */
  397. slw r4,r4,r5 /* AAA000 */
  398. slw r3,r3,r5 /* YYY--- */
  399. or r3,r3,r7 /* YYYZZZ */
  400. blr
  401. _GLOBAL(__lshrdi3)
  402. li r6,32
  403. sub r6,r6,r5
  404. slw r7,r3,r6        /* isolate YYY */
  405. srw r4,r4,r5        /* isolate ZZZ */
  406. or r4,r4,r7        /* YYYZZZ */
  407. srw r3,r3,r5        /* 000XXX */
  408. blr
  409. _GLOBAL(abs)
  410. cmpi 0,r3,0
  411. bge 10f
  412. neg r3,r3
  413. 10: blr
  414. _GLOBAL(_get_SP)
  415. mr r3,r1 /* Close enough */
  416. blr
  417. _GLOBAL(_get_PVR)
  418. mfspr r3,PVR
  419. blr
  420. _GLOBAL(_get_PIR)
  421. mfspr r3,PIR
  422. blr
  423. _GLOBAL(_get_HID0)
  424. mfspr r3,HID0
  425. blr
  426. _GLOBAL(cvt_fd)
  427. lfd 0,-4(r5) /* load up fpscr value */
  428. mtfsf 0xff,0
  429. lfs 0,0(r3)
  430. stfd 0,0(r4)
  431. mffs 0 /* save new fpscr value */
  432. stfd 0,-4(r5)
  433. blr
  434. _GLOBAL(cvt_df)
  435. lfd 0,-4(r5) /* load up fpscr value */
  436. mtfsf 0xff,0
  437. lfd 0,0(r3)
  438. stfs 0,0(r4)
  439. mffs 0 /* save new fpscr value */
  440. stfd 0,-4(r5)
  441. blr
  442. /*
  443.  * Create a kernel thread
  444.  *   kernel_thread(fn, arg, flags)
  445.  */
  446. _GLOBAL(kernel_thread)
  447. mr r6,r3 /* function */
  448. ori r3,r5,CLONE_VM /* flags */
  449. li r0,__NR_clone
  450. sc
  451. cmpi 0,r3,0 /* parent or child? */
  452. bnelr /* return if parent */
  453. li r0,0 /* clear out p->thread.regs */
  454. std r0,THREAD+PT_REGS(r13) /* since we don't have user ctx */
  455. li r0,RUN_FLAG /* Run light on */
  456. std r0,THREAD+THREAD_FLAGS(r13)
  457. ld r2,8(r6)
  458. ld r6,0(r6)
  459. mtlr r6              /* fn addr in lr */
  460. mr r3,r4         /* load arg and call fn */
  461. blrl
  462. li r0,__NR_exit /* exit after child exits */
  463.         li r3,0
  464. sc
  465. #ifdef CONFIG_BINFMT_ELF32
  466. /* Why isn't this a) automatic, b) written in 'C'? */
  467. .balign 8
  468. _GLOBAL(sys_call_table32)
  469. .llong .sys_ni_syscall /* 0  -  old "setup()" system call */
  470. .llong .sys32_exit
  471. .llong .sys32_fork
  472. .llong .sys_read
  473. .llong .sys_write
  474. .llong .sys32_open /* 5 */
  475. .llong .sys_close
  476. .llong .sys32_waitpid
  477. .llong .sys32_creat
  478. .llong .sys_link
  479. .llong .sys_unlink       /* 10 */
  480. .llong .sys32_execve
  481. .llong .sys_chdir
  482. .llong .sys32_time
  483. .llong .sys32_mknod
  484. .llong .sys32_chmod /* 15 */
  485. .llong .sys_lchown
  486. .llong .sys_ni_syscall /* old break syscall holder */
  487. .llong .sys32_stat
  488. .llong .sys32_lseek
  489. .llong .sys_getpid              /* 20 */
  490. .llong .sys32_mount
  491. .llong .sys_oldumount
  492. .llong .sys_setuid
  493. .llong .sys_getuid
  494. .llong .ppc64_sys32_stime       /* 25 */
  495. .llong .sys32_ptrace
  496. .llong .sys_alarm
  497. .llong .sys32_fstat
  498. .llong .sys32_pause
  499. .llong .sys32_utime /* 30 */
  500. .llong .sys_ni_syscall /* old stty syscall holder */
  501. .llong .sys_ni_syscall /* old gtty syscall holder */
  502. .llong .sys32_access
  503. .llong .sys32_nice
  504. .llong .sys_ni_syscall /* 35 */ /* old ftime syscall holder */
  505. .llong .sys_sync
  506. .llong .sys32_kill
  507. .llong .sys_rename
  508. .llong .sys32_mkdir
  509. .llong .sys_rmdir /* 40 */
  510. .llong .sys_dup
  511. .llong .sys_pipe
  512. .llong .sys32_times
  513. .llong .sys_ni_syscall /* old prof syscall holder */
  514. .llong .sys_brk /* 45 */
  515. .llong .sys_setgid
  516. .llong .sys_getgid
  517. .llong .sys_signal
  518. .llong .sys_geteuid
  519. .llong .sys_getegid   /* 50 */
  520. .llong .sys_acct
  521. .llong .sys32_umount /* recycled never used phys() */
  522. .llong .sys_ni_syscall /* old lock syscall holder */
  523. .llong .sys32_ioctl
  524. .llong .sys32_fcntl /* 55 */
  525. .llong .sys_ni_syscall /* old mpx syscall holder */
  526. .llong .sys32_setpgid
  527. .llong .sys_ni_syscall /* old ulimit syscall holder */
  528. .llong .sys_olduname
  529. .llong .sys32_umask /* 60 */
  530. .llong .sys_chroot
  531. .llong .sys_ustat
  532. .llong .sys_dup2
  533. .llong .sys_getppid
  534. .llong .sys_getpgrp         /* 65 */
  535. .llong .sys_setsid
  536. .llong .sys32_sigaction
  537. .llong .sys_sgetmask
  538. .llong .sys32_ssetmask
  539. .llong .sys_setreuid         /* 70 */
  540. .llong .sys_setregid
  541. .llong .sys_sigsuspend
  542. .llong .sys32_sigpending
  543. .llong .sys32_sethostname
  544. .llong .sys32_setrlimit         /* 75 */
  545. .llong .sys32_old_getrlimit
  546. .llong .sys32_getrusage
  547. .llong .sys32_gettimeofday
  548. .llong .sys32_settimeofday
  549. .llong .sys32_getgroups         /* 80 */
  550. .llong .sys32_setgroups
  551. .llong .ppc32_select
  552. .llong .sys_symlink
  553. .llong .sys32_lstat
  554. .llong .sys32_readlink         /* 85 */
  555. .llong .sys_uselib
  556. .llong .sys32_swapon
  557. .llong .sys32_reboot
  558. .llong .old32_readdir
  559. .llong .sys32_mmap /* 90 */
  560. .llong .sys_munmap
  561. .llong .sys_truncate
  562. .llong .sys_ftruncate
  563. .llong .sys_fchmod
  564. .llong .sys_fchown              /* 95 */
  565. .llong .sys32_getpriority
  566. .llong .sys32_setpriority
  567. .llong .sys_ni_syscall /* old profil syscall holder */
  568. .llong .sys32_statfs
  569. .llong .sys32_fstatfs /* 100 */
  570. .llong .sys32_ioperm
  571. .llong .sys32_socketcall
  572. .llong .sys32_syslog
  573. .llong .sys32_setitimer
  574. .llong .sys32_getitimer /* 105 */
  575. .llong .sys32_newstat
  576. .llong .sys32_newlstat
  577. .llong .sys32_newfstat
  578. .llong .sys_uname
  579. .llong .sys32_iopl /* 110 */
  580. .llong .sys_vhangup
  581. .llong .sys_ni_syscall /* old 'idle' syscall */
  582. .llong .sys32_vm86
  583. .llong .sys32_wait4
  584. .llong .sys_swapoff /* 115 */
  585. .llong .sys32_sysinfo
  586. .llong .sys32_ipc
  587. .llong .sys_fsync
  588. .llong .ppc32_sigreturn
  589. .llong .sys32_clone /* 120 */
  590. .llong .sys32_setdomainname
  591. .llong .ppc64_newuname
  592. .llong .sys32_modify_ldt
  593. .llong .sys32_adjtimex
  594. .llong .sys_mprotect /* 125 */
  595. .llong .sys32_sigprocmask
  596. .llong .sys32_create_module
  597. .llong .sys32_init_module
  598. .llong .sys32_delete_module
  599. .llong .sys32_get_kernel_syms /* 130 */
  600. .llong .sys32_quotactl
  601. .llong .sys32_getpgid
  602. .llong .sys_fchdir
  603. .llong .sys32_bdflush
  604. .llong .sys32_sysfs /* 135 */
  605. .llong .sys32_personality
  606. .llong .sys_ni_syscall         /* for afs_syscall */
  607. .llong .sys_setfsuid
  608. .llong .sys_setfsgid
  609. .llong .sys_llseek         /* 140 */
  610.         .llong .sys32_getdents
  611. .llong .ppc32_select
  612. .llong .sys_flock
  613. .llong .sys32_msync
  614. .llong .sys32_readv /* 145 */
  615. .llong .sys32_writev
  616. .llong .sys32_getsid
  617. .llong .sys_fdatasync
  618. .llong .sys32_sysctl
  619. .llong .sys_mlock /* 150 */
  620. .llong .sys_munlock
  621. .llong .sys32_mlockall
  622. .llong .sys_munlockall
  623. .llong .sys32_sched_setparam
  624. .llong .sys32_sched_getparam /* 155 */
  625. .llong .sys32_sched_setscheduler
  626. .llong .sys32_sched_getscheduler
  627. .llong .sys_sched_yield
  628. .llong .sys32_sched_get_priority_max
  629. .llong .sys32_sched_get_priority_min  /* 160 */
  630. .llong .sys32_sched_rr_get_interval
  631. .llong .sys32_nanosleep
  632. .llong .sys32_mremap
  633. .llong .sys_setresuid
  634. .llong .sys_getresuid         /* 165 */
  635. .llong .sys32_query_module
  636. .llong .sys_poll
  637. .llong .sys32_nfsservctl
  638. .llong .sys_setresgid
  639. .llong .sys_getresgid         /* 170 */
  640. .llong .sys32_prctl
  641. .llong .ppc32_rt_sigreturn
  642. .llong .sys32_rt_sigaction
  643. .llong .sys32_rt_sigprocmask
  644. .llong .sys32_rt_sigpending     /* 175 */
  645. .llong .sys32_rt_sigtimedwait
  646. .llong .sys32_rt_sigqueueinfo
  647. .llong .sys32_rt_sigsuspend
  648. .llong .sys32_pread
  649. .llong .sys32_pwrite         /* 180 */
  650. .llong .sys_chown
  651. .llong .sys_getcwd
  652. .llong .sys_capget
  653. .llong .sys_capset
  654. .llong .sys32_sigaltstack         /* 185 */
  655. .llong .sys32_sendfile
  656. .llong .sys_ni_syscall /* streams1 */
  657. .llong .sys_ni_syscall /* streams2 */
  658. .llong .sys32_vfork
  659. .llong .sys32_getrlimit         /* 190 */
  660. .llong .sys_ni_syscall /* 191 */ /* Unused */
  661. .llong .sys_ni_syscall /* 192 - reserved - mmap2 */
  662. .llong .sys32_truncate64 /* 193 - truncate64 */
  663. .llong .sys32_ftruncate64 /* 194 - ftruncate64 */
  664. .llong .sys_stat64       /* 195 - stat64 */
  665. .llong .sys_lstat64      /* 196 - lstat64 */
  666. .llong .sys_fstat64 /* 197 - fstat64 */
  667. .llong .sys32_pciconfig_read   /* 198 */
  668. .llong .sys32_pciconfig_write   /* 199 */
  669. .llong .sys_pciconfig_iobase  /* 200 */
  670. .llong .sys_ni_syscall /* 201 - reserved - MacOnLinux - new */
  671. .llong .sys_getdents64 /* 202 */
  672. .llong .sys_pivot_root /* 203 */
  673. .llong .sys32_fcntl64 /* 204 */
  674. .llong .sys_madvise /* 205 */
  675. .llong .sys_mincore /* 206 */
  676. .llong .sys_gettid /* 207 */
  677. #if 0 /* Reserved syscalls */
  678. .llong .sys_tkill /* 208 */
  679. .llong .sys_setxattr
  680. .llong .sys_lsetxattr /* 210 */
  681. .llong .sys_fsetxattr
  682. .llong .sys_getxattr
  683. .llong .sys_lgetxattr
  684. .llong .sys_fgetxattr
  685. .llong .sys_listxattr /* 215 */
  686. .llong .sys_llistxattr
  687. .llong .sys_flistxattr
  688. .llong .sys_removexattr
  689. .llong .sys_lremovexattr
  690. .llong .sys_fremovexattr /* 220 */
  691. .llong .sys_futex
  692. #endif
  693. .llong .sys_perfmonctl   /* Put this here for now ... */
  694. .rept NR_syscalls-222
  695. .llong .sys_ni_syscall
  696. .endr
  697. #endif
  698. .balign 8
  699. _GLOBAL(sys_call_table)
  700. .llong .sys_ni_syscall /* 0  -  old "setup()" system call */
  701. .llong .sys_exit
  702. .llong .sys_fork
  703. .llong .sys_read
  704. .llong .sys_write
  705. .llong .sys_open /* 5 */
  706. .llong .sys_close
  707. .llong .sys_waitpid
  708. .llong .sys_creat
  709. .llong .sys_link
  710. .llong .sys_unlink /* 10 */
  711. .llong .sys_execve
  712. .llong .sys_chdir
  713. .llong .sys64_time
  714. .llong .sys_mknod
  715. .llong .sys_chmod /* 15 */
  716. .llong .sys_lchown
  717. .llong .sys_ni_syscall /* old break syscall holder */
  718. .llong .sys_stat
  719. .llong .sys_lseek
  720. .llong .sys_getpid /* 20 */
  721. .llong .sys_mount
  722. .llong .sys_oldumount
  723. .llong .sys_setuid
  724. .llong .sys_getuid
  725. .llong .ppc64_sys_stime /* 25 */
  726. .llong .sys_ptrace
  727. .llong .sys_alarm
  728. .llong .sys_fstat
  729. .llong .sys_pause
  730. .llong .sys_utime /* 30 */
  731. .llong .sys_ni_syscall /* old stty syscall holder */
  732. .llong .sys_ni_syscall /* old gtty syscall holder */
  733. .llong .sys_access
  734. .llong .sys_nice
  735. .llong .sys_ni_syscall /* 35 */ /* old ftime syscall holder */
  736. .llong .sys_sync
  737. .llong .sys_kill
  738. .llong .sys_rename
  739. .llong .sys_mkdir
  740. .llong .sys_rmdir /* 40 */
  741. .llong .sys_dup
  742. .llong .sys_pipe
  743. .llong .sys_times
  744. .llong .sys_ni_syscall /* old prof syscall holder */
  745. .llong .sys_brk /* 45 */
  746. .llong .sys_setgid
  747. .llong .sys_getgid
  748. .llong .sys_signal
  749. .llong .sys_geteuid
  750. .llong .sys_getegid /* 50 */
  751. .llong .sys_acct
  752. .llong .sys_umount /* recycled never used phys() */
  753. .llong .sys_ni_syscall /* old lock syscall holder */
  754. .llong .sys_ioctl
  755. .llong .sys_fcntl /* 55 */
  756. .llong .sys_ni_syscall /* old mpx syscall holder */
  757. .llong .sys_setpgid
  758. .llong .sys_ni_syscall /* old ulimit syscall holder */
  759. .llong .sys_olduname
  760. .llong .sys_umask /* 60 */
  761. .llong .sys_chroot
  762. .llong .sys_ustat
  763. .llong .sys_dup2
  764. .llong .sys_getppid
  765. .llong .sys_getpgrp /* 65 */
  766. .llong .sys_setsid
  767. .llong .sys_sigaction
  768. .llong .sys_sgetmask
  769. .llong .sys_ssetmask
  770. .llong .sys_setreuid /* 70 */
  771. .llong .sys_setregid
  772. .llong .sys_sigsuspend
  773. .llong .sys_sigpending
  774. .llong .sys_sethostname
  775. .llong .sys_setrlimit /* 75 */
  776. .llong .sys_old_getrlimit
  777. .llong .sys_getrusage
  778. .llong .sys_gettimeofday
  779. .llong .sys_settimeofday
  780. .llong .sys_getgroups /* 80 */
  781. .llong .sys_setgroups
  782. .llong .sys_select
  783. .llong .sys_symlink
  784. .llong .sys_lstat
  785. .llong .sys_readlink /* 85 */
  786. .llong .sys_uselib
  787. .llong .sys_swapon
  788. .llong .sys_reboot
  789. .llong .old_readdir
  790. .llong .sys_mmap /* 90 */
  791. .llong .sys_munmap
  792. .llong .sys_truncate
  793. .llong .sys_ftruncate
  794. .llong .sys_fchmod
  795. .llong .sys_fchown /* 95 */
  796. .llong .sys_getpriority
  797. .llong .sys_setpriority
  798. .llong .sys_ni_syscall /* old profil syscall holder */
  799. .llong .sys_statfs
  800. .llong .sys_fstatfs /* 100 */
  801. .llong .sys_ioperm
  802. .llong .sys_socketcall
  803. .llong .sys_syslog
  804. .llong .sys_setitimer
  805. .llong .sys_getitimer /* 105 */
  806. .llong .sys_newstat
  807. .llong .sys_newlstat
  808. .llong .sys_newfstat
  809. .llong .sys_uname
  810. .llong .sys_iopl /* 110 */
  811. .llong .sys_vhangup
  812. .llong .sys_ni_syscall /* old 'idle' syscall */
  813. .llong .sys_vm86
  814. .llong .sys_wait4
  815. .llong .sys_swapoff /* 115 */
  816. .llong .sys_sysinfo
  817. .llong .sys_ipc
  818. .llong .sys_fsync
  819. .llong .ppc64_sigreturn
  820. .llong .sys_clone /* 120 */
  821. .llong .sys_setdomainname
  822. .llong .ppc64_newuname
  823. .llong .sys_modify_ldt
  824. .llong .sys_adjtimex
  825. .llong .sys_mprotect /* 125 */
  826. .llong .sys_sigprocmask
  827. .llong .sys_create_module
  828. .llong .sys_init_module
  829. .llong .sys_delete_module
  830. .llong .sys_get_kernel_syms /* 130 */
  831. .llong .sys_quotactl
  832. .llong .sys_getpgid
  833. .llong .sys_fchdir
  834. .llong .sys_bdflush
  835. .llong .sys_sysfs /* 135 */
  836. .llong .sys_personality
  837. .llong .sys_ni_syscall         /* for afs_syscall */
  838. .llong .sys_setfsuid
  839. .llong .sys_setfsgid
  840. .llong .sys_llseek         /* 140 */
  841.         .llong .sys_getdents
  842. .llong .sys_select
  843. .llong .sys_flock
  844. .llong .sys_msync
  845. .llong .sys_readv /* 145 */
  846. .llong .sys_writev
  847. .llong .sys_getsid
  848. .llong .sys_fdatasync
  849. .llong .sys_sysctl
  850. .llong .sys_mlock /* 150 */
  851. .llong .sys_munlock
  852. .llong .sys_mlockall
  853. .llong .sys_munlockall
  854. .llong .sys_sched_setparam
  855. .llong .sys_sched_getparam /* 155 */
  856. .llong .sys_sched_setscheduler
  857. .llong .sys_sched_getscheduler
  858. .llong .sys_sched_yield
  859. .llong .sys_sched_get_priority_max
  860. .llong .sys_sched_get_priority_min  /* 160 */
  861. .llong .sys_sched_rr_get_interval
  862. .llong .sys_nanosleep
  863. .llong .sys_mremap
  864. .llong .sys_setresuid
  865. .llong .sys_getresuid         /* 165 */
  866. .llong .sys_query_module
  867. .llong .sys_poll
  868. .llong .sys_nfsservctl
  869. .llong .sys_setresgid
  870. .llong .sys_getresgid         /* 170 */
  871. .llong .sys_prctl
  872. .llong .ppc64_rt_sigreturn
  873. .llong .sys_rt_sigaction
  874. .llong .sys_rt_sigprocmask
  875. .llong .sys_rt_sigpending /* 175 */
  876. .llong .sys_rt_sigtimedwait
  877. .llong .sys_rt_sigqueueinfo
  878. .llong .sys_rt_sigsuspend
  879. .llong .sys_pread
  880. .llong .sys_pwrite         /* 180 */
  881. .llong .sys_chown
  882. .llong .sys_getcwd
  883. .llong .sys_capget
  884. .llong .sys_capset
  885. .llong .sys_sigaltstack         /* 185 */
  886. .llong .sys_sendfile
  887. .llong .sys_ni_syscall /* streams1 */
  888. .llong .sys_ni_syscall /* streams2 */
  889. .llong .sys_vfork
  890. .llong .sys_getrlimit         /* 190 */
  891. .llong .sys_ni_syscall /* 191 */ /* Unused */
  892. .llong .sys_ni_syscall /* 192 - reserved - mmap2 */
  893. .llong .sys_ni_syscall /* 193 - reserved - truncate64 */
  894. .llong .sys_ni_syscall /* 194 - reserved - ftruncate64 */
  895. .llong .sys_ni_syscall /* 195 - reserved - stat64 */
  896. .llong .sys_ni_syscall /* 196 - reserved - lstat64 */
  897. .llong .sys_ni_syscall /* 197 - reserved - fstat64 */
  898. .llong .sys_pciconfig_read /* 198 */
  899. .llong .sys_pciconfig_write  /* 199 */
  900. .llong .sys_pciconfig_iobase  /* 200 */
  901. .llong .sys_ni_syscall /* 201 - reserved - MacOnLinux - new */
  902. .llong .sys_getdents64 /* 202 */
  903. .llong .sys_pivot_root /* 203 */
  904. .llong .sys_ni_syscall /* 204 */
  905. .llong .sys_madvise /* 205 */
  906. .llong .sys_mincore /* 206 */
  907. .llong .sys_gettid /* 207 */
  908. #if 0 /* Reserved syscalls */
  909. .llong .sys_tkill /* 208 */
  910. .llong .sys_setxattr
  911. .llong .sys_lsetxattr /* 210 */
  912. .llong .sys_fsetxattr
  913. .llong .sys_getxattr
  914. .llong .sys_lgetxattr
  915. .llong .sys_fgetxattr
  916. .llong .sys_listxattr /* 215 */
  917. .llong .sys_llistxattr
  918. .llong .sys_flistxattr
  919. .llong .sys_removexattr
  920. .llong .sys_lremovexattr
  921. .llong .sys_fremovexattr /* 220 */
  922. .llong .sys_futex
  923. #endif
  924. .llong .sys_perfmonctl   /* Put this here for now ... */
  925. .rept NR_syscalls-222
  926. .llong .sys_ni_syscall
  927. .endr