📄 cp15.lst
字号:
132 00000168 E3A00000 mov r0,#&0
133 0000016C EE0D0F10 mcr p15,0,r0,c13,c0,0 ;write FCSE P
ID Register
134 00000170
135 00000170 ;mrc p15,0,r0,c1,c0,0 ;Read Control Regis
ter
136 00000170 ;ldr r1,=&fffa0c00
137 00000170 ;bic r0,r0,r1 ;clear SBZ bits
138 00000170 ;ldr r1,=&00050078
139 00000170 ;orr r0,r0,r1 ;set SBO bits
140 00000170 ;bic r0,r0,#&80 ;Little-endian
ARM Macro Assembler Page 10
141 00000170 ;orr r0,r0,#&1 ;MMU enable
142 00000170 ;orr r0,r0,#&1000 ;ICache enable
143 00000170 ;orr r0,r0,#&4 ;DCache enable
144 00000170 ;mcr p15,0,r0,c1,c0,0 ;write Control Regi
ster
145 00000170 ;mov r3,pc
146 00000170 ;ldr r2,[r3,#0]
147 00000170 ;ldr r2,[r3,#0]
148 00000170 ;ldr r2,[r3,#0]
149 00000170
150 00000170 ; add xhl
151 00000170 ; flush TLBs
152 00000170 E3A00000 mov r0, #0
153 00000174 E1A00000 nop
154 00000178 E1A00000 nop
155 0000017C EE080F15 mcr p15, #0, r0, c8, c5, #0
156 00000180 E1A00000 nop
157 00000184 E1A00000 nop
158 00000188 E1A00000 nop
159 0000018C E1A00000 nop
160 00000190 EE080F16 mcr p15, #0, r0, c8, c6, #0
161 00000194 E1A00000 nop
162 00000198 E1A00000 nop
163 0000019C E1A00000 nop
164 000001A0 E1A00000 nop
165 000001A4
166 000001A4 ; flush cache
167 000001A4 E3A00000 mov r0, #0
168 000001A8 E1A00000 nop
169 000001AC E1A00000 nop
170 000001B0 EE070F15 mcr p15, #0, r0, c7, c5, #0
171 000001B4 E1A00000 nop
172 000001B8 E1A00000 nop
173 000001BC E1A00000 nop
174 000001C0 E1A00000 nop
175 000001C4 EE070F16 mcr p15, #0, r0, c7, c6, #0
176 000001C8 E1A00000 nop
177 000001CC E1A00000 nop
178 000001D0 E1A00000 nop
179 000001D4 E1A00000 nop
180 000001D8
181 000001D8 ; enable the instruction cache and data cache
182 000001D8 EE111F10 mrc p15, #0, r1, c1, c0, #0
183 000001DC E3A00A01 mov r0,#0x1000
ARM Macro Assembler Page 11
184 000001E0 E1811000 orr r1, r1, r0 ; enable IC
185 000001E4 E1A00000 nop ; avoid LATECANCEL
bug
186 000001E8 EE011F10 mcr p15, #0, r1, c1, c0, #0
187 000001EC E1A00000 nop ; avoid LATECANCEL
bug and allow pipe
188 000001F0 E1A00000 nop ; to empty
189 000001F4 E1A00000 nop
190 000001F8 E1A00000 nop
191 000001FC
192 000001FC EE111F10 mrc p15, #0, r1, c1, c0, #0
193 00000200 E3A00005 mov r0,#5
194 00000204 E1811000 orr r1, r1, r0 ; enable DC, MMU (D
C - 4, MMU - 1)
195 00000208 E1A00000 nop ; avoid LATECANCEL
bug
196 0000020C EE011F10 mcr p15, #0, r1, c1, c0, #0
197 00000210 E1A00000 nop
198 00000214 E1A00000 nop
199 00000218 E1A00000 nop
200 0000021C E1A00000 nop
201 00000220 EE111F10 mrc p15, #0, r1, c1, c0, #0
; verify
202 00000224 E1A00000 nop
203 00000228 E1A00000 nop
204 0000022C E1A00000 nop
205 00000230 E1A00000 nop
206 00000234
207 00000234 ; flush TLBs
208 00000234 E3A00000 mov r0, #0
209 00000238 E1A00000 nop
210 0000023C E1A00000 nop
211 00000240 EE080F15 mcr p15, #0, r0, c8, c5, #0
212 00000244 E1A00000 nop
213 00000248 E1A00000 nop
214 0000024C E1A00000 nop
215 00000250 E1A00000 nop
216 00000254 EE080F16 mcr p15, #0, r0, c8, c6, #0
217 00000258 E1A00000 nop
218 0000025C E1A00000 nop
219 00000260 E1A00000 nop
220 00000264 E1A00000 nop
221 00000268
222 00000268
223 00000268 ; flush cache
224 00000268 E3A01000 mov r1, #0
225 0000026C E1A00000 nop
226 00000270 E1A00000 nop
227 00000274 EE070F15 mcr p15, #0, r0, c7, c5, #0
228 00000278 E1A00000 nop
229 0000027C E1A00000 nop
230 00000280 E1A00000 nop
231 00000284 E1A00000 nop
232 00000288 EE070F16 mcr p15, #0, r0, c7, c6, #0
233 0000028C E1A00000 nop
234 00000290 E1A00000 nop
235 00000294 E1A00000 nop
236 00000298 E1A00000 nop
237 0000029C
ARM Macro Assembler Page 12
238 0000029C E1A0F00E mov pc, r14 ; Go back to where
cache() is called f
rom
239 000002A0
240 000002A0
241 000002A0 E1A00000 nop
242 000002A4 E1A00000 nop
243 000002A8 E1A00000 nop
244 000002AC E1A00000 nop
245 000002B0 ;xhl add end
246 000002B0 mmuend
247 000002B0 E12FFF1E bx lr
248 000002B4
249 000002B4
250 000002B4 memregions
251 000002B4 04000000 DCD 0x04000000 ;size
252 000002B8 00000000 DCD 0x00000000 ;offset
253 000002BC 00000000 DCD 0x00000000 ;Description
254 000002C0 00000C0C DCD 0x00000c0c ;Description
255 000002C4 04000000 DCD 0x04000000
256 000002C8 04000000 DCD 0x04000000
257 000002CC 04000000 DCD 0x04000000
258 000002D0 00000C00 DCD 0x00000c00
259 000002D4 02000000 DCD 0x02000000
260 000002D8 08000000 DCD 0x08000000
261 000002DC 08000000 DCD 0x08000000
262 000002E0 00000C00 DCD 0x00000c00
263 000002E4 00100000 DCD 0x00100000
264 000002E8 10100000 DCD 0x10100000
265 000002EC 10100000 DCD 0x10100000
266 000002F0 00000C00 DCD 0x00000c00
267 000002F4 02000000 DCD 0x02000000
268 000002F8 30000000 DCD 0x30000000
269 000002FC 30000000 DCD 0x30000000
270 00000300 00000C00 DCD 0x00000c00
271 00000304 01000000 DCD 0x01000000
272 00000308 38000000 DCD 0x38000000
273 0000030C 38000000 DCD 0x38000000
274 00000310 00000C00 DCD 0x00000c00
275 00000314 00800000 DCD 0x00800000
276 00000318 40000000 DCD 0x40000000
277 0000031C 40000000 DCD 0x40000000
278 00000320 00000C00 DCD 0x00000c00
279 00000324 00100000 DCD 0x00100000
280 00000328 48000000 DCD 0x48000000
281 0000032C 48000000 DCD 0x48000000
282 00000330 00000C00 DCD 0x00000c00
283 00000334 00000000 DCD 0x00000000
284 00000338
285 00000338 ;*******************************************************
**********
286 00000338 ;*
287 00000338 ;* Function Name
288 00000338 ;* ARM_disableIRQ
289 00000338 ;* Inputs
290 00000338 ;* None
291 00000338 ;* Outputs
292 00000338 ;* None
293 00000338 ;* Return Codes
ARM Macro Assembler Page 13
294 00000338 ;* None
295 00000338 ;* Description
296 00000338 ;* Disable IRQ interrupt for ARM
297 00000338 ;* Date:
298 00000338 ;* 2008-03-06
299 00000338 ;*******************************************************
**********/
300 00000338 EXPORT ARM_disableIRQ
301 00000338 ARM_disableIRQ
302 00000338 E92D0007 stmfd r13!, {r0-r2}
303 0000033C E10F1000 mrs r1, cpsr
304 00000340 E201201F and r2, r1, #0x1F
305 00000344 E3520012 cmp r2, #0x12 ;see if currently i
n IRQ mode
306 00000348 1A000001 bne disableIRQ ;If not in IRQ mode
, continue
307 0000034C E8BD0007 ldmfd r13!, {r0-r2}
308 00000350 E12FFF1E bx lr
309 00000354
310 00000354 disableIRQ
311 00000354 E3811080 orr r1, r1, #0x80 ;disable IRQ
312 00000358 E121F001 msr cpsr_c, r1
313 0000035C E8BD0007 ldmfd r13!, {r0-r2}
314 00000360 ;movs pc, lr
315 00000360 E1A0F00E mov pc, lr
316 00000364 ;*******************************************************
**********
317 00000364 ;*
318 00000364 ;* Function Name
319 00000364 ;* ARM_enableIRQ
320 00000364 ;* Inputs
321 00000364 ;* None
322 00000364 ;* Outputs
323 00000364 ;* None
324 00000364 ;* Return Codes
325 00000364 ;* None
326 00000364 ;* Description
327 00000364 ;* Enable IRQ interrupt for ARM
328 00000364 ;* Date:
329 00000364 ;* 2008-03-06
330 00000364 ;*******************************************************
**********/
331 00000364 EXPORT ARM_enableIRQ
332 00000364 ARM_enableIRQ
333 00000364 E92D0007 stmfd r13!, {r0-r2}
334 00000368
335 00000368 E10F1000 mrs r1, cpsr
336 0000036C E201201F and r2, r1, #0x1F
337 00000370 E3520012 cmp r2, #0x12 ; see if currently
in IRQ mode
338 00000374 1A000001 bne enableIRQ ; If not in IRQ mod
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -