; *****************************************************************
; Load RVA of OEMAddressTable[]
;
add r0, pc, #OEMAddressTable-(.+8) ; (r0) = OEMAddressTable phys addr *DO NOT DESTROY THIS VALUE
mov r11, r0 ; (r11) = &MemoryMap (save pointer for later)
IF :LNOT: :DEF: ETHBOOT
bl KernelStart ; Branch to coreos\armtrap.s::KernelStart()
; should not return, NK now in control
nop
nop
nop
DEADLOOP
b DEADLOOP
ENDIF
; For GPIO / soft reset, don't go to Eboot main(), go to launch address from load.
tst r10, #RCSR_GPIO_RESET
beq CONTINUE
; Get previously saved launch address
ldr r4, =(RESET_LAUNCH_ADDR_PHYSICAL) ; pointer
ldr r3, [r4] ; launch address
ldr r2, =PhysicalStart
;
; First, we need to find the Offset that will get us from Virtual->Physical for
; the EBOOT Partition
;
ldr r5, =(EBOOT_PARTITION_PHY_BASE - SDRAM_VIR_C_EBOOT_PARTITION)
;
; Next, we add the above found Offset to PhysicalStart's RVA.
; (R2 now points to the Physical address of PhysicalStart (below).)
;
add r2, r2, r5
mov r1, r10 ; Contains soft reset indicators.
IF Interworking :LOR: Thumbing
bx r2
ELSE
mov pc, r2
ENDIF
nop ; These NOPs are used to flush the Pipeline
nop
nop
nop
nop
nop
nop
nop
b CONTINUE ; branch around Include (do not move)
INCLUDE MemMap.inc ; **NOTE: DO NOT move this! Must be in this section
是这两行红字之间的距离吗??