xref: /linux/arch/sh/kernel/cpu/sh3/ex.S (revision f3d9478b2ce468c3115b02ecae7e975990697f15)
1/*
2 *  arch/sh/kernel/cpu/sh3/ex.S
3 *
4 *  The SH-3 exception vector table.
5
6 *  Copyright (C) 1999, 2000, 2002  Niibe Yutaka
7 *  Copyright (C) 2003  Paul Mundt
8 *
9 * This file is subject to the terms and conditions of the GNU General Public
10 * License.  See the file "COPYING" in the main directory of this archive
11 * for more details.
12 *
13 */
14#include <linux/linkage.h>
15#include <linux/config.h>
16
17	.align 2
18	.data
19
20ENTRY(exception_handling_table)
21	.long	exception_error		/* 000 */
22	.long	exception_error
23#if defined(CONFIG_MMU)
24	.long	tlb_miss_load		/* 040 */
25	.long	tlb_miss_store
26	.long	initial_page_write
27	.long	tlb_protection_violation_load
28	.long	tlb_protection_violation_store
29	.long	address_error_load
30	.long	address_error_store	/* 100 */
31#else
32	.long	exception_error	! tlb miss load		/* 040 */
33	.long	exception_error	! tlb miss store
34	.long	exception_error	! initial page write
35	.long	exception_error	! tlb prot violation load
36	.long	exception_error	! tlb prot violation store
37	.long	exception_error	! address error load
38	.long	exception_error	! address error store	/* 100 */
39#endif
40	.long	exception_error	! fpu_exception	/* 120 */
41	.long	exception_error			/* 140 */
42	.long	system_call	! Unconditional Trap	 /* 160 */
43	.long	exception_error	! reserved_instruction (filled by trap_init) /* 180 */
44	.long	exception_error	! illegal_slot_instruction (filled by trap_init) /*1A0*/
45ENTRY(nmi_slot)
46#if defined (CONFIG_KGDB_NMI)
47	.long	debug_enter	/* 1C0 */	! Allow trap to debugger
48#else
49	.long	exception_none	/* 1C0 */	! Not implemented yet
50#endif
51ENTRY(user_break_point_trap)
52	.long	break_point_trap	/* 1E0 */
53ENTRY(interrupt_table)
54	! external hardware
55	.long	do_IRQ	! 0000		/* 200 */
56	.long	do_IRQ	! 0001
57	.long	do_IRQ	! 0010
58	.long	do_IRQ	! 0011
59	.long	do_IRQ	! 0100
60	.long	do_IRQ	! 0101
61	.long	do_IRQ	! 0110
62	.long	do_IRQ	! 0111
63	.long	do_IRQ	! 1000		/* 300 */
64	.long	do_IRQ	! 1001
65	.long	do_IRQ	! 1010
66	.long	do_IRQ	! 1011
67	.long	do_IRQ	! 1100
68	.long	do_IRQ	! 1101
69	.long	do_IRQ	! 1110
70	.long	exception_error
71	! Internal hardware
72	.long	do_IRQ	! TMU0 tuni0	/* 400 */
73	.long	do_IRQ	! TMU1 tuni1
74	.long	do_IRQ	! TMU2 tuni2
75	.long	do_IRQ	!      ticpi2
76	.long	do_IRQ	! RTC  ati
77	.long	do_IRQ	!      pri
78	.long	do_IRQ	!      cui
79	.long	do_IRQ	! SCI  eri
80	.long	do_IRQ	!      rxi	/* 500 */
81	.long	do_IRQ	!      txi
82	.long	do_IRQ	!      tei
83	.long	do_IRQ	! WDT  iti	/* 560 */
84	.long	do_IRQ	! REF  rcmi
85	.long	do_IRQ	!      rovi
86	.long	do_IRQ
87	.long	do_IRQ			/* 5E0 */
88#if  defined(CONFIG_CPU_SUBTYPE_SH7707) || defined(CONFIG_CPU_SUBTYPE_SH7709) || \
89     defined(CONFIG_CPU_SUBTYPE_SH7300) || defined(CONFIG_CPU_SUBTYPE_SH7705)
90	.long	do_IRQ	! 32 IRQ  irq0	/* 600 */
91	.long	do_IRQ	! 33      irq1
92	.long	do_IRQ	! 34      irq2
93	.long	do_IRQ	! 35      irq3
94	.long	do_IRQ	! 36      irq4
95	.long	do_IRQ	! 37      irq5
96	.long	do_IRQ	! 38
97	.long	do_IRQ	! 39
98	.long	do_IRQ	! 40 PINT pint0-7	/* 700 */
99	.long	do_IRQ	! 41      pint8-15
100	.long	do_IRQ	! 42
101	.long	do_IRQ	! 43
102	.long	do_IRQ	! 44
103	.long	do_IRQ	! 45
104	.long	do_IRQ	! 46
105	.long	do_IRQ	! 47
106	.long	do_IRQ	! 48 DMAC dei0	/* 800 */
107	.long	do_IRQ	! 49      dei1
108	.long	do_IRQ	! 50      dei2
109	.long	do_IRQ	! 51      dei3
110	.long	do_IRQ	! 52 IrDA eri1
111	.long	do_IRQ	! 53      rxi1
112	.long	do_IRQ	! 54      bri1
113	.long	do_IRQ	! 55      txi1
114	.long	do_IRQ	! 56 SCIF eri2
115	.long	do_IRQ	! 57      rxi2
116	.long	do_IRQ	! 58      bri2
117	.long	do_IRQ	! 59      txi2
118	.long	do_IRQ	! 60 ADC  adi	/* 980 */
119#if defined(CONFIG_CPU_SUBTYPE_SH7705)
120	.long	exception_none	! 61	/* 9A0 */
121	.long	exception_none	! 62
122	.long	exception_none	! 63
123	.long	exception_none	! 64	/* A00 */
124	.long	do_IRQ	! 65 USB  usi0
125	.long	do_IRQ	! 66      usi1
126	.long	exception_none	! 67
127	.long	exception_none	! 68
128	.long	exception_none	! 69
129	.long	exception_none	! 70
130	.long	exception_none	! 71
131	.long	exception_none	! 72	/* B00 */
132	.long	exception_none	! 73
133	.long	exception_none	! 74
134	.long	exception_none	! 75
135	.long	exception_none	! 76
136	.long	exception_none	! 77
137	.long	exception_none	! 78
138	.long	exception_none	! 79
139	.long	do_IRQ	! 80 TPU0 tpi0	/* C00 */
140	.long	do_IRQ	! 81 TPU1 tpi1
141	.long	exception_none	! 82
142	.long	exception_none	! 83
143	.long	do_IRQ	! 84 TPU2 tpi2
144	.long	do_IRQ	! 85 TPU3 tpi3	/* CA0 */
145#endif
146#if defined(CONFIG_CPU_SUBTYPE_SH7707) || defined(CONFIG_CPU_SUBTYPE_SH7300)
147	.long   do_IRQ	! 61 LCDC lcdi	/* 9A0 */
148	.long   do_IRQ	! 62 PCC  pcc0i
149	.long   do_IRQ	! 63      pcc1i	/* 9E0 */
150#endif
151#if defined(CONFIG_CPU_SUBTYPE_SH7300)
152	.long   do_IRQ	! 64
153	.long   do_IRQ	! 65
154	.long   do_IRQ	! 66
155	.long   do_IRQ	! 67
156	.long   do_IRQ	! 68
157	.long   do_IRQ	! 69
158	.long   do_IRQ	! 70
159	.long   do_IRQ	! 71
160	.long   do_IRQ	! 72
161	.long   do_IRQ	! 73
162	.long   do_IRQ	! 74
163	.long   do_IRQ	! 75
164	.long   do_IRQ	! 76
165	.long   do_IRQ	! 77
166	.long   do_IRQ	! 78
167	.long   do_IRQ	! 79
168	.long   do_IRQ	! 80 SCIF0(SH7300)
169	.long   do_IRQ	! 81
170	.long   do_IRQ	! 82
171	.long   do_IRQ	! 83
172	.long   do_IRQ	! 84
173	.long   do_IRQ	! 85
174	.long   do_IRQ	! 86
175	.long   do_IRQ	! 87
176	.long   do_IRQ	! 88
177	.long   do_IRQ	! 89
178	.long   do_IRQ	! 90
179	.long   do_IRQ	! 91
180	.long   do_IRQ	! 92
181	.long   do_IRQ	! 93
182	.long   do_IRQ	! 94
183	.long   do_IRQ	! 95
184	.long   do_IRQ	! 96
185	.long   do_IRQ	! 97
186	.long   do_IRQ	! 98
187	.long   do_IRQ	! 99
188	.long   do_IRQ	! 100
189	.long   do_IRQ	! 101
190	.long   do_IRQ	! 102
191	.long   do_IRQ	! 103
192	.long   do_IRQ	! 104
193	.long   do_IRQ	! 105
194	.long   do_IRQ	! 106
195	.long   do_IRQ	! 107
196	.long   do_IRQ	! 108
197#endif
198#endif
199
200