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