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