;******************************************************************************
;* *
;* Copyright © 2018-2019 Texas Instruments Incorporated *
;* http://www.ti.com/ *
;* *
;* Redistribution and use in source and binary forms, with or without *
;* modification, are permitted provided that the following conditions *
;* are met: *
;* *
;* Redistributions of source code must retain the above copyright *
;* notice, this list of conditions and the following disclaimer. *
;* *
;* Redistributions in binary form must reproduce the above copyright *
;* notice, this list of conditions and the following disclaimer in *
;* the documentation and/or other materials provided with the *
;* distribution. *
;* *
;* Neither the name of Texas Instruments Incorporated nor the names *
;* of its contributors may be used to endorse or promote products *
;* derived from this software without specific prior written *
;* permission. *
;* *
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
;* “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR *
;* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT *
;* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
;* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
;* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
;* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
;* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
;* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *
;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
;* *
;******************************************************************************
;****************************************************************************
; Setup Reset Vectors
;****************************************************************************
下面的代码为arm模式
.arm
下面的代码属于ResetVectors段
.sect “.rstvectors”
.global _sblResetVectors
sbl程序入口,临时异象向量表
_sblResetVectors:
reset跳转到sblEntry
LDR pc, sblEntry ; Reset
临时异象向量表
B _sblLoopForever ; Undefined Instruction
B _sblLoopForever ; SVC call
B _sblLoopForever ; Prefetch abort
B _sblLoopForever ; Data abort
B _sblLoopForever ; Hypervisor
B _sblLoopForever ; IRQ
B _sblLoopForever ; FIQ
sblEntry表
sblEntry .long _sblEntry
;****************************************************************************
; SBL Entry
;****************************************************************************
.def _sblEntry
.ref _c_int00
.ref SBL_init_profile
.ref _sblTcmEn
_c_int00_addr .long _c_int00
SBL_init_profile_addr .long SBL_init_profile
_sblTcmEnAddr .long _sblTcmEn
_sblEntry:
读取cupid,不为ti的就跳到_sblLoopForever进入死循环
MRC p15, #0, r1, c0, c0, #5
BFC r1, #8, #24
CMP r1, #0
BNE _sblLoopForever
设置临时对战地址_sblTestStackBase-#0xf
ADR r1, _sblTestStackBase
BIC r1, r1, #0xf
MOV sp, r1
获取sbl启动的时间点信息,看sbl快不快
LDR r1, SBL_init_profile_addr
BLX r1
开开当前核的atcm和btcm,告诉内存让他们可以被使用
LDR r1, _sblTcmEnAddr
BLX r1
LDR r1, _c_int00_addr
BLX r1
开始进行fpu,各模式stack初始化
_sblLoopForever:
WFI
B _sblLoopForever
_sblTestStackTop:
.space 64
_sblTestStackBase: