📄 startup.s
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.
;;;
;;; Startup Code for
;;; S3C2410 : Startup.s
;;;; by threewater 2005.2.22
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include "2410addr.inc"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Some ARM920 CPSR bit discriptions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
USERMODE DEFINE 0x10
FIQMODE DEFINE 0x11
IRQMODE DEFINE 0x12
SVCMODE DEFINE 0x13
ABORTMODE DEFINE 0x17
UNDEFMODE DEFINE 0x1b
MODEMASK DEFINE 0x1f
NOINT DEFINE 0xc0
I_Bit DEFINE 0x80
F_Bit DEFINE 0x40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Start here
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MODULE ?RESET
COMMON INTVEC:CODE:NOROOT(2)
PUBLIC __program_start
EXTERN ?cstartup
EXTERN Enter_UNDEF
EXTERN Enter_SWI
EXTERN Enter_PABORT
EXTERN Enter_DABORT
EXTERN Enter_FIQ
EXTERN IRQ_Handler
CODE32
__program_start
ldr pc,=?cstartup
ldr pc,=Enter_UNDEF
ldr pc,=Enter_SWI
ldr pc,=Enter_PABORT
ldr pc,=Enter_DABORT
b .
ldr pc,=IRQ_Handler
ldr pc,=Enter_FIQ
LTORG
ENDMOD
MODULE ?CSTARTUP
RSEG IRQ_STACK:DATA(2)
RSEG FIQ_STACK:DATA(2)
RSEG SVC_STACK:DATA(2)
RSEG CSTACK:DATA(2)
RSEG ICODE:CODE:NOROOT(2)
PUBLIC ?cstartup
PUBLIC IRQ_Handler
EXTERN ?main
EXTERN ISR_IrqHandler
CODE32
?cstartup
ldr r0,=WTCON ;watch dog disable
ldr r1,=0x0
str r1,[r0]
ldr r0,=INTMSK
ldr r1,=0xffffffff ;all interrupt disable
str r1,[r0]
ldr r0,=INTSUBMSK
ldr r1,=0x7ff ;all sub interrupt disable, 2002/04/10
str r1,[r0]
;****************************************************
;* Initialize stacks *
;****************************************************
BL InitStacks ; Stack Setup for each MODE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; start main function in C language
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BL ?main
B .
LTORG
IRQ_Handler
STMFD sp!, {r0-r12, lr}
BL ISR_IrqHandler
LDMFD sp!, {r0-r12, lr}
SUBS pc, lr, #4
LTORG
InitStacks
mrs r0,cpsr
bic r0,r0,#MODEMASK
orr r1,r0,#IRQMODE|NOINT
msr cpsr_cxsf,r1 ;IRQ Mode
ldr sp,=SFE(IRQ_STACK)&0xFFFFFFF8
orr r1,r0,#FIQMODE|NOINT
msr cpsr_cxsf,r1 ;FIQ Mode
ldr sp,=SFE(FIQ_STACK)&0xFFFFFFF8
bic r0,r0,#MODEMASK|NOINT
orr r1,r0,#SVCMODE
msr cpsr_cxsf,r1 ;SVC Mode
ldr sp,=SFE(SVC_STACK)&0xFFFFFFF8
;USER mode is not initialized.
mov pc,lr
LTORG
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; End of startup.s79
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ENDMOD
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -