📄 samisr_asm.s
字号:
; SAM ISR
SAM_AIC_BASE EQU 0xFFFFF000
SAM_AIC_IVR EQU 0x0100
SAM_AIC_FVR EQU 0x0104
IRQBIT EQU 0x80
FIQBIT EQU 0x40
PRESERVE8
AREA RAM_VECTOR, CODE, READONLY
CODE32
;***************************************************************************************************
; ISR Handler
EXPORT CPU_IRQ_ISR
EXTERN OS_CPU_IRQ_ISR_Handler
CPU_IRQ_ISR
; Enter IRQ mode
SUB LR, LR, #4 ; return address
STMFD SP!,{R0-R3, LR} ; ATPCS
LDR R0, _OS_CPU_IRQ_ISR_Handler
MOV LR, PC
BX R0
LDMFD SP!,{R0-R3, PC}^ ; SPSR -> CPSR
_OS_CPU_IRQ_ISR_Handler
DCD OS_CPU_IRQ_ISR_Handler
;***************************************************************************************************
EXPORT SAM_IRQ_ENABLE
EXPORT SAM_IRQ_DISABLE
SAM_IRQ_ENABLE
MRS R0, CPSR ; ATPCS
BIC R1, R0, #IRQBIT
MSR CPSR_c, R1
MRS R1, CPSR ; confirm
ADD R1, R1, #IRQBIT
CMP R1, #IRQBIT
BEQ SAM_IRQ_ENABLE
BX LR
SAM_IRQ_DISABLE
MRS R0, CPSR ; ATPCS
ORR R1, R0, #IRQBIT
MSR CPSR_c, R1
MRS R1, CPSR ; confirm
ADD R1, R1, #IRQBIT
CMP R1, #IRQBIT
BNE SAM_IRQ_ENABLE
BX LR
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -