ex.S 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. /*
  2. * arch/sh/kernel/cpu/sh4/ex.S
  3. *
  4. * The SH-4 exception vector table.
  5. * Copyright (C) 1999, 2000, 2002 Niibe Yutaka
  6. * Copyright (C) 2003 Paul Mundt
  7. *
  8. * This file is subject to the terms and conditions of the GNU General Public
  9. * License. See the file "COPYING" in the main directory of this archive
  10. * for more details.
  11. *
  12. */
  13. #include <linux/linkage.h>
  14. #include <linux/config.h>
  15. .align 2
  16. .data
  17. ENTRY(exception_handling_table)
  18. .long exception_error /* 000 */
  19. .long exception_error
  20. #if defined(CONFIG_MMU)
  21. .long tlb_miss_load /* 040 */
  22. .long tlb_miss_store
  23. .long initial_page_write
  24. .long tlb_protection_violation_load
  25. .long tlb_protection_violation_store
  26. .long address_error_load
  27. .long address_error_store /* 100 */
  28. #else
  29. .long exception_error ! tlb miss load /* 040 */
  30. .long exception_error ! tlb miss store
  31. .long exception_error ! initial page write
  32. .long exception_error ! tlb prot violation load
  33. .long exception_error ! tlb prot violation store
  34. .long exception_error ! address error load
  35. .long exception_error ! address error store /* 100 */
  36. #endif
  37. #if defined(CONFIG_SH_FPU)
  38. .long do_fpu_error /* 120 */
  39. #else
  40. .long exception_error /* 120 */
  41. #endif
  42. .long exception_error /* 140 */
  43. .long system_call ! Unconditional Trap /* 160 */
  44. .long exception_error ! reserved_instruction (filled by trap_init) /* 180 */
  45. .long exception_error ! illegal_slot_instruction (filled by trap_init) /*1A0*/
  46. ENTRY(nmi_slot)
  47. #if defined (CONFIG_KGDB_NMI)
  48. .long debug_enter /* 1C0 */ ! Allow trap to debugger
  49. #else
  50. .long exception_none /* 1C0 */ ! Not implemented yet
  51. #endif
  52. ENTRY(user_break_point_trap)
  53. .long break_point_trap /* 1E0 */
  54. ENTRY(interrupt_table)
  55. ! external hardware
  56. .long do_IRQ ! 0000 /* 200 */
  57. .long do_IRQ ! 0001
  58. .long do_IRQ ! 0010
  59. .long do_IRQ ! 0011
  60. .long do_IRQ ! 0100
  61. .long do_IRQ ! 0101
  62. .long do_IRQ ! 0110
  63. .long do_IRQ ! 0111
  64. .long do_IRQ ! 1000 /* 300 */
  65. .long do_IRQ ! 1001
  66. .long do_IRQ ! 1010
  67. .long do_IRQ ! 1011
  68. .long do_IRQ ! 1100
  69. .long do_IRQ ! 1101
  70. .long do_IRQ ! 1110
  71. .long exception_error
  72. ! Internal hardware
  73. .long do_IRQ ! TMU0 tuni0 /* 400 */
  74. .long do_IRQ ! TMU1 tuni1
  75. .long do_IRQ ! TMU2 tuni2
  76. .long do_IRQ ! ticpi2
  77. #if defined(CONFIG_CPU_SUBTYPE_SH7760)
  78. .long exception_error
  79. .long exception_error
  80. .long exception_error
  81. .long exception_error
  82. .long exception_error /* 500 */
  83. .long exception_error
  84. .long exception_error
  85. #else
  86. .long do_IRQ ! RTC ati
  87. .long do_IRQ ! pri
  88. .long do_IRQ ! cui
  89. .long do_IRQ ! SCI eri
  90. .long do_IRQ ! rxi /* 500 */
  91. .long do_IRQ ! txi
  92. .long do_IRQ ! tei
  93. #endif
  94. .long do_IRQ ! WDT iti /* 560 */
  95. .long do_IRQ ! REF rcmi
  96. .long do_IRQ ! rovi
  97. .long do_IRQ
  98. .long do_IRQ /* 5E0 */
  99. .long do_IRQ ! 32 Hitachi UDI /* 600 */
  100. .long do_IRQ ! 33 GPIO
  101. .long do_IRQ ! 34 DMAC dmte0
  102. .long do_IRQ ! 35 dmte1
  103. .long do_IRQ ! 36 dmte2
  104. .long do_IRQ ! 37 dmte3
  105. .long do_IRQ ! 38 dmae
  106. .long exception_error ! 39 /* 6E0 */
  107. #if defined(CONFIG_CPU_SUBTYPE_SH7760)
  108. .long exception_error /* 700 */
  109. .long exception_error
  110. .long exception_error
  111. .long exception_error /* 760 */
  112. #else
  113. .long do_IRQ ! 40 SCIF eri /* 700 */
  114. .long do_IRQ ! 41 rxi
  115. .long do_IRQ ! 42 bri
  116. .long do_IRQ ! 43 txi
  117. #endif
  118. #if CONFIG_NR_ONCHIP_DMA_CHANNELS == 8
  119. .long do_IRQ ! 44 DMAC dmte4 /* 780 */
  120. .long do_IRQ ! 45 dmte5
  121. .long do_IRQ ! 46 dmte6
  122. .long do_IRQ ! 47 dmte7 /* 7E0 */
  123. #else
  124. .long exception_error ! 44 /* 780 */
  125. .long exception_error ! 45
  126. .long exception_error ! 46
  127. .long exception_error ! 47
  128. #endif
  129. #if defined(CONFIG_SH_FPU)
  130. .long do_fpu_state_restore ! 48 /* 800 */
  131. .long do_fpu_state_restore ! 49 /* 820 */
  132. #else
  133. .long exception_error
  134. .long exception_error
  135. #endif
  136. #if defined(CONFIG_CPU_SUBTYPE_SH7751)
  137. .long exception_error /* 840 */
  138. .long exception_error
  139. .long exception_error
  140. .long exception_error
  141. .long exception_error
  142. .long exception_error
  143. .long exception_error /* 900 */
  144. .long exception_error
  145. .long exception_error
  146. .long exception_error
  147. .long exception_error
  148. .long exception_error
  149. .long exception_error
  150. .long exception_error
  151. .long do_IRQ ! PCI serr /* A00 */
  152. .long do_IRQ ! dma3
  153. .long do_IRQ ! dma2
  154. .long do_IRQ ! dma1
  155. .long do_IRQ ! dma0
  156. .long do_IRQ ! pwon
  157. .long do_IRQ ! pwdwn
  158. .long do_IRQ ! err
  159. .long do_IRQ ! TMU3 tuni3 /* B00 */
  160. .long exception_error
  161. .long exception_error
  162. .long exception_error
  163. .long do_IRQ ! TMU4 tuni4 /* B80 */
  164. #elif defined(CONFIG_CPU_SUBTYPE_SH7760)
  165. .long do_IRQ ! IRQ irq6 /* 840 */
  166. .long do_IRQ ! irq7
  167. .long do_IRQ ! SCIF eri0
  168. .long do_IRQ ! rxi0
  169. .long do_IRQ ! bri0
  170. .long do_IRQ ! txi0
  171. .long do_IRQ ! HCAN2 cani0 /* 900 */
  172. .long do_IRQ ! cani1
  173. .long do_IRQ ! SSI ssii0
  174. .long do_IRQ ! ssii1
  175. .long do_IRQ ! HAC haci0
  176. .long do_IRQ ! haci1
  177. .long do_IRQ ! IIC iici0
  178. .long do_IRQ ! iici1
  179. .long do_IRQ ! USB usbi /* A00 */
  180. .long do_IRQ ! LCDC vint
  181. .long exception_error
  182. .long exception_error
  183. .long do_IRQ ! DMABRG dmabrgi0
  184. .long do_IRQ ! dmabrgi1
  185. .long do_IRQ ! dmabrgi2
  186. .long exception_error
  187. .long do_IRQ ! SCIF eri1 /* B00 */
  188. .long do_IRQ ! rxi1
  189. .long do_IRQ ! bri1
  190. .long do_IRQ ! txi1
  191. .long do_IRQ ! eri2
  192. .long do_IRQ ! rxi2
  193. .long do_IRQ ! bri2
  194. .long do_IRQ ! txi2
  195. .long do_IRQ ! SIM simeri /* C00 */
  196. .long do_IRQ ! simrxi
  197. .long do_IRQ ! simtxi
  198. .long do_IRQ ! simtei
  199. .long do_IRQ ! HSPI spii
  200. .long exception_error
  201. .long exception_error
  202. .long exception_error
  203. .long do_IRQ ! MMCIF mmci0 /* D00 */
  204. .long do_IRQ ! mmci1
  205. .long do_IRQ ! mmci2
  206. .long do_IRQ ! mmci3
  207. .long exception_error
  208. .long exception_error
  209. .long exception_error
  210. .long exception_error
  211. .long exception_error /* E00 */
  212. .long exception_error
  213. .long exception_error
  214. .long exception_error
  215. .long do_IRQ ! MFI mfii
  216. .long exception_error
  217. .long exception_error
  218. .long exception_error
  219. .long exception_error /* F00 */
  220. .long exception_error
  221. .long exception_error
  222. .long exception_error
  223. .long do_IRQ ! ADC adi
  224. .long do_IRQ ! CMT cmti /* FA0 */
  225. #elif defined(CONFIG_CPU_SUBTYPE_SH73180)
  226. .long do_IRQ ! 50 0x840
  227. .long do_IRQ ! 51 0x860
  228. .long do_IRQ ! 52 0x880
  229. .long do_IRQ ! 53 0x8a0
  230. .long do_IRQ ! 54 0x8c0
  231. .long do_IRQ ! 55 0x8e0
  232. .long do_IRQ ! 56 0x900
  233. .long do_IRQ ! 57 0x920
  234. .long do_IRQ ! 58 0x940
  235. .long do_IRQ ! 59 0x960
  236. .long do_IRQ ! 60 0x980
  237. .long do_IRQ ! 61 0x9a0
  238. .long do_IRQ ! 62 0x9c0
  239. .long do_IRQ ! 63 0x9e0
  240. .long do_IRQ ! 64 0xa00
  241. .long do_IRQ ! 65 0xa20
  242. .long do_IRQ ! 66 0xa40
  243. .long do_IRQ ! 67 0xa60
  244. .long do_IRQ ! 68 0xa80
  245. .long do_IRQ ! 69 0xaa0
  246. .long do_IRQ ! 70 0xac0
  247. .long do_IRQ ! 71 0xae0
  248. .long do_IRQ ! 72 0xb00
  249. .long do_IRQ ! 73 0xb20
  250. .long do_IRQ ! 74 0xb40
  251. .long do_IRQ ! 75 0xb60
  252. .long do_IRQ ! 76 0xb80
  253. .long do_IRQ ! 77 0xba0
  254. .long do_IRQ ! 78 0xbc0
  255. .long do_IRQ ! 79 0xbe0
  256. .long do_IRQ ! 80 0xc00
  257. .long do_IRQ ! 81 0xc20
  258. .long do_IRQ ! 82 0xc40
  259. .long do_IRQ ! 83 0xc60
  260. .long do_IRQ ! 84 0xc80
  261. .long do_IRQ ! 85 0xca0
  262. .long do_IRQ ! 86 0xcc0
  263. .long do_IRQ ! 87 0xce0
  264. .long do_IRQ ! 88 0xd00
  265. .long do_IRQ ! 89 0xd20
  266. .long do_IRQ ! 90 0xd40
  267. .long do_IRQ ! 91 0xd60
  268. .long do_IRQ ! 92 0xd80
  269. .long do_IRQ ! 93 0xda0
  270. .long do_IRQ ! 94 0xdc0
  271. .long do_IRQ ! 95 0xde0
  272. .long do_IRQ ! 96 0xe00
  273. .long do_IRQ ! 97 0xe20
  274. .long do_IRQ ! 98 0xe40
  275. .long do_IRQ ! 99 0xe60
  276. .long do_IRQ ! 100 0xe80
  277. .long do_IRQ ! 101 0xea0
  278. .long do_IRQ ! 102 0xec0
  279. .long do_IRQ ! 103 0xee0
  280. .long do_IRQ ! 104 0xf00
  281. .long do_IRQ ! 105 0xf20
  282. .long do_IRQ ! 106 0xf40
  283. .long do_IRQ ! 107 0xf60
  284. .long do_IRQ ! 108 0xf80
  285. #elif defined(CONFIG_CPU_SUBTYPE_ST40STB1)
  286. .long exception_error ! 50 0x840
  287. .long exception_error ! 51 0x860
  288. .long exception_error ! 52 0x880
  289. .long exception_error ! 53 0x8a0
  290. .long exception_error ! 54 0x8c0
  291. .long exception_error ! 55 0x8e0
  292. .long exception_error ! 56 0x900
  293. .long exception_error ! 57 0x920
  294. .long exception_error ! 58 0x940
  295. .long exception_error ! 59 0x960
  296. .long exception_error ! 60 0x980
  297. .long exception_error ! 61 0x9a0
  298. .long exception_error ! 62 0x9c0
  299. .long exception_error ! 63 0x9e0
  300. .long do_IRQ ! 64 0xa00 PCI serr
  301. .long do_IRQ ! 65 0xa20 err
  302. .long do_IRQ ! 66 0xa40 ad
  303. .long do_IRQ ! 67 0xa60 pwr_dwn
  304. .long exception_error ! 68 0xa80
  305. .long exception_error ! 69 0xaa0
  306. .long exception_error ! 70 0xac0
  307. .long exception_error ! 71 0xae0
  308. .long do_IRQ ! 72 0xb00 DMA INT0
  309. .long do_IRQ ! 73 0xb20 INT1
  310. .long do_IRQ ! 74 0xb40 INT2
  311. .long do_IRQ ! 75 0xb60 INT3
  312. .long do_IRQ ! 76 0xb80 INT4
  313. .long exception_error ! 77 0xba0
  314. .long do_IRQ ! 78 0xbc0 DMA ERR
  315. .long exception_error ! 79 0xbe0
  316. .long do_IRQ ! 80 0xc00 PIO0
  317. .long do_IRQ ! 81 0xc20 PIO1
  318. .long do_IRQ ! 82 0xc40 PIO2
  319. .long exception_error ! 83 0xc60
  320. .long exception_error ! 84 0xc80
  321. .long exception_error ! 85 0xca0
  322. .long exception_error ! 86 0xcc0
  323. .long exception_error ! 87 0xce0
  324. .long exception_error ! 88 0xd00
  325. .long exception_error ! 89 0xd20
  326. .long exception_error ! 90 0xd40
  327. .long exception_error ! 91 0xd60
  328. .long exception_error ! 92 0xd80
  329. .long exception_error ! 93 0xda0
  330. .long exception_error ! 94 0xdc0
  331. .long exception_error ! 95 0xde0
  332. .long exception_error ! 96 0xe00
  333. .long exception_error ! 97 0xe20
  334. .long exception_error ! 98 0xe40
  335. .long exception_error ! 99 0xe60
  336. .long exception_error ! 100 0xe80
  337. .long exception_error ! 101 0xea0
  338. .long exception_error ! 102 0xec0
  339. .long exception_error ! 103 0xee0
  340. .long exception_error ! 104 0xf00
  341. .long exception_error ! 105 0xf20
  342. .long exception_error ! 106 0xf40
  343. .long exception_error ! 107 0xf60
  344. .long exception_error ! 108 0xf80
  345. .long exception_error ! 109 0xfa0
  346. .long exception_error ! 110 0xfc0
  347. .long exception_error ! 111 0xfe0
  348. .long do_IRQ ! 112 0x1000 Mailbox
  349. .long exception_error ! 113 0x1020
  350. .long exception_error ! 114 0x1040
  351. .long exception_error ! 115 0x1060
  352. .long exception_error ! 116 0x1080
  353. .long exception_error ! 117 0x10a0
  354. .long exception_error ! 118 0x10c0
  355. .long exception_error ! 119 0x10e0
  356. .long exception_error ! 120 0x1100
  357. .long exception_error ! 121 0x1120
  358. .long exception_error ! 122 0x1140
  359. .long exception_error ! 123 0x1160
  360. .long exception_error ! 124 0x1180
  361. .long exception_error ! 125 0x11a0
  362. .long exception_error ! 126 0x11c0
  363. .long exception_error ! 127 0x11e0
  364. .long exception_error ! 128 0x1200
  365. .long exception_error ! 129 0x1220
  366. .long exception_error ! 130 0x1240
  367. .long exception_error ! 131 0x1260
  368. .long exception_error ! 132 0x1280
  369. .long exception_error ! 133 0x12a0
  370. .long exception_error ! 134 0x12c0
  371. .long exception_error ! 135 0x12e0
  372. .long exception_error ! 136 0x1300
  373. .long exception_error ! 137 0x1320
  374. .long exception_error ! 138 0x1340
  375. .long exception_error ! 139 0x1360
  376. .long do_IRQ ! 140 0x1380 EMPI INV_ADDR
  377. .long exception_error ! 141 0x13a0
  378. .long exception_error ! 142 0x13c0
  379. .long exception_error ! 143 0x13e0
  380. #endif