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