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