.text
.global _start
_start:
b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
undefined_instruction:
nop
software_interrupt:
nop
prefetch_abort:
nop
data_abort:
nop
not_used:
nop
irq:
nop
fiq:
nop
reset:
bl set_svc
bl disable_watchdog
bl disable_interrupt
bl disable_mmu
set_svc: @在arm文档第a2章processor modes
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
mov pc,lr
#define pWTCON 0x53000000
disable_watchdog: @在s3c2440文档18章watchdog timer special resgister
ldr r0,=pWTCON
mov r1,#0x0
str r1,[r0]
mov pc,lr
disable_interrupt: @在s3c2440文档的14章interrupt control中有说明,interrupt mask register
ldr r0,=0x4a000008
mvn r1,#0x0
str r1,[r0]
mov pc,lr
disable_mmu: @在核文档cp15的control寄存器中有讲解
mcr p15,0,r0,c7,c7,0 @使icache与dcache中的数据失效
mrc p15,0,r0,c1,c0,0
bic r0,r0,#0x00000007 @顺带清除第1位,icache可以不清除
mcr p15,0,r0,c1,c0,0
mov pc,lr
s3c2440核心初始化
最新推荐文章于 2021-05-23 20:38:11 发布