ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.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
41         .long   do_fpu_error            /* 120 */
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         .long   do_fpu_state_restore    ! 48    /* 800 */
130         .long   do_fpu_state_restore    ! 49    /* 820 */
131 #if defined(CONFIG_CPU_SUBTYPE_SH7751)
132         .long   exception_error                 /* 840 */
133         .long   exception_error
134         .long   exception_error
135         .long   exception_error
136         .long   exception_error
137         .long   exception_error
138         .long   exception_error                 /* 900 */
139         .long   exception_error
140         .long   exception_error
141         .long   exception_error
142         .long   exception_error
143         .long   exception_error
144         .long   exception_error
145         .long   exception_error
146         .long   do_IRQ  ! PCI serr      /* A00 */
147         .long   do_IRQ  !     dma3
148         .long   do_IRQ  !     dma2
149         .long   do_IRQ  !     dma1
150         .long   do_IRQ  !     dma0
151         .long   do_IRQ  !     pwon
152         .long   do_IRQ  !     pwdwn
153         .long   do_IRQ  !     err
154         .long   do_IRQ  ! TMU3 tuni3    /* B00 */
155         .long   exception_error
156         .long   exception_error
157         .long   exception_error
158         .long   do_IRQ  ! TMU4 tuni4    /* B80 */
159 #elif defined(CONFIG_CPU_SUBTYPE_SH7760)
160         .long   do_IRQ  ! IRQ   irq6    /* 840 */
161         .long   do_IRQ  !       irq7
162         .long   do_IRQ  ! SCIF  eri0
163         .long   do_IRQ  !       rxi0
164         .long   do_IRQ  !       bri0
165         .long   do_IRQ  !       txi0
166         .long   do_IRQ  ! HCAN2 cani0   /* 900 */
167         .long   do_IRQ  !       cani1
168         .long   do_IRQ  ! SSI   ssii0
169         .long   do_IRQ  !       ssii1
170         .long   do_IRQ  ! HAC   haci0
171         .long   do_IRQ  !       haci1
172         .long   do_IRQ  ! IIC   iici0
173         .long   do_IRQ  !       iici1
174         .long   do_IRQ  ! USB   usbi    /* A00 */
175         .long   do_IRQ  ! LCDC  vint
176         .long   exception_error
177         .long   exception_error
178         .long   do_IRQ  ! DMABRG dmabrgi0
179         .long   do_IRQ  !        dmabrgi1
180         .long   do_IRQ  !        dmabrgi2
181         .long   exception_error
182         .long   do_IRQ  ! SCIF  eri1    /* B00 */
183         .long   do_IRQ  !       rxi1
184         .long   do_IRQ  !       bri1
185         .long   do_IRQ  !       txi1
186         .long   do_IRQ  !       eri2
187         .long   do_IRQ  !       rxi2
188         .long   do_IRQ  !       bri2
189         .long   do_IRQ  !       txi2
190         .long   do_IRQ  ! SIM   simeri  /* C00 */
191         .long   do_IRQ  !       simrxi
192         .long   do_IRQ  !       simtxi
193         .long   do_IRQ  !       simtei
194         .long   do_IRQ  ! HSPI  spii
195         .long   exception_error
196         .long   exception_error
197         .long   exception_error
198         .long   do_IRQ  ! MMCIF mmci0   /* D00 */
199         .long   do_IRQ  !       mmci1
200         .long   do_IRQ  !       mmci2
201         .long   do_IRQ  !       mmci3
202         .long   exception_error
203         .long   exception_error
204         .long   exception_error
205         .long   exception_error
206         .long   exception_error                 /* E00 */
207         .long   exception_error
208         .long   exception_error
209         .long   exception_error
210         .long   do_IRQ  ! MFI   mfii
211         .long   exception_error
212         .long   exception_error
213         .long   exception_error
214         .long   exception_error                 /* F00 */
215         .long   exception_error
216         .long   exception_error
217         .long   exception_error
218         .long   do_IRQ  ! ADC   adi
219         .long   do_IRQ  ! CMT   cmti    /* FA0 */
220 #elif defined(CONFIG_CPU_SUBTYPE_ST40STB1)
221         .long   exception_error                 !  50 0x840
222         .long   exception_error                 !  51 0x860
223         .long   exception_error                 !  52 0x880
224         .long   exception_error                 !  53 0x8a0
225         .long   exception_error                 !  54 0x8c0
226         .long   exception_error                 !  55 0x8e0
227         .long   exception_error                 !  56 0x900
228         .long   exception_error                 !  57 0x920
229         .long   exception_error                 !  58 0x940
230         .long   exception_error                 !  59 0x960
231         .long   exception_error                 !  60 0x980
232         .long   exception_error                 !  61 0x9a0
233         .long   exception_error                 !  62 0x9c0
234         .long   exception_error                 !  63 0x9e0
235         .long   do_IRQ  !  64 0xa00 PCI serr
236         .long   do_IRQ  !  65 0xa20     err
237         .long   do_IRQ  !  66 0xa40     ad
238         .long   do_IRQ  !  67 0xa60     pwr_dwn
239         .long   exception_error                 !  68 0xa80
240         .long   exception_error                 !  69 0xaa0
241         .long   exception_error                 !  70 0xac0
242         .long   exception_error                 !  71 0xae0
243         .long   do_IRQ  !  72 0xb00 DMA INT0
244         .long   do_IRQ  !  73 0xb20     INT1
245         .long   do_IRQ  !  74 0xb40     INT2
246         .long   do_IRQ  !  75 0xb60     INT3
247         .long   do_IRQ  !  76 0xb80     INT4
248         .long   exception_error                 !  77 0xba0
249         .long   do_IRQ  !  78 0xbc0 DMA ERR
250         .long   exception_error                 !  79 0xbe0
251         .long   do_IRQ  !  80 0xc00 PIO0
252         .long   do_IRQ  !  81 0xc20 PIO1
253         .long   do_IRQ  !  82 0xc40 PIO2
254         .long   exception_error                 !  83 0xc60
255         .long   exception_error                 !  84 0xc80
256         .long   exception_error                 !  85 0xca0
257         .long   exception_error                 !  86 0xcc0
258         .long   exception_error                 !  87 0xce0
259         .long   exception_error                 !  88 0xd00
260         .long   exception_error                 !  89 0xd20
261         .long   exception_error                 !  90 0xd40
262         .long   exception_error                 !  91 0xd60
263         .long   exception_error                 !  92 0xd80
264         .long   exception_error                 !  93 0xda0
265         .long   exception_error                 !  94 0xdc0
266         .long   exception_error                 !  95 0xde0
267         .long   exception_error                 !  96 0xe00
268         .long   exception_error                 !  97 0xe20
269         .long   exception_error                 !  98 0xe40
270         .long   exception_error                 !  99 0xe60
271         .long   exception_error                 ! 100 0xe80
272         .long   exception_error                 ! 101 0xea0
273         .long   exception_error                 ! 102 0xec0
274         .long   exception_error                 ! 103 0xee0
275         .long   exception_error                 ! 104 0xf00
276         .long   exception_error                 ! 105 0xf20
277         .long   exception_error                 ! 106 0xf40
278         .long   exception_error                 ! 107 0xf60
279         .long   exception_error                 ! 108 0xf80
280         .long   exception_error                 ! 109 0xfa0
281         .long   exception_error                 ! 110 0xfc0
282         .long   exception_error                 ! 111 0xfe0
283         .long   do_IRQ  ! 112 0x1000 Mailbox
284         .long   exception_error                 ! 113 0x1020
285         .long   exception_error                 ! 114 0x1040
286         .long   exception_error                 ! 115 0x1060
287         .long   exception_error                 ! 116 0x1080
288         .long   exception_error                 ! 117 0x10a0
289         .long   exception_error                 ! 118 0x10c0
290         .long   exception_error                 ! 119 0x10e0
291         .long   exception_error                 ! 120 0x1100
292         .long   exception_error                 ! 121 0x1120
293         .long   exception_error                 ! 122 0x1140
294         .long   exception_error                 ! 123 0x1160
295         .long   exception_error                 ! 124 0x1180
296         .long   exception_error                 ! 125 0x11a0
297         .long   exception_error                 ! 126 0x11c0
298         .long   exception_error                 ! 127 0x11e0
299         .long   exception_error                 ! 128 0x1200
300         .long   exception_error                 ! 129 0x1220
301         .long   exception_error                 ! 130 0x1240
302         .long   exception_error                 ! 131 0x1260
303         .long   exception_error                 ! 132 0x1280
304         .long   exception_error                 ! 133 0x12a0
305         .long   exception_error                 ! 134 0x12c0
306         .long   exception_error                 ! 135 0x12e0
307         .long   exception_error                 ! 136 0x1300
308         .long   exception_error                 ! 137 0x1320
309         .long   exception_error                 ! 138 0x1340
310         .long   exception_error                 ! 139 0x1360
311         .long   do_IRQ  ! 140 0x1380 EMPI INV_ADDR
312         .long   exception_error                 ! 141 0x13a0
313         .long   exception_error                 ! 142 0x13c0
314         .long   exception_error                 ! 143 0x13e0
315 #endif
316