forked from RIOT-OS/RIOT
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvectors.c
305 lines (300 loc) · 16.7 KB
/
vectors.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
/*
* Copyright (C) 2019 ML!PA Consulting GmbH
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup cpu_samd5x
* @{
*
* @file
* @brief Startup code and interrupt vector definition
*
* @author Benjamin Valentin <benjamin.valentin@ml-pa.com>
*
* @}
*/
#include <stdint.h>
#include "vectors_cortexm.h"
/* define a local dummy handler as it needs to be in the same compilation unit
* as the alias definition */
void dummy_handler(void) {
dummy_handler_default();
}
/* SAME54 specific interrupt vector */
WEAK_DEFAULT void isr_pm ( void );
WEAK_DEFAULT void isr_mclk ( void );
WEAK_DEFAULT void isr_oscctrl0 ( void );
WEAK_DEFAULT void isr_oscctrl1 ( void );
WEAK_DEFAULT void isr_oscctrl2 ( void );
WEAK_DEFAULT void isr_oscctrl3 ( void );
WEAK_DEFAULT void isr_oscctrl4 ( void );
WEAK_DEFAULT void isr_osc32kctrl ( void );
WEAK_DEFAULT void isr_supc0 ( void );
WEAK_DEFAULT void isr_supc1 ( void );
WEAK_DEFAULT void isr_wdt ( void );
WEAK_DEFAULT void isr_rtc ( void );
WEAK_DEFAULT void isr_eic0 ( void );
WEAK_DEFAULT void isr_eic1 ( void );
WEAK_DEFAULT void isr_eic2 ( void );
WEAK_DEFAULT void isr_eic3 ( void );
WEAK_DEFAULT void isr_eic4 ( void );
WEAK_DEFAULT void isr_eic5 ( void );
WEAK_DEFAULT void isr_eic6 ( void );
WEAK_DEFAULT void isr_eic7 ( void );
WEAK_DEFAULT void isr_eic8 ( void );
WEAK_DEFAULT void isr_eic9 ( void );
WEAK_DEFAULT void isr_eic10 ( void );
WEAK_DEFAULT void isr_eic11 ( void );
WEAK_DEFAULT void isr_eic12 ( void );
WEAK_DEFAULT void isr_eic13 ( void );
WEAK_DEFAULT void isr_eic14 ( void );
WEAK_DEFAULT void isr_eic15 ( void );
WEAK_DEFAULT void irq_freqm ( void );
WEAK_DEFAULT void isr_nvmctrl0 ( void );
WEAK_DEFAULT void isr_nvmctrl1 ( void );
WEAK_DEFAULT void isr_dmac0 ( void );
WEAK_DEFAULT void isr_dmac1 ( void );
WEAK_DEFAULT void isr_dmac2 ( void );
WEAK_DEFAULT void isr_dmac3 ( void );
WEAK_DEFAULT void isr_dmac4 ( void );
WEAK_DEFAULT void isr_evsys0 ( void );
WEAK_DEFAULT void isr_evsys1 ( void );
WEAK_DEFAULT void isr_evsys2 ( void );
WEAK_DEFAULT void isr_evsys3 ( void );
WEAK_DEFAULT void isr_evsys4 ( void );
WEAK_DEFAULT void isr_pac ( void );
WEAK_DEFAULT void irq_ramecc ( void );
WEAK_DEFAULT void isr_sercom0_0 ( void );
WEAK_DEFAULT void isr_sercom0_1 ( void );
WEAK_DEFAULT void isr_sercom0_2 ( void );
WEAK_DEFAULT void isr_sercom0_3 ( void );
WEAK_DEFAULT void isr_sercom1_0 ( void );
WEAK_DEFAULT void isr_sercom1_1 ( void );
WEAK_DEFAULT void isr_sercom1_2 ( void );
WEAK_DEFAULT void isr_sercom1_3 ( void );
WEAK_DEFAULT void isr_sercom2_0 ( void );
WEAK_DEFAULT void isr_sercom2_1 ( void );
WEAK_DEFAULT void isr_sercom2_2 ( void );
WEAK_DEFAULT void isr_sercom2_3 ( void );
WEAK_DEFAULT void isr_sercom3_0 ( void );
WEAK_DEFAULT void isr_sercom3_1 ( void );
WEAK_DEFAULT void isr_sercom3_2 ( void );
WEAK_DEFAULT void isr_sercom3_3 ( void );
WEAK_DEFAULT void isr_sercom4_0 ( void );
WEAK_DEFAULT void isr_sercom4_1 ( void );
WEAK_DEFAULT void isr_sercom4_2 ( void );
WEAK_DEFAULT void isr_sercom4_3 ( void );
WEAK_DEFAULT void isr_sercom5_0 ( void );
WEAK_DEFAULT void isr_sercom5_1 ( void );
WEAK_DEFAULT void isr_sercom5_2 ( void );
WEAK_DEFAULT void isr_sercom5_3 ( void );
WEAK_DEFAULT void isr_sercom6_0 ( void );
WEAK_DEFAULT void isr_sercom6_1 ( void );
WEAK_DEFAULT void isr_sercom6_2 ( void );
WEAK_DEFAULT void isr_sercom6_3 ( void );
WEAK_DEFAULT void isr_sercom7_0 ( void );
WEAK_DEFAULT void isr_sercom7_1 ( void );
WEAK_DEFAULT void isr_sercom7_2 ( void );
WEAK_DEFAULT void isr_sercom7_3 ( void );
WEAK_DEFAULT void isr_can0 ( void );
WEAK_DEFAULT void isr_can1 ( void );
WEAK_DEFAULT void isr_usb0 ( void );
WEAK_DEFAULT void isr_usb1 ( void );
WEAK_DEFAULT void isr_usb2 ( void );
WEAK_DEFAULT void isr_usb3 ( void );
WEAK_DEFAULT void isr_gmac ( void );
WEAK_DEFAULT void isr_tcc0_0 ( void );
WEAK_DEFAULT void isr_tcc0_1 ( void );
WEAK_DEFAULT void isr_tcc0_2 ( void );
WEAK_DEFAULT void isr_tcc0_3 ( void );
WEAK_DEFAULT void isr_tcc0_4 ( void );
WEAK_DEFAULT void isr_tcc0_5 ( void );
WEAK_DEFAULT void isr_tcc0_6 ( void );
WEAK_DEFAULT void isr_tcc1_0 ( void );
WEAK_DEFAULT void isr_tcc1_1 ( void );
WEAK_DEFAULT void isr_tcc1_2 ( void );
WEAK_DEFAULT void isr_tcc1_3 ( void );
WEAK_DEFAULT void isr_tcc1_4 ( void );
WEAK_DEFAULT void isr_tcc2_0 ( void );
WEAK_DEFAULT void isr_tcc2_1 ( void );
WEAK_DEFAULT void isr_tcc2_2 ( void );
WEAK_DEFAULT void isr_tcc2_3 ( void );
WEAK_DEFAULT void isr_tcc3_0 ( void );
WEAK_DEFAULT void isr_tcc3_1 ( void );
WEAK_DEFAULT void isr_tcc3_2 ( void );
WEAK_DEFAULT void isr_tcc4_0 ( void );
WEAK_DEFAULT void isr_tcc4_1 ( void );
WEAK_DEFAULT void isr_tcc4_2 ( void );
WEAK_DEFAULT void isr_tc0 ( void );
WEAK_DEFAULT void isr_tc1 ( void );
WEAK_DEFAULT void isr_tc2 ( void );
WEAK_DEFAULT void isr_tc3 ( void );
WEAK_DEFAULT void isr_tc4 ( void );
WEAK_DEFAULT void isr_tc5 ( void );
WEAK_DEFAULT void isr_tc6 ( void );
WEAK_DEFAULT void isr_tc7 ( void );
WEAK_DEFAULT void isr_pdec0 ( void );
WEAK_DEFAULT void isr_pdec1 ( void );
WEAK_DEFAULT void isr_pdec2 ( void );
WEAK_DEFAULT void isr_adc0_0 ( void );
WEAK_DEFAULT void isr_adc0_1 ( void );
WEAK_DEFAULT void isr_adc1_0 ( void );
WEAK_DEFAULT void isr_adc1_1 ( void );
WEAK_DEFAULT void isr_ac ( void );
WEAK_DEFAULT void isr_dac0 ( void );
WEAK_DEFAULT void isr_dac1 ( void );
WEAK_DEFAULT void isr_dac2 ( void );
WEAK_DEFAULT void isr_dac3 ( void );
WEAK_DEFAULT void isr_dac4 ( void );
WEAK_DEFAULT void isr_i2s ( void );
WEAK_DEFAULT void isr_pcc ( void );
WEAK_DEFAULT void isr_aes ( void );
WEAK_DEFAULT void isr_trng ( void );
WEAK_DEFAULT void isr_icm ( void );
WEAK_DEFAULT void isr_pukcc ( void );
WEAK_DEFAULT void isq_qspi ( void );
WEAK_DEFAULT void isr_sdhc0 ( void );
WEAK_DEFAULT void isr_sdhc1 ( void );
/* CPU specific interrupt vector table */
ISR_VECTOR(1) const isr_t vector_cpu[CPU_IRQ_NUMOF] = {
isr_pm, /* 0 Power Manager */
isr_mclk, /* 1 Main Clock */
isr_oscctrl0, /* 2 Oscillators Control IRQ 0 */
isr_oscctrl1, /* 3 Oscillators Control IRQ 1 */
isr_oscctrl2, /* 4 Oscillators Control IRQ 2 */
isr_oscctrl3, /* 5 Oscillators Control IRQ 3 */
isr_oscctrl4, /* 6 Oscillators Control IRQ 4 */
isr_osc32kctrl, /* 7 32kHz Oscillators Control */
isr_supc0, /* 8 Supply Controller IRQ 0 */
isr_supc1, /* 9 Supply Controller IRQ 1 */
isr_wdt, /* 10 Watchdog Timer */
isr_rtc, /* 11 Real-Time Counter */
isr_eic0, /* 12 External Interrupt Controller IRQ 0 */
isr_eic1, /* 13 External Interrupt Controller IRQ 1 */
isr_eic2, /* 14 External Interrupt Controller IRQ 2 */
isr_eic3, /* 15 External Interrupt Controller IRQ 3 */
isr_eic4, /* 16 External Interrupt Controller IRQ 4 */
isr_eic5, /* 17 External Interrupt Controller IRQ 5 */
isr_eic6, /* 18 External Interrupt Controller IRQ 6 */
isr_eic7, /* 19 External Interrupt Controller IRQ 7 */
isr_eic8, /* 20 External Interrupt Controller IRQ 8 */
isr_eic9, /* 21 External Interrupt Controller IRQ 9 */
isr_eic10, /* 22 External Interrupt Controller IRQ 10 */
isr_eic11, /* 23 External Interrupt Controller IRQ 11 */
isr_eic12, /* 24 External Interrupt Controller IRQ 12 */
isr_eic13, /* 25 External Interrupt Controller IRQ 13 */
isr_eic14, /* 26 External Interrupt Controller IRQ 14 */
isr_eic15, /* 27 External Interrupt Controller IRQ 15 */
irq_freqm, /* 28 Frequency Meter */
isr_nvmctrl0, /* 29 Non-Volatile Memory Controller IRQ 0 */
isr_nvmctrl1, /* 30 Non-Volatile Memory Controller IRQ 1 */
isr_dmac0, /* 31 Direct Memory Access Controller IRQ 0 */
isr_dmac1, /* 32 Direct Memory Access Controller IRQ 1 */
isr_dmac2, /* 33 Direct Memory Access Controller IRQ 2 */
isr_dmac3, /* 34 Direct Memory Access Controller IRQ 3 */
isr_dmac4, /* 35 Direct Memory Access Controller IRQ 4 */
isr_evsys0, /* 36 Event System Interface IRQ 0 */
isr_evsys1, /* 37 Event System Interface IRQ 1 */
isr_evsys2, /* 38 Event System Interface IRQ 2 */
isr_evsys3, /* 39 Event System Interface IRQ 3 */
isr_evsys4, /* 40 Event System Interface IRQ 4 */
isr_pac, /* 41 Peripheral Access Controller */
dummy_handler,
dummy_handler,
dummy_handler,
irq_ramecc, /* 45 RAM ECC */
isr_sercom0_0, /* 46 Serial Communication Interface 0 IRQ 0 */
isr_sercom0_1, /* 47 Serial Communication Interface 0 IRQ 1 */
isr_sercom0_2, /* 48 Serial Communication Interface 0 IRQ 2 */
isr_sercom0_3, /* 49 Serial Communication Interface 0 IRQ 3 */
isr_sercom1_0, /* 50 Serial Communication Interface 1 IRQ 0 */
isr_sercom1_1, /* 51 Serial Communication Interface 1 IRQ 1 */
isr_sercom1_2, /* 52 Serial Communication Interface 1 IRQ 2 */
isr_sercom1_3, /* 53 Serial Communication Interface 1 IRQ 3 */
isr_sercom2_0, /* 54 Serial Communication Interface 2 IRQ 0 */
isr_sercom2_1, /* 55 Serial Communication Interface 2 IRQ 1 */
isr_sercom2_2, /* 56 Serial Communication Interface 2 IRQ 2 */
isr_sercom2_3, /* 57 Serial Communication Interface 2 IRQ 3 */
isr_sercom3_0, /* 58 Serial Communication Interface 3 IRQ 0 */
isr_sercom3_1, /* 59 Serial Communication Interface 3 IRQ 1 */
isr_sercom3_2, /* 60 Serial Communication Interface 3 IRQ 2 */
isr_sercom3_3, /* 61 Serial Communication Interface 3 IRQ 3 */
isr_sercom4_0, /* 62 Serial Communication Interface 4 IRQ 0 */
isr_sercom4_1, /* 63 Serial Communication Interface 4 IRQ 1 */
isr_sercom4_2, /* 64 Serial Communication Interface 4 IRQ 2 */
isr_sercom4_3, /* 65 Serial Communication Interface 4 IRQ 3 */
isr_sercom5_0, /* 66 Serial Communication Interface 5 IRQ 0 */
isr_sercom5_1, /* 67 Serial Communication Interface 5 IRQ 1 */
isr_sercom5_2, /* 68 Serial Communication Interface 5 IRQ 2 */
isr_sercom5_3, /* 69 Serial Communication Interface 5 IRQ 3 */
isr_sercom6_0, /* 70 Serial Communication Interface 6 IRQ 0 */
isr_sercom6_1, /* 71 Serial Communication Interface 6 IRQ 1 */
isr_sercom6_2, /* 72 Serial Communication Interface 6 IRQ 2 */
isr_sercom6_3, /* 73 Serial Communication Interface 6 IRQ 3 */
isr_sercom7_0, /* 74 Serial Communication Interface 7 IRQ 0 */
isr_sercom7_1, /* 75 Serial Communication Interface 7 IRQ 1 */
isr_sercom7_2, /* 76 Serial Communication Interface 7 IRQ 2 */
isr_sercom7_3, /* 77 Serial Communication Interface 7 IRQ 3 */
isr_can0, /* 78 Control Area Network 0 */
isr_can1, /* 79 Control Area Network 1 */
isr_usb0, /* 80 Universal Serial Bus IRQ 0 */
isr_usb1, /* 81 Universal Serial Bus IRQ 1 */
isr_usb2, /* 82 Universal Serial Bus IRQ 2 */
isr_usb3, /* 83 Universal Serial Bus IRQ 3 */
isr_gmac, /* 84 Ethernet MAC */
isr_tcc0_0, /* 85 Timer Counter Control 0 IRQ 0 */
isr_tcc0_1, /* 86 Timer Counter Control 0 IRQ 1 */
isr_tcc0_2, /* 87 Timer Counter Control 0 IRQ 2 */
isr_tcc0_3, /* 88 Timer Counter Control 0 IRQ 3 */
isr_tcc0_4, /* 89 Timer Counter Control 0 IRQ 4 */
isr_tcc0_5, /* 90 Timer Counter Control 0 IRQ 5 */
isr_tcc0_6, /* 91 Timer Counter Control 0 IRQ 6 */
isr_tcc1_0, /* 92 Timer Counter Control 1 IRQ 0 */
isr_tcc1_1, /* 93 Timer Counter Control 1 IRQ 1 */
isr_tcc1_2, /* 94 Timer Counter Control 1 IRQ 2 */
isr_tcc1_3, /* 95 Timer Counter Control 1 IRQ 3 */
isr_tcc1_4, /* 96 Timer Counter Control 1 IRQ 4 */
isr_tcc2_0, /* 97 Timer Counter Control 2 IRQ 0 */
isr_tcc2_1, /* 98 Timer Counter Control 2 IRQ 1 */
isr_tcc2_2, /* 99 Timer Counter Control 2 IRQ 2 */
isr_tcc2_3, /* 100 Timer Counter Control 2 IRQ 3 */
isr_tcc3_0, /* 101 Timer Counter Control 3 IRQ 0 */
isr_tcc3_1, /* 102 Timer Counter Control 3 IRQ 1 */
isr_tcc3_2, /* 103 Timer Counter Control 3 IRQ 2 */
isr_tcc4_0, /* 104 Timer Counter Control 4 IRQ 0 */
isr_tcc4_1, /* 105 Timer Counter Control 4 IRQ 1 */
isr_tcc4_2, /* 106 Timer Counter Control 4 IRQ 2 */
isr_tc0, /* 107 Basic Timer Counter 0 */
isr_tc1, /* 108 Basic Timer Counter 1 */
isr_tc2, /* 109 Basic Timer Counter 2 */
isr_tc3, /* 110 Basic Timer Counter 3 */
isr_tc4, /* 111 Basic Timer Counter 4 */
isr_tc5, /* 112 Basic Timer Counter 5 */
isr_tc6, /* 113 Basic Timer Counter 6 */
isr_tc7, /* 114 Basic Timer Counter 7 */
isr_pdec0, /* 115 Quadrature Decodeur IRQ 0 */
isr_pdec1, /* 116 Quadrature Decodeur IRQ 1 */
isr_pdec2, /* 117 Quadrature Decodeur IRQ 2 */
isr_adc0_0, /* 118 Analog Digital Converter 0 IRQ 0 */
isr_adc0_1, /* 119 Analog Digital Converter 0 IRQ 1 */
isr_adc1_0, /* 120 Analog Digital Converter 1 IRQ 0 */
isr_adc1_1, /* 121 Analog Digital Converter 1 IRQ 1 */
isr_ac, /* 122 Analog Comparators */
isr_dac0, /* 123 Digital-to-Analog Converter IRQ 0 */
isr_dac1, /* 124 Digital-to-Analog Converter IRQ 1 */
isr_dac2, /* 125 Digital-to-Analog Converter IRQ 2 */
isr_dac3, /* 126 Digital-to-Analog Converter IRQ 3 */
isr_dac4, /* 127 Digital-to-Analog Converter IRQ 4 */
isr_i2s, /* 128 Inter-IC Sound Interface */
isr_pcc, /* 129 Parallel Capture Controller */
isr_aes, /* 130 Advanced Encryption Standard */
isr_trng, /* 131 True Random Generator */
isr_icm, /* 132 Integrity Check Monitor */
isr_pukcc, /* 133 PUblic-Key Cryptography Controller */
isq_qspi, /* 134 Quad SPI interface */
isr_sdhc0, /* 135 SD/MMC Host Controller 0 */
isr_sdhc1, /* 136 SD/MMC Host Controller 1 */
};