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

📄 asmisr.s

📁 移植的arm内核芯片 s3c4510 的ucos-ii的源码
💻 S
字号:

	.EQU 	NoIRQ,		0x80
	.EQU	INTPEND,	0x03FF4004
	.EQU	BIT_TIMER0,	(0x1<<10)


#	.GLOBAL Timer0IRQHandler
#Timer0IRQHandler:				@ 中断向量
#	.extern	TickHandler
#	STMFD	sp!, {r0-r12, lr}	@ 中断栈保存 
#	BL	TickHandler			@ 中断C处理函数
#	LDMFD	sp!, {r0-r12, lr}	@ 恢复中断栈
#	SUBS	pc, lr, #4			@ 返回中断前的程序指针

	.GLOBAL Timer0IRQHandler
	.GLOBAL IRQContextSwap

IRQContextSwap:
	MOV	a1, #0
	MOV	lr, pc
	
Timer0IRQHandler:				@ 中断向量
	.extern	TickHandler
#	SUBS	lr,lr,#4
#	STMFD	sp!,{lr}
#	ADD		lr,lr,#4
	STMFD	sp!, {r0-r12, lr}	@ 中断栈保存 
#	STMFD	sp!, {r0-r12}	@ 中断栈保存 
	MRS	r4, CPSR
	STMFD	sp!, {r4}		@ save current PSR
	MRS	r4, SPSR			@ YYY+
	STMFD	sp!, {r4}		@ YYY+ save SPSR

	#(Clear pending bit of INTPEND that don't accessed it.)
	#	rI_ISPC= BIT_TIMER0;
	LDR	r0, =INTPEND
	LDR	r1, =BIT_TIMER0
	STR	r1, [r0]
	
	#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	#Change Supervisor mode
	#!!!r12 register don't preserved. (r12 that PC of task)

#	MRS             lr, SPSR
#	AND				lr, lr, #0xFFFFFFE0
#	ORR				lr, lr, #0x13
#	MSR             CPSR_cxsf, lr

#	MOV a1, #1


	BL	IrqFinish			@ 中断C处理函数


	LDMFD	sp!, {r4}		@ YYY+
	MSR	SPSR_cxsf, r4		@ YYY+
	LDMFD	sp!, {r4}		@ YYY+
	MSR	CPSR_cxsf, r4		@ YYY+
#	LDMFD	sp!, {r0-r12, lr}	@ 恢复中断栈
#	MOV pc,lr
#	LDMFD	sp!, {r0-r12, lr,pc}	@ 恢复中断栈

	LDMFD	sp!, {r0-r12, lr}	@ 恢复中断栈
	SUBS	pc, lr, #4



⌨️ 快捷键说明

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