📄 boot.s
字号:
;-------------------------------------------------------------------------------------------------------------
;Cread by zhangyi @2006-1-3 10:25上午
;V1.0
;-------------------------------------------------------------------------------------------------------------
Mode_USR EQU 0x10
Mode_FIQ EQU 0x11
Mode_IRQ EQU 0x12
Mode_SVC EQU 0x13
Mode_ABT EQU 0x17
Mode_UND EQU 0x1B
Mode_SYS EQU 0x1F ;available on ARM Arch 4 and later
DISIRQ EQU 0x80
DISFIQ EQU 0x40
UNDSTACKLEN EQU 0*4
SVCSTACKLEN EQU 0*4
ABTSTACKLEN EQU 0*4
FIQSTACKLEN EQU 0*4
IRQSTACKLEN EQU 32*4
SYSSTACKLEN EQU 256*4
RAMTOP EQU 0x40004000
SYSSTACKADD EQU RAMTOP
IRQSTACKADD EQU (SYSSTACKADD-SYSSTACKLEN)
FIQSTACKADD EQU (IRQSTACKADD-IRQSTACKLEN)
ABTSTACKADD EQU (FIQSTACKADD-FIQSTACKLEN)
SVCSTACKADD EQU (ABTSTACKADD-ABTSTACKLEN)
UNDSTACKADD EQU (SVCSTACKADD-SVCSTACKLEN)
IMPORT __main
EXPORT __user_initial_stackheap
EXPORT UseStacks
AREA armboot,CODE,READONLY
CODE32
ENTRY
B Reset
B Undefine
B SWI_Pro
B Pre_Pro
B Abt_Pro
DCD 0xb9205f80
LDR PC,[PC,#-0xff0]
FIQ
B FIQ
Undefine
B Undefine
Pre_Pro
B Pre_Pro
Abt_Pro
B Abt_Pro
SWI_Pro
B SWI_Pro ;User add
Reset
MSR CPSR_c, #Mode_UND:OR:DISIRQ:OR:DISFIQ
LDR SP,=UNDSTACKADD
MSR CPSR_c, #Mode_SVC:OR:DISIRQ:OR:DISFIQ
LDR SP,=SVCSTACKADD
MSR CPSR_c, #Mode_ABT:OR:DISIRQ:OR:DISFIQ
LDR SP,=ABTSTACKADD
MSR CPSR_c, #Mode_FIQ:OR:DISIRQ:OR:DISFIQ
LDR SP,=FIQSTACKADD
MSR CPSR_c, #Mode_IRQ:OR:DISIRQ:OR:DISFIQ
LDR SP,=IRQSTACKADD
MSR CPSR_c, #Mode_SYS:OR:DISFIQ ;enable irq
LDR SP,=SYSSTACKADD
B __main
__user_initial_stackheap
LDR R0,=bottomheap
LDR R1,=UseStacks
MOV PC,LR
AREA Heap,DATA,NOINIT
bottomheap SPACE 1
AREA Stacks,DATA,NOINIT
UseStacks SPACE 1
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -