📄 cstartup.lst
字号:
Stack
125 00000068 0E502DE9 stmfd sp!, {r1-r3, r12, r14}
126 0000006C
127 0000006C ;----------------------------------------------
128 0000006C ;- Branch to the routine pointed by the
AIC_IVR
129 0000006C ;----------------------------------------------
130 0000006C 0FE0A0E1 mov r14, pc
131 00000070 10FF2FE1 bx r0
132 00000074
133 00000074 ;----------------------------------------------
134 00000074 ;- Manage Exception Exit
135 00000074 ;----------------------------------------------
136 00000074 ;- Restore scratch/used registers and LR from
User Stack
137 00000074 0E50BDE8 ldmia sp!, {r1-r3, r12, r14}
138 00000078
139 00000078 ;- Disable Interrupt and switch back in IRQ
mode
140 00000078 92F021E3 msr CPSR_c, #0x92
141 0000007C
142 0000007C ;- Mark the End of Interrupt on the AIC
143 0000007C 94E09FE5 ldr r14, =AT91C_BASE_AIC
144 00000080 30E18EE5 str r14, [r14, #AIC_EOICR]
145 00000084
146 00000084 ;- Restore SPSR_irq and r0 from IRQ stack
147 00000084 0140BDE8 ldmia sp!, {r0, r14}
148 00000088 0EF06FE1 msr SPSR_cxsf, r14
149 0000008C
150 0000008C ;- Restore adjusted LR_irq from IRQ stack
directly in the PC
151 0000008C 0080FDE8 ldmia sp!, {pc}^
152 00000090
153 00000090 ;-----------------------------------------------
-------------------------------
154 00000090 ;- Low level Init is performed in a C function:
AT91F_LowLevelInit
155 00000090 ;- Init Stack Pointer to a valid memory area
before calling AT91F_LowLevelInit
156 00000090 ;-----------------------------------------------
-------------------------------
157 00000090 ;- Retrieve end of RAM address
158 00000090 ;__iramend EQU INTRAMEND_REMAP ;-
Segment begin
159 00000090 __iramend EQU SFB(INTRAMEND_REMAP) ;-
Segment begin
160 00000000 EXTERN AT91F_LowLevelInit
161 00000090 InitReset:
162 00000090 84D09FE5 ldr r13, =__iramend ;-
Temporary stack
163 00000094 84009FE5 ldr r0, =AT91F_LowLevelInit
164 00000098 0FE0A0E1 mov lr, pc
165 0000009C 10FF2FE1 bx r0
166 000000A0
167 000000A0 ;-----------------------------------------------
-------------------------------
168 000000A0 ;- Top of Stack Definition
169 000000A0 ;-----------------------------------------------
-------------------------------
170 000000A0 ;- Interrupt and Supervisor Stack are located at
the top of internal memory in
171 000000A0 ;- order to speed the exception handling context
saving and restoring.
172 000000A0 ;- ARM_MODE_SVC (App, C) Stack is located at the
top of the external memory.
173 000000A0 ;-----------------------------------------------
-------------------------------
174 000000A0 ;- 3 words to be saved per interrupt priority
level
175 00000060 IRQ_STACK_SIZE EQU (3*8*4)
176 000000A0
177 000000A0 ;-----------------------------------------------
-------------------------------
178 000000A0 ;- Setup the stack for each mode
179 000000A0 ;-----------------------------------------------
-------------------------------
180 000000A0 74009FE5 ldr r0, =__iramend
181 000000A4
182 000000A4 ;- Set up Fast Interrupt Mode and set FIQ Mode
Stack
183 000000A4 D1F021E3 msr CPSR_c, #0xd1
184 000000A8 ;- Init the FIQ register
185 000000A8 68809FE5 ldr r8, =AT91C_BASE_AIC
186 000000AC
187 000000AC ;- Set up Interrupt Mode and set IRQ Mode
Stack
188 000000AC D2F021E3 msr CPSR_c, #0xd2
189 000000B0 00D0A0E1 mov r13, r0
190 000000B4 600040E2 sub r0, r0, #IRQ_STACK_SIZE
191 000000B8
192 000000B8 ;- Enable interrupt & Set Supervisor Mode
Stack
193 000000B8 13F021E3 msr CPSR_c, #0x13
194 000000BC 00D0A0E1 mov r13, r0
195 000000C0
196 000000C0 ;-----------------------------------------------
----------------
197 000000C0 ; ?CSTARTUP
198 000000C0 ;-----------------------------------------------
----------------
199 00000000 EXTERN __segment_init
200 000000C0 ; Initialize segments.
201 000000C0 5C009FE5 ldr r0, =__segment_init
202 000000C4 0FE0A0E1 mov lr, pc
203 000000C8 10FF2FE1 bx r0
204 000000CC
205 00000000 EXTERN main
206 00000000 PUBLIC __main
207 000000CC ?jump_to_main:
208 000000CC 54E09FE5 ldr lr, =?call_exit
209 000000D0 54009FE5 ldr r0, =main
210 000000D4 __main:
211 000000D4 10FF2FE1 bx r0
212 000000D8
213 000000D8 ;-----------------------------------------------
-------------------------------
214 000000D8 ;- Loop for ever
215 000000D8 ;---------------
216 000000D8 ;- End of application. Normally, never
occur.
217 000000D8 ;-----------------------------------------------
-------------------------------
218 000000D8 ?call_exit:
219 000000D8 End
220 000000D8 FEFFFFEA b End
221 000000DC
222 000000DC ;-----------------------------------------------
-------------------------------
223 000000DC ;- Exception Vectors
224 000000DC ;-----------------------------------------------
-------------------------------
225 000000DC CODE32 ; Always ARM mode after
exeption
226 00000000 PUBLIC AT91F_Default_FIQ_handler
227 00000000 PUBLIC AT91F_Default_IRQ_handler
228 00000000 PUBLIC AT91F_Spurious_handler
229 000000DC
230 000000DC AT91F_Default_FIQ_handler:
231 000000DC FEFFFFEA b AT91F_Default_FIQ_handler
232 000000E0
233 000000E0 AT91F_Default_IRQ_handler:
234 000000E0 FEFFFFEA b AT91F_Default_IRQ_handler
235 000000E4
236 000000E4 AT91F_Spurious_handler:
237 000000E4 FEFFFFEA b AT91F_Spurious_handler
238 000000E8
239 000000E8 ;-----------------------------------------------
-------------------------------
240 00000000 PUBLIC ARMDisableInt
241 000000E8 ARMDisableInt:
242 000000E8 01002DE9 STMFD sp!, {r0}
243 000000EC 00000FE1 MRS r0, CPSR
244 000000F0 800080E3 ORR r0, r0, #0x80
245 000000F4 00F02FE1 MSR CPSR_cxsf, r0
246 000000F8 0100BDE8 LDMFD sp!, {r0}
247 000000FC 0EF0A0E1 MOV pc, lr
248 00000100
249 00000000 PUBLIC ARMEnableInt
250 00000100 ARMEnableInt:
251 00000100 01002DE9 STMFD sp!, {r0}
252 00000104 00000FE1 MRS r0, CPSR
253 00000108 8000C0E3 BIC r0, r0, #0x80
254 0000010C 00F02FE1 MSR CPSR_cxsf, r0
255 00000110 0100BDE8 LDMFD sp!, {r0}
256 00000114 0EF0A0E1 MOV pc, lr
257 00000118
258 00000118 ;-----------------------------------------------
-------------------------------
259 00000118 END
259.1 00000118 TABLE
259.2 00000118 00F0FFFF Reference on line 117,143,185
259.3 0000011C ........ Reference on line 162,180
259.4 00000120 ........ Reference on line 163
259.5 00000124 ........ Reference on line 201
259.6 00000128 ........ Reference on line 208
259.7 0000012C ........ Reference on line 209
259.8 00000130 END (including table)
##############################
# CRC:2DF5 #
# Errors: 0 #
# Warnings: 0 #
# Bytes: 304 #
##############################
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -