⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int_gfd.s

📁 ch7013驱动
💻 S
字号:
	include asm.h
	
	AREA INT, CODE, READONLY                                                     
	       ENTRY                           		; Mark first instruction to execute 

;*****************************************************************
;	vector table
;*****************************************************************
    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
	mov		r0, r0
	;bal		FIQ_DO   
	ldr		pc,=IRQ_DO
;***************************************************************
;	Interrupt handler
;***************************************************************
IRQ_DO      
	
	stmfd	sp!, {r0,r1}

	ldr		r0, =IRQ_R1
	str		r1, [r0]
	
	ldmfd	sp!, {r0}
	ldr		r1, =IRQ_R0
	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, =IRQ_R1
	ldr		r1, [r0]
	stmfd	sp!, {r1}
		
	ldr		r1, =IRQ_R0
	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	int_vector_handler
	bl		int_vector_handler

;-----------------------------;//restore the register
	ldmfd	sp!, {r0-r12}
	ldmfd	sp!, {r14}
	msr		cpsr_cxsf, r14
	ldmfd	sp!, {r14}
	ldmfd	sp!, {pc}

;***********************************************************
;*	other exception handler
;***********************************************************
	IMPORT 	RST_DO
	b		RST_DO
	
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                                                    
                                                                      
;*************************************************************

IRQ_R1		DCD		0X0
IRQ_R0		DCD		0X0

	END

⌨️ 快捷键说明

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