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

📄 sig.s

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 S
字号:
;/*; *  $Id: sig.S,v 1.2 2000/09/22 20:34:15 joel Exp $; */;	.include "register.ah"#include <amd.ah>#include <pswmacro.ah>	.comm	WindowSize,4	.text	.reg	it0,gr64	.reg	it1,gr65	.reg	it2,gr66	.reg	it3,gr67	.reg	v0,gr96	.reg	v1,gr97	.reg	v2,gr98	.reg	v3,gr99	.reg	trapreg,it0	.reg	FPStat0,gr79	.reg	FPStat1,gr79	.reg	FPStat2,gr79	.reg	FPStat3,gr79	.global _intr14_intr14:#if 0	const	it3,14	sup_sv	jmp	interrupt	nop#endif	.global _intr18_intr18:#if 0	const	it3,18	sup_sv	jmp	interrupt	nop#endif	.global	_intr19_intr19:#if 0	const	it3,19	sup_sv	jmp	interrupt	nop#endifinterrupt:#if 0	push	msp,it3	push	msp,gr1	push	msp,rab	const	it0,512	sub	rab,rfb,it0	;set rab = rfb-512	pushsr	msp,it0,pc0	pushsr	msp,it0,pc1	pushsr	msp,it0,pc2	pushsr	msp,it0,cha	pushsr	msp,it0,chd	pushsr	msp,it0,chc	pushsr	msp,it0,alu	pushsr	msp,it0,ops	push	msp,tav;;now come off freeze, and go to user-mode code.;ensure load/store does not restart;	mtsrim	chc,0	mfsr	it0, cps	const	it1, FZ	consth	it1, FZ	andn	it0, it0, it1	const	it1,(DI|TD)	consth	it1,(DI|TD)	or	it0,it1,it0	mtsr	cps, it0; fall through to _sigcode#endif	.extern	_a29k_ISR_Handler	.global	_sigcode_sigcode:#if 0	push	msp, lr1				; R stack support	push	msp, rfb				; support	push	msp, msp				; M stack support;	push	msp, FPStat0				; Floating point 0;	push	msp, FPStat1				; Floating point 1;	push	msp, FPStat2				; Floating point 2;	push	msp, FPStat3				; Floating point 3	sub	msp,msp,4*4	pushsr	msp, tav, IPA				; save user mode special	pushsr	msp, tav, IPB				; save user mode special	pushsr	msp, tav, IPC				; save user mode special	pushsr	msp, tav, Q				; save user mode special	sub	msp, msp, 29*4				; gr96-gr124	mtsrim	cr, 29-1				;	storem	0, 0, gr96, msp				;	const	v0, WindowSize 				; Window Size value	consth	v0, WindowSize 				; Window Size value	load	0, 0, v0, v0				; load	Window size		add	v2, msp, SIGCTX_RAB			; intr RAB value		load 	0, 0, v2, v2				; rab value	sub	v1, rfb, v2				;	cpgeu	v1, v1, v0				;	jmpt	v1, nfill				; jmp if spill	add	v1, gr1, 8				;	cpgtu	v1, v1, rfb				; longjump test	jmpt	v1, nfill				;	nop						;ifill:	add	v0, msp, SIGCTX_RAB+4			;	push	v0, rab					;	const	v2, fill+4				;	consth	v2, fill+4				;	push	v0, v2					; resave PC0	sub	v2, v2, 4				;	push	v0, v2					; resave PC1	const	v2, 0					;		sub	v0, v0, 3*4				;	push	v0, v2					;nfill:	cpgtu	v0, gr1, rfb				; if gr1>rfb -> gr1=rfb 	jmpt	v0, lower				;	cpltu	v0, gr1, rab				;	jmpt	v0, raise				; gr1<rab then gr1=rab	nop						;sendsig:	sub	gr1, gr1, RALLOC			;	asgeu	V_SPILL, gr1, rab			;	add	lr1, rfb, 0				;	add	v1, msp, SIGCTX_SIG			;cont:	add	lr2,it3,0				; signal #	call	lr0, _a29k_ISR_Handler			; call the handler	nop	nop						; WASTE	jmp	_a29k_sigdfl 				; return code	nop						; WASTE	nop						; ALIGNlower:	jmp	sendsig					;	add	gr1, rfb, 0				;raise:	jmp	sendsig					;	add	gr1, rab, 0				;#endif		.global	_a29k_sigdfl_sup_a29k_sigdfl_sup:#if 0	repair_R_stack					;	repair_regs					;	sig_return					; return	halt						; never executes#endif	.global _sigret_sigret:#if 0;assume msp points to tav	mfsr	it0,cps	const	it1,FZ	or	it1,it0,it1	mtsr	cps,it1	nop	nop_sigret1:	pop	tav,msp	popsr	ops,it0,msp	popsr	alu,it0,msp	popsr	chc,it0,msp	popsr	chd,it0,msp	popsr	cha,it0,msp	popsr	pc2,it0,msp	popsr	pc1,it0,msp	popsr	pc0,it0,msp	pop	rab,msp	pop	it0,msp	add	gr1,it0,0	add	msp,msp,4	;discount signal	iret#endif_a29k_sigdfl:#if 0	asneq	SIGDFL,gr1,gr1	jmpi	lr0	nop#endif

⌨️ 快捷键说明

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