📄 startup.s
字号:
;/*
; * startup.s -- startup file for swi
; *
; * Author: li ming <admin@lumit.org>
; * Date: 2004-8-26
; * Copyleft: http://www.lumit.org
; */
AREA asm_code, CODE
; *********************************************************************
IMPORT __main
ENTRY
|__init|
; **********************************************************************
; * Set up the stack pointer to point
; **********************************************************************
;set up irq stack
mov r0, #0xd2 ; make irq mode with all irqs disabled
msr cpsr_cxsf, r0
MOV sp, #0x70000
;set up svc stack
mov r0, #0xd3 ; make svc mode with all irqs disabled
msr cpsr_cxsf, r0
MOV sp, #0x80000
MOV r0, #0x53 ; make svc mode with irq enabled
MSR cpsr_c, r0
; **********************************************************************
; * Jump to the address of the C entry point.
; **********************************************************************
b __main
IMPORT do_irq
EXPORT irq_handler
irq_handler
SUB lr, lr, #4
STMFD sp!, {r0-r12, lr} ; push r0-r12 register file and lr( pc return address )
MRS r4, spsr
STMFD sp!, {r4} ; push current spsr_cxsf_irq ( =cpsr_svc )
BL do_irq ; goto C handler
LDMFD sp!, {r4} ; get cpsr_svc from stack
MSR spsr_cxsf, r4 ; prepare spsr_cxsf to return svc mode
LDMFD sp!, {r0-r12, pc}^ ; recover r0-r12 and pc from stack, cpsr also
; **********************************************************************
; * END OF startup.s
; **********************************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -