head.s

来自「2440 中断实例 按键盘键点亮LED灯」· S 代码 · 共 67 行

S
67
字号


.text
.global _start
_start:
	b Reset

@ 0x04: 未定义指令中止模式的向量地址
HandleUndef:
    b   HandleUndef 
 
@ 0x08: 管理模式的向量地址,通过SWI指令进入此模式
HandleSWI:
    b   HandleSWI

@ 0x0c: 指令预取终止导致的异常的向量地址
HandlePrefetchAbort:
    b   HandlePrefetchAbort

@ 0x10: 数据访问终止导致的异常的向量地址
HandleDataAbort:
    b   HandleDataAbort

@ 0x14: 保留
HandleNotUsed:
    b   HandleNotUsed

@ 0x18: 中断模式的向量地址
    b   HandleIRQ

@ 0x1c: 快中断模式的向量地址
HandleFIQ:
    b   HandleFIQ


Reset:
	ldr	sp,=4096
	bl	disable_watch_dog
	
	msr	cpsr_c,#0xd2
	ldr	sp,=3072

	msr	cpsr_c,#0xdf
	ldr	sp,=4096

	bl	init_led
	bl	init_irq
	msr	cpsr_c,#0x5f

	ldr	lr,=halt_loop
	ldr	pc,=main

halt_loop:
	b	halt_loop


HandleIRQ:
	sub	lr,lr,#4
	stmdb	sp!,{ r0-r12,lr }

	ldr	lr,=int_return
	ldr	pc,=EINT_Handle
int_return:
	ldmia	sp!,{ r0-r12,pc }^


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?