]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_LM3Sxxxx_Rowley/LM3S_Startup.s
commit 9f316c246baafa15c542a5aea81a94f26e3d6507
[freertos] / FreeRTOS / Demo / CORTEX_LM3Sxxxx_Rowley / LM3S_Startup.s
1 /*****************************************************************************\r
2  * Copyright (c) 2006 Rowley Associates Limited.                             *\r
3  *                                                                           *\r
4  * This file may be distributed under the terms of the License Agreement     *\r
5  * provided with this software.                                              *\r
6  *                                                                           *\r
7  * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE   *\r
8  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. *\r
9  *****************************************************************************/\r
10 \r
11 /*****************************************************************************\r
12  *                           Preprocessor Definitions\r
13  *                           ------------------------\r
14  *\r
15  * STARTUP_FROM_RESET\r
16  *\r
17  *   If defined, the program will startup from power-on/reset. If not defined\r
18  *   the program will just loop endlessly from power-on/reset.\r
19  *\r
20  *   This definition is not defined by default on this target because the\r
21  *   debugger is unable to reset this target and maintain control of it over the\r
22  *   JTAG interface. The advantage of doing this is that it allows the debugger\r
23  *   to reset the CPU and run programs from a known reset CPU state on each run.\r
24  *   It also acts as a safety net if you accidently download a program in FLASH\r
25  *   that crashes and prevents the debugger from taking control over JTAG\r
26  *   rendering the target unusable over JTAG. The obvious disadvantage of doing\r
27  *   this is that your application will not startup without the debugger.\r
28  *\r
29  *   We advise that on this target you keep STARTUP_FROM_RESET undefined whilst\r
30  *   you are developing and only define STARTUP_FROM_RESET when development is\r
31  *   complete.\r
32  *\r
33  *****************************************************************************/\r
34 \r
35 .extern xPortPendSVHandler\r
36 .extern xPortSysTickHandler\r
37 .extern vPortSVCHandler\r
38 .extern Timer0IntHandler\r
39 .extern vT2InterruptHandler\r
40 .extern vT3InterruptHandler\r
41 .extern vEMAC_ISR\r
42 \r
43 \r
44 .global reset_handler\r
45 \r
46 .macro DEFAULT_ISR_HANDLER name=\r
47   .thumb_func\r
48   .weak \name\r
49 \name:\r
50 1: b 1b /* endless loop */\r
51 .endm\r
52 \r
53   .section .vectors, "ax"\r
54   .code 16\r
55   .align 0\r
56   .global _vectors\r
57 \r
58 _vectors:\r
59   .word __stack_end__\r
60 #ifdef STARTUP_FROM_RESET\r
61   .word reset_handler\r
62 #else\r
63   .word reset_wait\r
64 #endif /* STARTUP_FROM_RESET */\r
65   .word Nmi_ISR\r
66   .word Fault_ISR\r
67   .word MPU_Fault_ISR\r
68   .word 0  /* Populate if using Bus fault */\r
69   .word 0  /* Populate if using Usage fault */\r
70   .word 0  /* Reserved */\r
71   .word 0  /* Reserved */\r
72   .word 0  /* Reserved */\r
73   .word 0  /* Reserved */\r
74   .word vPortSVCHandler\r
75   .word 0  /* Populate if using a debug monitor */\r
76   .word 0  /* Reserved */\r
77   .word xPortPendSVHandler\r
78   .word xPortSysTickHandler\r
79   .word GPIO_Port_A_ISR\r
80   .word GPIO_Port_B_ISR\r
81   .word GPIO_Port_C_ISR\r
82   .word GPIO_Port_D_ISR\r
83   .word GPIO_Port_E_ISR\r
84   .word UART0_ISR\r
85   .word UART1_ISR\r
86   .word SSI_ISR\r
87   .word I2C_ISR\r
88   .word PWM_Fault_ISR\r
89   .word PWM_Generator_0_ISR\r
90   .word PWM_Generator_1_ISR\r
91   .word PWM_Generator_2_ISR\r
92   .word QEI_ISR\r
93   .word ADC_Sequence_0_ISR\r
94   .word ADC_Sequence_1_ISR\r
95   .word ADC_Sequence_2_ISR\r
96   .word ADC_Sequence_3_ISR\r
97   .word Watchdog_Timer_ISR\r
98   .word Timer0IntHandler\r
99   .word Timer0B_ISR\r
100   .word Timer1A_ISR\r
101   .word Timer1B_ISR\r
102   .word vT2InterruptHandler\r
103   .word Timer2B_ISR\r
104   .word Analog_Comparator_0_ISR\r
105   .word Analog_Comparator_1_ISR\r
106   .word Analog_Comparator_2_ISR\r
107   .word System_Control_ISR\r
108   .word FLASH_Control_ISR\r
109   .word GPIO_Port_F_ISR\r
110   .word GPIO_Port_G_ISR\r
111   .word GPIO_Port_H_ISR\r
112   .word UART2_ISR\r
113   .word SSI1_ISR\r
114   .word vT3InterruptHandler\r
115   .word Timer3B_ISR\r
116   .word I2C1_ISR\r
117   .word QEI1_ISR\r
118   .word CAN0_ISR\r
119   .word CAN1_ISR\r
120   .word CAN2_ISR\r
121   .word vEMAC_ISR\r
122   .word HIBERNATE_ISR\r
123   .word USB0_ISR\r
124   .word PWM_Generator_3_ISR\r
125   .word uDMA_Software_Transfer_ISR\r
126   .word uDMA_Error_ISR\r
127 _vectors_end:\r
128 \r
129   .section .init, "ax"\r
130   .thumb_func\r
131 \r
132 reset_handler:\r
133 #ifdef __RAM_BUILD\r
134   /* If this is a RAM build, configure vector table offset register to point\r
135      to the RAM vector table. */\r
136   ldr r0, =0xE000ED08\r
137   ldr r1, =_vectors\r
138   str r1, [r0]\r
139 #endif\r
140   b _start\r
141 \r
142 DEFAULT_ISR_HANDLER Nmi_ISR\r
143 DEFAULT_ISR_HANDLER Fault_ISR\r
144 DEFAULT_ISR_HANDLER MPU_Fault_ISR\r
145 DEFAULT_ISR_HANDLER SVCall_ISR\r
146 DEFAULT_ISR_HANDLER SysTick_ISR\r
147 DEFAULT_ISR_HANDLER PendSV_ISR\r
148 DEFAULT_ISR_HANDLER GPIO_Port_A_ISR\r
149 DEFAULT_ISR_HANDLER GPIO_Port_B_ISR\r
150 DEFAULT_ISR_HANDLER GPIO_Port_C_ISR\r
151 DEFAULT_ISR_HANDLER GPIO_Port_D_ISR\r
152 DEFAULT_ISR_HANDLER GPIO_Port_E_ISR\r
153 DEFAULT_ISR_HANDLER UART0_ISR\r
154 DEFAULT_ISR_HANDLER UART1_ISR\r
155 DEFAULT_ISR_HANDLER SSI_ISR\r
156 DEFAULT_ISR_HANDLER I2C_ISR\r
157 DEFAULT_ISR_HANDLER PWM_Fault_ISR\r
158 DEFAULT_ISR_HANDLER PWM_Generator_0_ISR\r
159 DEFAULT_ISR_HANDLER PWM_Generator_1_ISR\r
160 DEFAULT_ISR_HANDLER PWM_Generator_2_ISR\r
161 DEFAULT_ISR_HANDLER QEI_ISR\r
162 DEFAULT_ISR_HANDLER ADC_Sequence_0_ISR\r
163 DEFAULT_ISR_HANDLER ADC_Sequence_1_ISR\r
164 DEFAULT_ISR_HANDLER ADC_Sequence_2_ISR\r
165 DEFAULT_ISR_HANDLER ADC_Sequence_3_ISR\r
166 DEFAULT_ISR_HANDLER Watchdog_Timer_ISR\r
167 DEFAULT_ISR_HANDLER Timer0A_ISR\r
168 DEFAULT_ISR_HANDLER Timer0B_ISR\r
169 DEFAULT_ISR_HANDLER Timer1A_ISR\r
170 DEFAULT_ISR_HANDLER Timer1B_ISR\r
171 DEFAULT_ISR_HANDLER Timer2A_ISR\r
172 DEFAULT_ISR_HANDLER Timer2B_ISR\r
173 DEFAULT_ISR_HANDLER Analog_Comparator_0_ISR\r
174 DEFAULT_ISR_HANDLER Analog_Comparator_1_ISR\r
175 DEFAULT_ISR_HANDLER Analog_Comparator_2_ISR\r
176 DEFAULT_ISR_HANDLER System_Control_ISR\r
177 DEFAULT_ISR_HANDLER FLASH_Control_ISR\r
178 DEFAULT_ISR_HANDLER GPIO_Port_F_ISR\r
179 DEFAULT_ISR_HANDLER GPIO_Port_G_ISR\r
180 DEFAULT_ISR_HANDLER GPIO_Port_H_ISR\r
181 DEFAULT_ISR_HANDLER UART2_ISR\r
182 DEFAULT_ISR_HANDLER SSI1_ISR\r
183 DEFAULT_ISR_HANDLER Timer3A_ISR\r
184 DEFAULT_ISR_HANDLER Timer3B_ISR\r
185 DEFAULT_ISR_HANDLER I2C1_ISR\r
186 DEFAULT_ISR_HANDLER QEI1_ISR\r
187 DEFAULT_ISR_HANDLER CAN0_ISR\r
188 DEFAULT_ISR_HANDLER CAN1_ISR\r
189 DEFAULT_ISR_HANDLER CAN2_ISR\r
190 DEFAULT_ISR_HANDLER ETHERNET_ISR\r
191 DEFAULT_ISR_HANDLER HIBERNATE_ISR\r
192 DEFAULT_ISR_HANDLER USB0_ISR\r
193 DEFAULT_ISR_HANDLER PWM_Generator_3_ISR\r
194 DEFAULT_ISR_HANDLER uDMA_Software_Transfer_ISR\r
195 DEFAULT_ISR_HANDLER uDMA_Error_ISR\r
196 \r
197 #ifndef STARTUP_FROM_RESET\r
198 DEFAULT_ISR_HANDLER reset_wait\r
199 #endif /* STARTUP_FROM_RESET */\r