ttable.S
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:11k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id: ttable.S,v 1.36 2001/11/28 23:32:16 davem Exp $
  2.  * ttable.S: Sparc V9 Trap Table(s) with SpitFire/Cheetah extensions.
  3.  *
  4.  * Copyright (C) 1996, 2001 David S. Miller (davem@caip.rutgers.edu)
  5.  */
  6. #include <linux/config.h>
  7. .globl sparc64_ttable_tl0, sparc64_ttable_tl1
  8. .globl tl0_fecc, tl1_fecc
  9. .globl tl0_cee, tl1_cee
  10. .globl tl0_iae, tl1_iae
  11. .globl tl0_dae, tl1_dae
  12. sparc64_ttable_tl0:
  13. tl0_resv000: BOOT_KERNEL BTRAP(0x1) BTRAP(0x2) BTRAP(0x3)
  14. tl0_resv004: BTRAP(0x4)  BTRAP(0x5) BTRAP(0x6) BTRAP(0x7)
  15. tl0_iax: membar #Sync
  16. TRAP_NOSAVE_7INSNS(__do_instruction_access_exception)
  17. tl0_resv009: BTRAP(0x9)
  18. tl0_iae: TRAP(do_iae)
  19. tl0_resv00b: BTRAP(0xb) BTRAP(0xc) BTRAP(0xd) BTRAP(0xe) BTRAP(0xf)
  20. tl0_ill: membar #Sync
  21. TRAP_7INSNS(do_illegal_instruction)
  22. tl0_privop: TRAP(do_privop)
  23. tl0_resv012: BTRAP(0x12) BTRAP(0x13) BTRAP(0x14) BTRAP(0x15) BTRAP(0x16) BTRAP(0x17)
  24. tl0_resv018: BTRAP(0x18) BTRAP(0x19) BTRAP(0x1a) BTRAP(0x1b) BTRAP(0x1c) BTRAP(0x1d)
  25. tl0_resv01e: BTRAP(0x1e) BTRAP(0x1f)
  26. tl0_fpdis: TRAP_NOSAVE(do_fpdis)
  27. tl0_fpieee: TRAP_SAVEFPU(do_fpieee)
  28. tl0_fpother: TRAP_NOSAVE(do_fpother_check_fitos)
  29. tl0_tof: TRAP(do_tof)
  30. tl0_cwin: CLEAN_WINDOW
  31. tl0_div0: TRAP(do_div0)
  32. tl0_resv029: BTRAP(0x29) BTRAP(0x2a) BTRAP(0x2b) BTRAP(0x2c) BTRAP(0x2d) BTRAP(0x2e)
  33. tl0_resv02f: BTRAP(0x2f)
  34. tl0_dax: TRAP_NOSAVE(__do_data_access_exception)
  35. tl0_resv031: BTRAP(0x31)
  36. tl0_dae: TRAP(do_dae)
  37. tl0_resv033: BTRAP(0x33)
  38. tl0_mna: TRAP_NOSAVE(do_mna)
  39. tl0_lddfmna: TRAP_NOSAVE(do_lddfmna)
  40. tl0_stdfmna: TRAP_NOSAVE(do_stdfmna)
  41. tl0_privact: TRAP_NOSAVE(__do_privact)
  42. tl0_resv038: BTRAP(0x38) BTRAP(0x39) BTRAP(0x3a) BTRAP(0x3b) BTRAP(0x3c) BTRAP(0x3d)
  43. tl0_resv03e: BTRAP(0x3e) BTRAP(0x3f) BTRAP(0x40)
  44. tl0_irq1: TRAP_IRQ(handler_irq, 1)  TRAP_IRQ(handler_irq, 2)
  45. tl0_irq3: TRAP_IRQ(handler_irq, 3)  TRAP_IRQ(handler_irq, 4)
  46. tl0_irq5: TRAP_IRQ(handler_irq, 5)  TRAP_IRQ(handler_irq, 6)
  47. tl0_irq7: TRAP_IRQ(handler_irq, 7)  TRAP_IRQ(handler_irq, 8)
  48. tl0_irq9: TRAP_IRQ(handler_irq, 9)  TRAP_IRQ(handler_irq, 10)
  49. tl0_irq11: TRAP_IRQ(handler_irq, 11) TRAP_IRQ(handler_irq, 12)
  50. tl0_irq13: TRAP_IRQ(handler_irq, 13)
  51. #ifndef CONFIG_SMP
  52. tl0_irq14: TRAP_IRQ(handler_irq, 14)
  53. #else
  54. tl0_irq14: TICK_SMP_IRQ
  55. #endif
  56. tl0_irq15: TRAP_IRQ(handler_irq, 15)
  57. tl0_resv050: BTRAP(0x50) BTRAP(0x51) BTRAP(0x52) BTRAP(0x53) BTRAP(0x54) BTRAP(0x55)
  58. tl0_resv056: BTRAP(0x56) BTRAP(0x57) BTRAP(0x58) BTRAP(0x59) BTRAP(0x5a) BTRAP(0x5b)
  59. tl0_resv05c: BTRAP(0x5c) BTRAP(0x5d) BTRAP(0x5e) BTRAP(0x5f)
  60. tl0_ivec: TRAP_IVEC
  61. tl0_paw: TRAP(do_paw)
  62. tl0_vaw: TRAP(do_vaw)
  63. tl0_cee: TRAP_NOSAVE(cee_trap)
  64. tl0_iamiss:
  65. #include "itlb_base.S"
  66. tl0_damiss:
  67. #include "dtlb_base.S"
  68. tl0_daprot:
  69. #include "dtlb_prot.S"
  70. tl0_fecc: BTRAP(0x70) /* Fast-ECC on Cheetah */
  71. tl0_resv071: BTRAP(0x71) BTRAP(0x72) BTRAP(0x73) BTRAP(0x74) BTRAP(0x75)
  72. tl0_resv076: BTRAP(0x76) BTRAP(0x77) BTRAP(0x78) BTRAP(0x79) BTRAP(0x7a) BTRAP(0x7b)
  73. tl0_resv07c: BTRAP(0x7c) BTRAP(0x7d) BTRAP(0x7e) BTRAP(0x7f)
  74. tl0_s0n: SPILL_0_NORMAL
  75. tl0_s1n: SPILL_1_NORMAL
  76. tl0_s2n: SPILL_2_NORMAL
  77. tl0_s3n: SPILL_3_NORMAL
  78. tl0_s4n: SPILL_4_NORMAL
  79. tl0_s5n: SPILL_5_NORMAL
  80. tl0_s6n: SPILL_6_NORMAL
  81. tl0_s7n: SPILL_7_NORMAL
  82. tl0_s0o: SPILL_0_OTHER
  83. tl0_s1o: SPILL_1_OTHER
  84. tl0_s2o: SPILL_2_OTHER
  85. tl0_s3o: SPILL_3_OTHER
  86. tl0_s4o: SPILL_4_OTHER
  87. tl0_s5o: SPILL_5_OTHER
  88. tl0_s6o: SPILL_6_OTHER
  89. tl0_s7o: SPILL_7_OTHER
  90. tl0_f0n: FILL_0_NORMAL
  91. tl0_f1n: FILL_1_NORMAL
  92. tl0_f2n: FILL_2_NORMAL
  93. tl0_f3n: FILL_3_NORMAL
  94. tl0_f4n: FILL_4_NORMAL
  95. tl0_f5n: FILL_5_NORMAL
  96. tl0_f6n: FILL_6_NORMAL
  97. tl0_f7n: FILL_7_NORMAL
  98. tl0_f0o: FILL_0_OTHER
  99. tl0_f1o: FILL_1_OTHER
  100. tl0_f2o: FILL_2_OTHER
  101. tl0_f3o: FILL_3_OTHER
  102. tl0_f4o: FILL_4_OTHER
  103. tl0_f5o: FILL_5_OTHER
  104. tl0_f6o: FILL_6_OTHER
  105. tl0_f7o: FILL_7_OTHER
  106. tl0_sunos: SUNOS_SYSCALL_TRAP
  107. tl0_bkpt: BREAKPOINT_TRAP
  108. tl0_divz: TRAP(do_div0)
  109. tl0_flushw: FLUSH_WINDOW_TRAP
  110. tl0_resv104: BTRAP(0x104) BTRAP(0x105) BTRAP(0x106) BTRAP(0x107)
  111. .globl tl0_solaris
  112. tl0_solaris: SOLARIS_SYSCALL_TRAP
  113. tl0_netbsd: NETBSD_SYSCALL_TRAP
  114. tl0_resv10a: BTRAP(0x10a) BTRAP(0x10b) BTRAP(0x10c) BTRAP(0x10d) BTRAP(0x10e)
  115. tl0_resv10f: BTRAP(0x10f)
  116. tl0_linux32: LINUX_32BIT_SYSCALL_TRAP
  117. tl0_oldlinux64: LINUX_64BIT_SYSCALL_TRAP
  118. tl0_resv112: TRAP_UTRAP(UT_TRAP_INSTRUCTION_18,0x112) TRAP_UTRAP(UT_TRAP_INSTRUCTION_19,0x113)
  119. tl0_resv114: TRAP_UTRAP(UT_TRAP_INSTRUCTION_20,0x114) TRAP_UTRAP(UT_TRAP_INSTRUCTION_21,0x115)
  120. tl0_resv116: TRAP_UTRAP(UT_TRAP_INSTRUCTION_22,0x116) TRAP_UTRAP(UT_TRAP_INSTRUCTION_23,0x117)
  121. tl0_resv118: TRAP_UTRAP(UT_TRAP_INSTRUCTION_24,0x118) TRAP_UTRAP(UT_TRAP_INSTRUCTION_25,0x119)
  122. tl0_resv11a: TRAP_UTRAP(UT_TRAP_INSTRUCTION_26,0x11a) TRAP_UTRAP(UT_TRAP_INSTRUCTION_27,0x11b)
  123. tl0_resv11c: TRAP_UTRAP(UT_TRAP_INSTRUCTION_28,0x11c) TRAP_UTRAP(UT_TRAP_INSTRUCTION_29,0x11d)
  124. tl0_resv11e: TRAP_UTRAP(UT_TRAP_INSTRUCTION_30,0x11e) TRAP_UTRAP(UT_TRAP_INSTRUCTION_31,0x11f)
  125. tl0_getcc: GETCC_TRAP
  126. tl0_setcc: SETCC_TRAP
  127. tl0_getpsr: TRAP(do_getpsr)
  128. tl0_resv123: BTRAP(0x123) BTRAP(0x124) BTRAP(0x125) BTRAP(0x126)
  129. tl0_solindir: INDIRECT_SOLARIS_SYSCALL(156)
  130. tl0_resv128: BTRAP(0x128) BTRAP(0x129) BTRAP(0x12a) BTRAP(0x12b) BTRAP(0x12c)
  131. tl0_resv12d: BTRAP(0x12d) BTRAP(0x12e) BTRAP(0x12f) BTRAP(0x130) BTRAP(0x131)
  132. tl0_resv132: BTRAP(0x132) BTRAP(0x133) BTRAP(0x134) BTRAP(0x135) BTRAP(0x136)
  133. tl0_resv137: BTRAP(0x137) BTRAP(0x138) BTRAP(0x139) BTRAP(0x13a) BTRAP(0x13b)
  134. tl0_resv13c: BTRAP(0x13c) BTRAP(0x13d) BTRAP(0x13e) BTRAP(0x13f) BTRAP(0x140)
  135. tl0_resv141: BTRAP(0x141) BTRAP(0x142) BTRAP(0x143) BTRAP(0x144) BTRAP(0x145)
  136. tl0_resv146: BTRAP(0x146) BTRAP(0x147) BTRAP(0x148) BTRAP(0x149) BTRAP(0x14a)
  137. tl0_resv14b: BTRAP(0x14b) BTRAP(0x14c) BTRAP(0x14d) BTRAP(0x14e) BTRAP(0x14f)
  138. tl0_resv150: BTRAP(0x150) BTRAP(0x151) BTRAP(0x152) BTRAP(0x153) BTRAP(0x154)
  139. tl0_resv155: BTRAP(0x155) BTRAP(0x156) BTRAP(0x157) BTRAP(0x158) BTRAP(0x159)
  140. tl0_resv15a: BTRAP(0x15a) BTRAP(0x15b) BTRAP(0x15c) BTRAP(0x15d) BTRAP(0x15e)
  141. tl0_resv15f: BTRAP(0x15f) BTRAP(0x160) BTRAP(0x161) BTRAP(0x162) BTRAP(0x163)
  142. tl0_resv164: BTRAP(0x164) BTRAP(0x165) BTRAP(0x166) BTRAP(0x167) BTRAP(0x168)
  143. tl0_resv169: BTRAP(0x169) BTRAP(0x16a) BTRAP(0x16b) BTRAP(0x16c)
  144. tl0_linux64: LINUX_64BIT_SYSCALL_TRAP
  145. tl0_gsctx: TRAP(sparc64_get_context) TRAP(sparc64_set_context)
  146. tl0_resv170: BTRAP(0x170) BTRAP(0x171) BTRAP(0x172)
  147. tl0_resv173: BTRAP(0x173) BTRAP(0x174) BTRAP(0x175) BTRAP(0x176) BTRAP(0x177)
  148. tl0_resv178: BTRAP(0x178) BTRAP(0x179) BTRAP(0x17a) BTRAP(0x17b) BTRAP(0x17c)
  149. tl0_resv17d: BTRAP(0x17d) BTRAP(0x17e) BTRAP(0x17f)
  150. #define BTRAPS(x) BTRAP(x) BTRAP(x+1) BTRAP(x+2) BTRAP(x+3) BTRAP(x+4) BTRAP(x+5) BTRAP(x+6) BTRAP(x+7)
  151. tl0_resv180: BTRAPS(0x180) BTRAPS(0x188)
  152. tl0_resv190: BTRAPS(0x190) BTRAPS(0x198)
  153. tl0_resv1a0: BTRAPS(0x1a0) BTRAPS(0x1a8)
  154. tl0_resv1b0: BTRAPS(0x1b0) BTRAPS(0x1b8)
  155. tl0_resv1c0: BTRAPS(0x1c0) BTRAPS(0x1c8)
  156. tl0_resv1d0: BTRAPS(0x1d0) BTRAPS(0x1d8)
  157. tl0_resv1e0: BTRAPS(0x1e0) BTRAPS(0x1e8)
  158. tl0_resv1f0: BTRAPS(0x1f0) BTRAPS(0x1f8)
  159. sparc64_ttable_tl1:
  160. tl1_resv000: BOOT_KERNEL    BTRAPTL1(0x1) BTRAPTL1(0x2) BTRAPTL1(0x3)
  161. tl1_resv004: BTRAPTL1(0x4)  BTRAPTL1(0x5) BTRAPTL1(0x6) BTRAPTL1(0x7)
  162. tl1_iax: TRAP_NOSAVE(__do_instruction_access_exception_tl1)
  163. tl1_resv009: BTRAPTL1(0x9)
  164. tl1_iae: TRAPTL1(do_iae_tl1)
  165. tl1_resv00b: BTRAPTL1(0xb) BTRAPTL1(0xc) BTRAPTL1(0xd) BTRAPTL1(0xe) BTRAPTL1(0xf)
  166. tl1_ill: TRAPTL1(do_ill_tl1)
  167. tl1_privop: BTRAPTL1(0x11)
  168. tl1_resv012: BTRAPTL1(0x12) BTRAPTL1(0x13) BTRAPTL1(0x14) BTRAPTL1(0x15)
  169. tl1_resv016: BTRAPTL1(0x16) BTRAPTL1(0x17) BTRAPTL1(0x18) BTRAPTL1(0x19)
  170. tl1_resv01a: BTRAPTL1(0x1a) BTRAPTL1(0x1b) BTRAPTL1(0x1c) BTRAPTL1(0x1d)
  171. tl1_resv01e: BTRAPTL1(0x1e) BTRAPTL1(0x1f)
  172. tl1_fpdis: TRAP_NOSAVE(do_fpdis)
  173. tl1_fpieee: TRAPTL1(do_fpieee_tl1)
  174. tl1_fpother: TRAPTL1(do_fpother_tl1)
  175. tl1_tof: TRAPTL1(do_tof_tl1)
  176. tl1_cwin: CLEAN_WINDOW
  177. tl1_div0: TRAPTL1(do_div0_tl1)
  178. tl1_resv029: BTRAPTL1(0x29) BTRAPTL1(0x2a) BTRAPTL1(0x2b) BTRAPTL1(0x2c)
  179. tl1_resv02d: BTRAPTL1(0x2d) BTRAPTL1(0x2e) BTRAPTL1(0x2f)
  180. tl1_dax: TRAP_NOSAVE(__do_data_access_exception_tl1)
  181. tl1_resv031: BTRAPTL1(0x31)
  182. tl1_dae: TRAPTL1(do_dae_tl1)
  183. tl1_resv033: BTRAPTL1(0x33)
  184. tl1_mna: TRAP_NOSAVE(do_mna)
  185. tl1_lddfmna: TRAPTL1(do_lddfmna_tl1)
  186. tl1_stdfmna: TRAPTL1(do_stdfmna_tl1)
  187. tl1_privact: BTRAPTL1(0x37)
  188. tl1_resv038: BTRAPTL1(0x38) BTRAPTL1(0x39) BTRAPTL1(0x3a) BTRAPTL1(0x3b)
  189. tl1_resv03c: BTRAPTL1(0x3c) BTRAPTL1(0x3d) BTRAPTL1(0x3e) BTRAPTL1(0x3f)
  190. tl1_resv040: BTRAPTL1(0x40)
  191. tl1_irq1: TRAP_IRQ(do_irq_tl1, 1)  TRAP_IRQ(do_irq_tl1, 2)  TRAP_IRQ(do_irq_tl1, 3)
  192. tl1_irq4: TRAP_IRQ(do_irq_tl1, 4)  TRAP_IRQ(do_irq_tl1, 5)  TRAP_IRQ(do_irq_tl1, 6)
  193. tl1_irq7: TRAP_IRQ(do_irq_tl1, 7)  TRAP_IRQ(do_irq_tl1, 8)  TRAP_IRQ(do_irq_tl1, 9)
  194. tl1_irq10: TRAP_IRQ(do_irq_tl1, 10) TRAP_IRQ(do_irq_tl1, 11)
  195. tl1_irq12: TRAP_IRQ(do_irq_tl1, 12) TRAP_IRQ(do_irq_tl1, 13)
  196. tl1_irq14: TRAP_IRQ(do_irq_tl1, 14) TRAP_IRQ(do_irq_tl1, 15)
  197. tl1_resv050: BTRAPTL1(0x50) BTRAPTL1(0x51) BTRAPTL1(0x52) BTRAPTL1(0x53)
  198. tl1_resv054: BTRAPTL1(0x54) BTRAPTL1(0x55) BTRAPTL1(0x56) BTRAPTL1(0x57)
  199. tl1_resv058: BTRAPTL1(0x58) BTRAPTL1(0x59) BTRAPTL1(0x5a) BTRAPTL1(0x5b)
  200. tl1_resv05c: BTRAPTL1(0x5c) BTRAPTL1(0x5d) BTRAPTL1(0x5e) BTRAPTL1(0x5f)
  201. tl1_ivec: TRAP_IVEC
  202. tl1_paw: TRAPTL1(do_paw_tl1)
  203. tl1_vaw: TRAPTL1(do_vaw_tl1)
  204. /* The grotty trick to save %g1 into current->thread.kernel_cntd0
  205.  * is because when we take this trap we could be interrupting trap
  206.  * code already using the trap alternate global registers.  It is
  207.  * better to corrupt a performance counter than corrupt trap register
  208.  * state.  We cross our fingers and pray that this store/load does
  209.  * not cause yet another CEE trap.
  210.  */
  211. tl1_cee: membar #Sync
  212. stx %g1, [%g6 + AOFF_task_thread + AOFF_thread_kernel_cntd0]
  213. ldxa [%g0] ASI_AFSR, %g1
  214. membar #Sync
  215. stxa %g1, [%g0] ASI_AFSR
  216. membar #Sync
  217. ldx [%g6 + AOFF_task_thread + AOFF_thread_kernel_cntd0], %g1
  218. retry
  219. tl1_iamiss: BTRAPTL1(0x64) BTRAPTL1(0x65) BTRAPTL1(0x66) BTRAPTL1(0x67)
  220. tl1_damiss:
  221. #include "dtlb_backend.S"
  222. tl1_daprot:
  223. #include "dtlb_prot.S"
  224. tl1_fecc: BTRAP(0x70) /* Fast-ECC on Cheetah */
  225. tl1_resc071: BTRAPTL1(0x71) BTRAPTL1(0x72) BTRAPTL1(0x73)
  226. tl1_resv074: BTRAPTL1(0x74) BTRAPTL1(0x75) BTRAPTL1(0x76) BTRAPTL1(0x77)
  227. tl1_resv078: BTRAPTL1(0x78) BTRAPTL1(0x79) BTRAPTL1(0x7a) BTRAPTL1(0x7b)
  228. tl1_resv07c: BTRAPTL1(0x7c) BTRAPTL1(0x7d) BTRAPTL1(0x7e) BTRAPTL1(0x7f)
  229. tl1_s0n: SPILL_0_NORMAL
  230. tl1_s1n: SPILL_1_NORMAL
  231. tl1_s2n: SPILL_2_NORMAL
  232. tl1_s3n: SPILL_3_NORMAL
  233. tl1_s4n: SPILL_4_NORMAL
  234. tl1_s5n: SPILL_5_NORMAL
  235. tl1_s6n: SPILL_6_NORMAL
  236. tl1_s7n: SPILL_7_NORMAL
  237. tl1_s0o: SPILL_0_OTHER
  238. tl1_s1o: SPILL_1_OTHER
  239. tl1_s2o: SPILL_2_OTHER
  240. tl1_s3o: SPILL_3_OTHER
  241. tl1_s4o: SPILL_4_OTHER
  242. tl1_s5o: SPILL_5_OTHER
  243. tl1_s6o: SPILL_6_OTHER
  244. tl1_s7o: SPILL_7_OTHER
  245. tl1_f0n: FILL_0_NORMAL
  246. tl1_f1n: FILL_1_NORMAL
  247. tl1_f2n: FILL_2_NORMAL
  248. tl1_f3n: FILL_3_NORMAL
  249. tl1_f4n: FILL_4_NORMAL
  250. tl1_f5n: FILL_5_NORMAL
  251. tl1_f6n: FILL_6_NORMAL
  252. tl1_f7n: FILL_7_NORMAL
  253. tl1_f0o: FILL_0_OTHER
  254. tl1_f1o: FILL_1_OTHER
  255. tl1_f2o: FILL_2_OTHER
  256. tl1_f3o: FILL_3_OTHER
  257. tl1_f4o: FILL_4_OTHER
  258. tl1_f5o: FILL_5_OTHER
  259. tl1_f6o: FILL_6_OTHER
  260. tl1_f7o: FILL_7_OTHER