📄 init.s
字号:
AREA Init, CODE, READONLY
Mode_IRQ EQU 0x12
Mode_SVC EQU 0x13
I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled
F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled
SVC_STACK_OFFSIDE EQU 1024
EXPORT Reset_Handler
EXPORT IRQ_Handler
Reset_Handler
IMPORT top_of_stacks ; defined in stack.s and located by scatter file
LDR r0, =top_of_stacks
MSR CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit ; No interrupts
SUB sp, r0, #SVC_STACK_OFFSIDE
IMPORT __main
B __main ; note use B not BL, because an application will never return this way
IMPORT IRQ_Handler2
IRQ_Handler
SUB LR,LR,#4
STR LR,BACKUP1
MRS LR,SPSR
STR LR,BACKUP2
MSR CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit ; No interrupts
STR LR,BACKUP3
LDR LR,BACKUP1
STMFD SP!,{LR}
LDR LR,BACKUP3
STMFD SP!,{R0-R12,LR}
LDR LR,BACKUP2
STMFD SP!,{LR}
MOV R0,SP
MSR CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit ; No interrupts
LDR sp,=top_of_stacks
B IRQ_Handler2
BACKUP1 DCD 0
BACKUP2 DCD 0
BACKUP3 DCD 0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -