📄 init.s
字号:
;;; Copyright ARM Ltd 2001. All rights reserved.
;
; This module performs ROM/RAM remapping (if required), initializes stack
; pointers and interrupts for each mode, and finally branches to __main in
; the C library (which eventually calls main()).
;
; On reset, the ARM core starts up in Supervisor (SVC) mode, in ARM state,
; with IRQ and FIQ disabled.
; --- Standard definitions of mode bits and interrupt (I & F) flags in PSRs
AREA Init, CODE, READONLY
CODE32
GET snds.s
ENTRY
;disable interrupts in CPU and switch to SVC32 mode
start
MRS r0, cpsr
BIC r0, r0, #MASK_MODE
ORR r0, r0, #MODE_SVC32
ORR r0, r0, #I_BIT
ORR r0, r0, #F_BIT
MSR cpsr_c, r0
;disable individual interrupts in the interrupt controller
LDR r2, =ARM7_INTMASK ;R2->interrupt controller
MVN r1, #0 ;&FFFFFFFF
STR r1, [r2] ;disable all interrupt soucres
LDR r2, =ARM7_INTPEND ;R2->interrupt pend register.
MVN r1, #0 ;&FFFFFFFF
STR r1, [r2] ;clear all interrupt flags.
SYNC_DRAM
LDR r0, =ARM7_SYSCFG ;ARM7_SYSCFG=0x03ff0000
LDR r1, =0x87ffff90 ;config syscofig register.
STR r1, [r0] ;Cache,WB disable
;ROM and RAM Configuration(Multiple Load and Store). Multiple load
;LDMIA instruction cannot be used as there is no way to load the
;address L$_SystemInitDataSDRAM into a register (LDR Rn,=sym is broken)
LDR r1, =rEXTDBWTH ;根据snd100.h中的宏定义,初始化sysconfig,总线宽度及各组sdram和rom*/
LDR r2, =rROMCON0 ;配置bootrom地址从0开始,sdram从16M开始
LDR r3, =rROMCON1
LDR r4, =rROMCON2
LDR r5, =rROMCON3
LDR r6, =rROMCON4
LDR r7, =rROMCON5
LDR r8, =rSDRAMCON0
LDR r9, =rSDRAMCON1
LDR r10,=rSDRAMCON2
LDR r11,=rSDRAMCON3
LDR r12,=rSREFEXTCON
LDR r0, =ARM7_EXTDBWTH ; Extdbwth Offset : 0x3010
; STMIA r0, {r1-r12}
; Initialize the stack pointer to just before where the
; uncompress code, copied from ROM to RAM, will run.
LDR sp, =STACK_STAR_ADDR ;设置堆栈起始地址在cofigall.h中定义的位置(本案为1M处)
MOV fp, #0 ;zero frame pointer
;jump to C entry point in ROM: routine - entry point + ROM base */;
IMPORT C_ENTRY
; B C_Entry
; BL C_Entry
LDR pc, =C_ENTRY ;跳到C代码入口.
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -