📄 irq.s
字号:
@ AREA |subr|, CODE, READONLY
@ INCLUDE aic.inc
#include "aic.h"
@;---------------------------------------------------------------------
@ EXPORT IRQ_Enter
@ ;这里已经进入IRQ模式了,cpsr-->spsr,sp为IRQ的堆栈,lr为IRQ的lr_irq
@ ;lr_irq=address of next Instruction to be execute + 4
@ ;spsr_irq=CPSR
@ ;cpsr[5]=0 arm mode
@ ;cpsr[6] 不变
@ ;cpsr[7]=1
@ ;pc=0x18
.text
.align 4
.global IRQ_Enter
IRQ_Enter:
SUB lr, lr, #4
STMFD sp!, {r0-r12, lr} @; save registers
@ ldr v1, =AIC_BASE
@ ldr r0,[v1,#AIC_ISR]
@ IMPORT IRQ_Handler
@ BL IRQ_Handler @;将IRQID作为参数传入
BL do_IRQ
BL IRQ_Shell
@ IMPORT IRQ_switch_task
b IRQ_switch_task
@ ldr r0, =AIC_BASE
@ str r0, [r0, #AIC_EOICR]
LDMFD sp!, {r0-r12, pc}^ @; Restore saved registers
@;------------------------------------------------------------------------------
@ EXPORT at91spr
@at91spr:
@ sub r14, r14, #4
@ stmdb r13!, {r14}
@ ldr r14, =AIC_BASE
@ str r14, [r14, #AIC_EOICR]
@ ldmia r13!, {pc}^
@ END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -