📄 int_gfd.s
字号:
AREA INT, CODE, READONLY
IMPORT RST_DO
ENTRY
bal RST_DO
bal EXTENT_INSTRU
bal SWI_DO
bal ABORT_PREFETCH_DO
bal ABORT_DATA_DO
mov R1, R1 ;reserved exception
bal IRQ_DO
bal FIQ_DO
ldr pc,=IRQ_DO
IRQ_DO
stmfd sp!, {r0,r1}
ldr r0, =0x0
str r1, [r0]
ldmfd sp!, {r0}
ldr r1, =0x0
str r0, [r1]
add r13, r13, #4 ; restore the sp_irq top to original irq top
sub r14, r14, #4
mov r0, r14
mrs r1, spsr
orr r1, r1, #0x80
msr cpsr_cxsf, r1 ; change irq mode into svc
;------------------------------------------------
bic r1, r1, #0x80 ; open the irq
stmfd sp!, {r0}
stmfd sp!, {r14}
stmfd sp!, {r1}
ldr r0, =0x0
ldr r1, [r0]
stmfd sp!, {r1}
ldr r1, =0x0
ldr r0, [r1]
stmfd sp!, {r0}
ldmfd sp!, {r0,r1}
stmfd sp!, {r0-r12} ; save the registers r0--r12
;----------------------------- ; search the irq vector and jump to isr
IMPORT IntVectorHandler
bl IntVectorHandler
;----------------------------- ; restore the register
ldmfd sp!, {r0-r12}
ldmfd sp!, {r14}
msr cpsr_cxsf, r14
ldmfd sp!, {r14}
ldmfd sp!, {pc}
EXTENT_INSTRU
b EXTENT_INSTRU
SWI_DO
stmfd sp!, {r14}
ldmfd sp!, {pc}^
ABORT_PREFETCH_DO
b ABORT_PREFETCH_DO
ABORT_DATA_DO
b ABORT_DATA_DO
FIQ_DO
b FIQ_DO
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -