import cbaos v0.1
[cbaos.git] / arch / arm-cortex-m3 / mach-stm32 / crt.c
blob2a5bf92f10b157ba38d3ed68f8480512b5af480e
1 /* Author: Domen Puncer <domen@cba.si>. License: WTFPL, see file LICENSE */
2 #include <arch/crt.h>
5 /* lets have weak aliases to dummy handler */
6 void nmi_handler() __alias(dummy_handler);
7 void hardfault_handler() __alias(dummy_handler);
8 void memmanage_handler() __alias(dummy_handler);
9 void busfault_handler() __alias(dummy_handler);
10 void usagefault_handler() __alias(dummy_handler);
11 void svc_handler() __alias(dummy_handler);
12 void debugmon_handler() __alias(dummy_handler);
13 void pendsv_handler() __alias(dummy_handler);
14 void systick_handler() __alias(dummy_handler);
16 void wwdg_irqhandler() __alias(dummy_handler);
17 void pvd_irqhandler() __alias(dummy_handler);
18 void tamper_irqhandler() __alias(dummy_handler);
19 void rtc_irqhandler() __alias(dummy_handler);
20 void flash_irqhandler() __alias(dummy_handler);
21 void rcc_irqhandler() __alias(dummy_handler);
22 void exti0_irqhandler() __alias(dummy_handler);
23 void exti1_irqhandler() __alias(dummy_handler);
24 void exti2_irqhandler() __alias(dummy_handler);
25 void exti3_irqhandler() __alias(dummy_handler);
26 void exti4_irqhandler() __alias(dummy_handler);
27 void dma1_ch1_irqhandler() __alias(dummy_handler);
28 void dma1_ch2_irqhandler() __alias(dummy_handler);
29 void dma1_ch3_irqhandler() __alias(dummy_handler);
30 void dma1_ch4_irqhandler() __alias(dummy_handler);
31 void dma1_ch5_irqhandler() __alias(dummy_handler);
32 void dma1_ch6_irqhandler() __alias(dummy_handler);
33 void dma1_ch7_irqhandler() __alias(dummy_handler);
34 void adc1_2_irqhandler() __alias(dummy_handler);
35 void usb_hp_can1_tx_irqhandler() __alias(dummy_handler);
36 void usb_lp_can1_rx0_irqhandler() __alias(dummy_handler);
37 void can1_rx1_irqhandler() __alias(dummy_handler);
38 void can1_sce_irqhandler() __alias(dummy_handler);
39 void exti9_5_irqhandler() __alias(dummy_handler);
40 void tim1_brk_irqhandler() __alias(dummy_handler);
41 void tim1_up_irqhandler() __alias(dummy_handler);
42 void tim1_trg_com_irqhandler() __alias(dummy_handler);
43 void tim1_cc_irqhandler() __alias(dummy_handler);
44 void tim2_irqhandler() __alias(dummy_handler);
45 void tim3_irqhandler() __alias(dummy_handler);
46 void tim4_irqhandler() __alias(dummy_handler);
47 void i2c1_ev_irqhandler() __alias(dummy_handler);
48 void i2c1_er_irqhandler() __alias(dummy_handler);
49 void i2c2_ev_irqhandler() __alias(dummy_handler);
50 void i2c2_er_irqhandler() __alias(dummy_handler);
51 void spi1_irqhandler() __alias(dummy_handler);
52 void spi2_irqhandler() __alias(dummy_handler);
53 void usart1_irqhandler() __alias(dummy_handler);
54 void usart2_irqhandler() __alias(dummy_handler);
55 void usart3_irqhandler() __alias(dummy_handler);
56 void exti15_10_irqhandler() __alias(dummy_handler);
57 void rtc_alarm_irqhandler() __alias(dummy_handler);
58 void usb_wkup_irqhandler() __alias(dummy_handler);
59 void tim8_brk_irqhandler() __alias(dummy_handler);
60 void tim8_up_irqhandler() __alias(dummy_handler);
61 void tim8_trg_com_irqhandler() __alias(dummy_handler);
62 void tim8_cc_irqhandler() __alias(dummy_handler);
63 void adc3_irqhandler() __alias(dummy_handler);
64 void fsmc_irqhandler() __alias(dummy_handler);
65 void sdio_irqhandler() __alias(dummy_handler);
66 void tim5_irqhandler() __alias(dummy_handler);
67 void spi3_irqhandler() __alias(dummy_handler);
68 void uart4_irqhandler() __alias(dummy_handler);
69 void uart5_irqhandler() __alias(dummy_handler);
70 void tim6_irqhandler() __alias(dummy_handler);
71 void tim7_irqhandler() __alias(dummy_handler);
72 void dma2_ch1_irqhandler() __alias(dummy_handler);
73 void dma2_ch2_irqhandler() __alias(dummy_handler);
74 void dma2_ch3_irqhandler() __alias(dummy_handler);
75 void dma2_ch4_5_irqhandler() __alias(dummy_handler);
78 void __naked dummy_handler()
80 asm volatile ( "b generic_exception_handler\n\t");
83 __attribute__ ((section(".vectors"))) void (* const _vectors[])() =
85 /* exceptions, arch specific */
86 &_ram_end, /* stack */
87 reset_handler,
88 nmi_handler,
89 hardfault_handler,
90 memmanage_handler, /* 4, 0x10 */
91 busfault_handler,
92 usagefault_handler,
94 0, /* 8, 0x20 */
97 svc_handler,
98 debugmon_handler, /* 12, 0x30 */
100 pendsv_handler,
101 systick_handler,
103 /* interrupts, mach specific */
104 wwdg_irqhandler, /* 16, 0x40 */
105 pvd_irqhandler,
106 tamper_irqhandler,
107 rtc_irqhandler,
108 flash_irqhandler,
109 rcc_irqhandler,
110 exti0_irqhandler,
111 exti1_irqhandler,
112 exti2_irqhandler, /* 24, 0x60 */
113 exti3_irqhandler,
114 exti4_irqhandler,
115 dma1_ch1_irqhandler,
116 dma1_ch2_irqhandler,
117 dma1_ch3_irqhandler,
118 dma1_ch4_irqhandler,
119 dma1_ch5_irqhandler,
120 dma1_ch6_irqhandler, /* 32, 0x80 */
121 dma1_ch7_irqhandler,
122 adc1_2_irqhandler,
123 usb_hp_can1_tx_irqhandler,
124 usb_lp_can1_rx0_irqhandler,
125 can1_rx1_irqhandler,
126 can1_sce_irqhandler,
127 exti9_5_irqhandler,
128 tim1_brk_irqhandler, /* 40, 0xa0 */
129 tim1_up_irqhandler,
130 tim1_trg_com_irqhandler,
131 tim1_cc_irqhandler,
132 tim2_irqhandler,
133 tim3_irqhandler,
134 tim4_irqhandler,
135 i2c1_ev_irqhandler,
136 i2c1_er_irqhandler, /* 48, 0xc0 */
137 i2c2_ev_irqhandler,
138 i2c2_er_irqhandler,
139 spi1_irqhandler,
140 spi2_irqhandler,
141 usart1_irqhandler,
142 usart2_irqhandler,
143 usart3_irqhandler,
144 exti15_10_irqhandler, /* 56, 0xe0 */
145 rtc_alarm_irqhandler,
146 usb_wkup_irqhandler,
147 tim8_brk_irqhandler,
148 tim8_up_irqhandler,
149 tim8_trg_com_irqhandler,
150 tim8_cc_irqhandler,
151 adc3_irqhandler,
152 fsmc_irqhandler, /* 64, 0x100 */
153 sdio_irqhandler,
154 tim5_irqhandler,
155 spi3_irqhandler,
156 uart4_irqhandler,
157 uart5_irqhandler,
158 tim6_irqhandler,
159 tim7_irqhandler,
160 dma2_ch1_irqhandler, /* 72, 0x120 */
161 dma2_ch2_irqhandler,
162 dma2_ch3_irqhandler,
163 dma2_ch4_5_irqhandler,