这一段是源代码
LEAF_ENTRY Launch
ldr r2, = PhysicalStart
ldr r3, = (VIR_RAM_START - PHY_RAM_START)
sub r2, r2, r3
mov r1, #0x0070 ; Disable MMU
mcr p15, 0, r1, c1, c0, 0
nop
mov pc, r2 ; Jump to PStart
nop
; MMU & caches now disabled.
PhysicalStart
mov r2, #0
mov r3, #0
mcr p15, 0, r2, c8, c7, 0 ; Flush the TLB
mov pc, r0 ; Jump to program we are launching.
LEAF_ENTRY ShowLights
mov pc, lr
END
这一段是没关MMU的代码
[0xe59f202c] ldr r2,0x80026248 ; = #0x80026234
[0xe3a03205] mov r3,#0x50000000
[0xe0422003] sub r2,r2,r3
[0xe3a01070] mov r1,#0x70
[0xee011f10] mcr p15,0x0,r1,c1,c0,0
[0xe1a00000] nop
[0xe1a0f002] mov pc,r2
[0xe1a00000] nop
[0xe3a02000] mov r2,#0
[0xe3a03000] mov r3,#0
[0xee082f17] mcr p15,0x0,r2,c8,c7,0
[0xe1a0f000] mov pc,r0
这一段是 mov pc,r2后转到的代码,为什么 mov r2, #0被改成了mrcle p14,0x6,r13,c14,c14,6
并且不能走下去了。
[0xe59f202c] ldr r2,0x30026248 ; = #0x80026234
[0xe3a03205] mov r3,#0x50000000
[0xe0422003] sub r2,r2,r3
[0xe3a01070] mov r1,#0x70
[0xee011f10] mcr p15,0x0,r1,c1,c0,0
[0xe1a00000] nop
[0xe1a0f002] mov pc,r2
[0xe1a00000] nop
[0xdededede] mrcle p14,0x6,r13,c14,c14,6
[0xe3a03000] mov r3,#0
[0xee082f17] mcr p15,0x0,r2,c8,c7,0
[0xe1a0f000] mov pc,r0
研究了两天了,没找到解决办法,请高手指教,谢谢!
|