[ENDIAN_CHANGE ;definedin option.inc 默认是FALSE,所以此句不会加入代码中
ASSERT :DEF:ENTRY_BUS_WIDTH ;断言指令,检测是否定义该变量,若未定义,报错
[ENTRY_BUS_WIDTH=32 ;definedin option.inc
b ChangeBigEndian ;DCD 0xea000007 ;如果是大端,则这是第一条指令,先设置成大端,再到复位指令
]
[ENTRY_BUS_WIDTH=16
andeq r14,r7,r0,lsl #20 ;DCD 0x0007ea00
]
[ENTRY_BUS_WIDTH=8
streq r0,[r0,-r10,ror #1] ;DCD 0x070000ea
]
|
b ResetHandler ;本硬件用的是小端模式,这是第一个执行语句,直接跳转到复位指令处 0X00
]
b HandlerUndef ;handler for Undefined mode 0X04
b HandlerSWI ;handlerfor SWI interrupt 0X08
b HandlerPabort ;handler for PAbort,指令预取中止 0X0C
b HandlerDabort ;handler for DAbort,数据中止 0X10