]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_LM3S2965_KEIL/startup_rvmdk.S
Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt
[freertos] / Demo / CORTEX_LM3S2965_KEIL / startup_rvmdk.S
1 ; <<< Use Configuration Wizard in Context Menu >>>\r
2 ;******************************************************************************\r
3 ;\r
4 ; startup_rvmdk.S - Startup code for use with Keil's uVision.\r
5 ;\r
6 ; Copyright (c) 2007 Luminary Micro, Inc.  All rights reserved.\r
7\r
8 ; Software License Agreement\r
9\r
10 ; Luminary Micro, Inc. (LMI) is supplying this software for use solely and\r
11 ; exclusively on LMI's microcontroller products.\r
12\r
13 ; The software is owned by LMI and/or its suppliers, and is protected under\r
14 ; applicable copyright laws.  All rights are reserved.  Any use in violation\r
15 ; of the foregoing restrictions may subject the user to criminal sanctions\r
16 ; under applicable laws, as well as to civil liability for the breach of the\r
17 ; terms and conditions of this license.\r
18\r
19 ; THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
20 ; OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
21 ; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
22 ; LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
23 ; CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
24\r
25 ; This is part of revision 1408 of the Stellaris Peripheral Driver Library.\r
26 ;\r
27 ;******************************************************************************\r
28 \r
29 ;******************************************************************************\r
30 ;\r
31 ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\r
32 ;\r
33 ;******************************************************************************\r
34 Stack   EQU     0x00000800\r
35 \r
36 ;******************************************************************************\r
37 ;\r
38 ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\r
39 ;\r
40 ;******************************************************************************\r
41 Heap    EQU     0x00000000\r
42 \r
43 ;******************************************************************************\r
44 ;\r
45 ; Allocate space for the stack.\r
46 ;\r
47 ;******************************************************************************\r
48         AREA    STACK, NOINIT, READWRITE, ALIGN=3\r
49 StackMem\r
50         SPACE   Stack\r
51 __initial_sp\r
52 \r
53 ;******************************************************************************\r
54 ;\r
55 ; Allocate space for the heap.\r
56 ;\r
57 ;******************************************************************************\r
58         AREA    HEAP, NOINIT, READWRITE, ALIGN=3\r
59 __heap_base\r
60 HeapMem\r
61         SPACE   Heap\r
62 __heap_limit\r
63 \r
64 ;******************************************************************************\r
65 ;\r
66 ; Indicate that the code in this file preserves 8-byte alignment of the stack.\r
67 ;\r
68 ;******************************************************************************\r
69         PRESERVE8\r
70 \r
71 ;******************************************************************************\r
72 ;\r
73 ; Place code into the reset code section.\r
74 ;\r
75 ;******************************************************************************\r
76         AREA    RESET, CODE, READONLY\r
77         THUMB\r
78 \r
79 ;******************************************************************************\r
80 ;\r
81 ; The vector table.\r
82 ;\r
83 ;******************************************************************************\r
84         EXPORT  __Vectors\r
85 __Vectors\r
86         DCD     StackMem + Stack            ; Top of Stack\r
87         DCD     Reset_Handler               ; Reset Handler\r
88         DCD     NmiSR                       ; NMI Handler\r
89         DCD     FaultISR                    ; Hard Fault Handler\r
90         DCD     IntDefaultHandler           ; MPU Fault Handler\r
91         DCD     IntDefaultHandler           ; Bus Fault Handler\r
92         DCD     IntDefaultHandler           ; Usage Fault Handler\r
93         DCD     0                           ; Reserved\r
94         DCD     0                           ; Reserved\r
95         DCD     0                           ; Reserved\r
96         DCD     0                           ; Reserved\r
97         DCD     IntDefaultHandler           ; SVCall Handler\r
98         DCD     IntDefaultHandler           ; Debug Monitor Handler\r
99         DCD     0                           ; Reserved\r
100                 EXTERN  xPortPendSVHandler\r
101         DCD     xPortPendSVHandler          ; PendSV Handler\r
102         EXTERN  xPortSysTickHandler\r
103         DCD     xPortSysTickHandler         ; SysTick Handler\r
104         DCD     IntDefaultHandler           ; GPIO Port A\r
105         DCD     IntDefaultHandler           ; GPIO Port B\r
106         DCD     IntDefaultHandler           ; GPIO Port C\r
107         DCD     IntDefaultHandler           ; GPIO Port D\r
108         DCD     IntDefaultHandler           ; GPIO Port E\r
109         DCD     IntDefaultHandler           ; UART0\r
110         DCD     IntDefaultHandler           ; UART1\r
111         DCD     IntDefaultHandler           ; SSI\r
112         DCD     IntDefaultHandler           ; I2C\r
113         DCD     IntDefaultHandler           ; PWM Fault\r
114         DCD     IntDefaultHandler           ; PWM Generator 0\r
115         DCD     IntDefaultHandler           ; PWM Generator 1\r
116         DCD     IntDefaultHandler           ; PWM Generator 2\r
117         DCD     IntDefaultHandler           ; Quadrature Encoder\r
118         DCD     IntDefaultHandler           ; ADC Sequence 0\r
119         DCD     IntDefaultHandler           ; ADC Sequence 1\r
120         DCD     IntDefaultHandler           ; ADC Sequence 2\r
121         DCD     IntDefaultHandler           ; ADC Sequence 3\r
122         DCD     IntDefaultHandler           ; Watchdog\r
123         EXTERN  Timer0IntHandler\r
124         DCD     Timer0IntHandler            ; Timer 0A\r
125         DCD     IntDefaultHandler           ; Timer 0B\r
126         DCD     IntDefaultHandler           ; Timer 1A\r
127         DCD     IntDefaultHandler           ; Timer 1B\r
128         DCD     IntDefaultHandler           ; Timer 2A\r
129         DCD     IntDefaultHandler           ; Timer 2B\r
130         DCD     IntDefaultHandler           ; Comp 0\r
131         DCD     IntDefaultHandler           ; Comp 1\r
132         DCD     IntDefaultHandler           ; Comp 2\r
133         DCD     IntDefaultHandler           ; System Control\r
134         DCD     IntDefaultHandler           ; Flash Control\r
135         DCD     IntDefaultHandler           ; GPIO Port F\r
136         DCD     IntDefaultHandler           ; GPIO Port G\r
137         DCD     IntDefaultHandler           ; GPIO Port H\r
138         DCD     IntDefaultHandler           ; UART2 Rx and Tx\r
139         DCD     IntDefaultHandler           ; SSI1 Rx and Tx\r
140         DCD     IntDefaultHandler           ; Timer 3 subtimer A\r
141         DCD     IntDefaultHandler           ; Timer 3 subtimer B\r
142         DCD     IntDefaultHandler           ; I2C1 Master and Slave\r
143         DCD     IntDefaultHandler           ; Quadrature Encoder 1\r
144         DCD     IntDefaultHandler           ; CAN0\r
145         DCD     IntDefaultHandler           ; CAN1\r
146         DCD     0                           ; Reserved\r
147         DCD     IntDefaultHandler           ; Ethernet\r
148         DCD     IntDefaultHandler           ; Hibernate\r
149 \r
150 ;******************************************************************************\r
151 ;\r
152 ; This is the code that gets called when the processor first starts execution\r
153 ; following a reset event.\r
154 ;\r
155 ;******************************************************************************\r
156         EXPORT  Reset_Handler\r
157 Reset_Handler\r
158         ;\r
159         ; Call the C library enty point that handles startup.  This will copy\r
160         ; the .data section initializers from flash to SRAM and zero fill the\r
161         ; .bss section.  It will then call __rt_entry, which will be either the\r
162         ; C library version or the one supplied here depending on the\r
163         ; configured startup type.\r
164         ;\r
165         IMPORT  __main\r
166         B       __main\r
167 \r
168 ;******************************************************************************\r
169 ;\r
170 ; This is the code that gets called when the processor receives a NMI.  This\r
171 ; simply enters an infinite loop, preserving the system state for examination\r
172 ; by a debugger.\r
173 ;\r
174 ;******************************************************************************\r
175 NmiSR\r
176         B       NmiSR\r
177 \r
178 ;******************************************************************************\r
179 ;\r
180 ; This is the code that gets called when the processor receives a fault\r
181 ; interrupt.  This simply enters an infinite loop, preserving the system state\r
182 ; for examination by a debugger.\r
183 ;\r
184 ;******************************************************************************\r
185 FaultISR\r
186         B       FaultISR\r
187 \r
188 ;******************************************************************************\r
189 ;\r
190 ; This is the code that gets called when the processor receives an unexpected\r
191 ; interrupt.  This simply enters an infinite loop, preserving the system state\r
192 ; for examination by a debugger.\r
193 ;\r
194 ;******************************************************************************\r
195 IntDefaultHandler\r
196         B       IntDefaultHandler\r
197 \r
198 ;******************************************************************************\r
199 ;\r
200 ; Make sure the end of this section is aligned.\r
201 ;\r
202 ;******************************************************************************\r
203         ALIGN\r
204 \r
205 ;******************************************************************************\r
206 ;\r
207 ; Some code in the normal code section for initializing the heap and stack.\r
208 ;\r
209 ;******************************************************************************\r
210         AREA    |.text|, CODE, READONLY\r
211 \r
212 ;******************************************************************************\r
213 ;\r
214 ; The function expected of the C library startup code for defining the stack\r
215 ; and heap memory locations.  For the C library version of the startup code,\r
216 ; provide this function so that the C library initialization code can find out\r
217 ; the location of the stack and heap.\r
218 ;\r
219 ;******************************************************************************\r
220     IF :DEF: __MICROLIB\r
221         EXPORT  __initial_sp\r
222         EXPORT  __heap_base\r
223         EXPORT  __heap_limit\r
224     ELSE\r
225         IMPORT  __use_two_region_memory\r
226         EXPORT  __user_initial_stackheap\r
227 __user_initial_stackheap\r
228         LDR     R0, =HeapMem\r
229         LDR     R1, =(StackMem + Stack)\r
230         LDR     R2, =(HeapMem + Heap)\r
231         LDR     R3, =StackMem\r
232         BX      LR\r
233     ENDIF\r
234 \r
235 ;******************************************************************************\r
236 ;\r
237 ; Make sure the end of this section is aligned.\r
238 ;\r
239 ;******************************************************************************\r
240         ALIGN\r
241 \r
242 ;******************************************************************************\r
243 ;\r
244 ; Tell the assembler that we're done.\r
245 ;\r
246 ;******************************************************************************\r
247         END\r