📄 board_cstartup_iar.lst
字号:
Reset
88 00000004 14F09FE5 LDR pc, Undefined_Addr ;
Undefined instructions
89 00000008 14F09FE5 LDR pc, SWI_Addr ;
Software interrupt
(SWI/SYS)
90 0000000C 14F09FE5 LDR pc, Prefetch_Addr ;
Prefetch abort
91 00000010 14F09FE5 LDR pc, Abort_Addr ; Data
abort
92 00000014 FEFFFFEA B . ;
RESERVED
93 00000018 60F09FE5 LDR pc, =irqHandler ;
IRQ
94 0000001C 0CF09FE5 LDR pc, FIQ_Addr ;
FIQ
95
96 00000020 ........ Undefined_Addr: DCD Undefined_Handler
97 00000024 ........ SWI_Addr: DCD SWI_Handler
98 00000028 ........ Prefetch_Addr: DCD Prefetch_Handler
99 0000002C ........ Abort_Addr: DCD Abort_Handler
100 00000030 ........ FIQ_Addr: DCD FIQ_Handler
101
102 /*
103 Handles incoming interrupt requests by
branching to the corresponding
104 handler, as defined in the AIC. Supports
interrupt nesting.
105 */
106 irqHandler:
107 /* Save interrupt context on the stack
to allow nesting */
108 00000034 04E04EE2 SUB lr, lr, #4
109 00000038 00402DE9 STMFD sp!, {lr}
110 0000003C 00E04FE1 MRS lr, SPSR
111 00000040 01402DE9 STMFD sp!, {r0, lr}
112
113 /* Write in the IVR to support Protect
Mode */
114 00000044 38E09FE5 LDR lr, =AT91C_BASE_AIC
115 00000048 00019EE5 LDR r0, [r14, #AIC_IVR]
116 0000004C 00E18EE5 STR lr, [r14, #AIC_IVR]
117
118 /* Branch to interrupt handler in
Supervisor mode */
119 00000050 1FF021E3 MSR CPSR_c, #ARM_MODE_SYS
120 00000054 1E502DE9 STMFD sp!, {r1-r3, r4, r12, lr}
121 00000058 0FE0A0E1 MOV lr, pc
122 0000005C 10FF2FE1 BX r0
123 00000060 1E50BDE8 LDMIA sp!, {r1-r3, r4, r12, lr}
124 00000064 92F021E3 MSR CPSR_c, #ARM_MODE_IRQ |
I_BIT
125
126 /* Acknowledge interrupt */
127 00000068 14E09FE5 LDR lr, =AT91C_BASE_AIC
128 0000006C 30E18EE5 STR lr, [r14, #AIC_EOICR]
129
130 /* Restore interrupt context and branch
back to calling code */
131 00000070 0140BDE8 LDMIA sp!, {r0, lr}
132 00000074 0EF06FE1 MSR SPSR_cxsf, lr
133 00000078 0080FDE8 LDMIA sp!, {pc}^
134
135
136 /*
137 After a reset, execution starts here, the
mode is ARM, supervisor
138 with interrupts disabled.
139 Initializes the chip and branches to the
main() function.
140 */
141 SECTION .cstartup:CODE:NOROOT(2)
141.1 TABLE
141.2 0000007C ........ Reference on line 87
141.3 00000080 ........ Reference on line 93
141.4 00000084 00F0FFFF Reference on line 114,127
141.5 RSEG (including table)
141 SECTION .cstartup:CODE:NOROOT(2)
142
143 PUBLIC resetHandler
144 EXTERN LowLevelInit
145 EXTERN ?main
146 REQUIRE resetVector
147 ARM
148
149 resetHandler:
150
151 /* Set pc to actual code location (i.e.
not in remap zone) */
152 00000000 30F09FE5 LDR pc, =label
153
154 /* Perform low-level initialization of
the chip using LowLevelInit() */
155 label:
156 00000004 30009FE5 LDR r0, =LowLevelInit
157 00000008 30409FE5 LDR r4, =SFE(CSTACK)
158 0000000C 04D0A0E1 MOV sp, r4
159 00000010 0FE0A0E1 MOV lr, pc
160 00000014 10FF2FE1 BX r0
161
162 /* Set up the interrupt stack pointer.
*/
163 00000018 D2F021E3 MSR cpsr_c, #ARM_MODE_IRQ | I_BIT |
F_BIT ; Change the
mode
164 0000001C 20D09FE5 LDR sp, =SFE(IRQ_STACK)
165
166 /* Set up the SYS stack pointer.
*/
167 00000020 5FF021E3 MSR cpsr_c, #ARM_MODE_SYS | F_BIT
; Change the
mode
168 00000024 14D09FE5 LDR sp, =SFE(CSTACK)
169
170 /* Branch to main() */
171 00000028 18009FE5 LDR r0, =?main
172 0000002C 0FE0A0E1 MOV lr, pc
173 00000030 10FF2FE1 BX r0
174
175 /* Loop indefinitely when program is
finished */
176 loop4:
177 00000034 FEFFFFEA B loop4
178
179 END
179.1 TABLE
179.2 00000038 ........ Reference on line 152
179.3 0000003C ........ Reference on line 156
179.4 00000040 ........ Reference on line 157,168
179.5 00000044 ........ Reference on line 164
179.6 00000048 ........ Reference on line 171
179.7 END (including table)
##############################
# CRC:0 #
# Errors: 0 #
# Warnings: 0 #
# Bytes: 212 #
##############################
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -