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

📄 l_entry.s

📁 VXWORKS源代码
💻 S
📖 第 1 页 / 共 5 页
字号:
|	Customizations:|		1. Remove the moveml at the entry and exit of|		   each routine if your compiler treats those|		   registers as scratch./* |		2. Likewise, don't save FP0/FP1 if they are scratch */|		   registers.|		3. Delete handling of the fpsr if you only care about|		   the result.|		4. Some (most?) C compilers convert all float arguments|		   to double, and provide no support at all for extended|		   precision so remove the __l_fcoshs and __l_fcoshx entry points.|		5. Move the result to d0/d1 if the compiler is that old.|		Copyright (C) Motorola, Inc. 1991|			All Rights Reserved||	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF MOTOROLA|	The copyright notice above does not evidence any|	actual or intended publication of such source code.|	xref	__l_tag|	xref	__l_scosh|	xref	__l_ld_pone|	xref	__l_ld_pinf|	xref	__l_mon_nan|	xref	__l_scoshd	.globl	__l_fcoshs__l_fcoshs:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)	fmovel	fpcr,a6@(USER_FPCR)	fmovel	fpcr,d1		/* |  user's rounding mode/precision */	fmovel	#0,fpcr		|  force rounding mode/prec to extended,rn||	copy, convert and tag input argument|	fmoves	a6@(8),fp0	fmovex	fp0,a6@(ETEMP)	lea	a6@(ETEMP),a0	bsrl	__l_tag	moveb	d0,a6@(STAG)	tstb	d0	jne 	L_1062	bsrl	__l_scosh		|  normalized (regular) number	jra 	L_1066L_1062:	cmpb	#0x20,d0		|  zero?	jne 	L_1063	bsrl	__l_ld_pone	jra 	L_1066L_1063:	cmpb	#0x40,d0		|  infinity?	jne 	L_1064	bsrl	__l_ld_pinf	jra 	L_1066L_1064:	cmpb	#0x60,d0		|  NaN?	jne 	L_1065	bsrl	__l_mon_nan	jra 	L_1066L_1065:	bsrl	__l_scoshd		|  assuming a denorm...L_1066:	fmovel	fpsr,d0		|  update status register	orb	a6@(USER_FPSR+3),d0	| add previously accrued exceptions	fmovel	d0,fpsr||	Result is now in FP0|	moveml	a6@(USER_DA),d0-d1/a0-a1	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts	.globl	__l_fcoshd__l_fcoshd:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)	fmovel	fpcr,a6@(USER_FPCR)	fmovel	fpcr,d1		/* |  user's rounding mode/precision */	fmovel	#0,fpcr		|  force rounding mode/prec to extended,rn||	copy, convert and tag input argument|	fmoved	a6@(8),fp0	fmovex	fp0,a6@(ETEMP)	lea	a6@(ETEMP),a0	bsrl	__l_tag	moveb	d0,a6@(STAG)	tstb	d0	jne 	L_1067	bsrl	__l_scosh		|  normalized (regular) number	jra 	L_106BL_1067:	cmpb	#0x20,d0		|  zero?	jne 	L_1068	bsrl	__l_ld_pone	jra 	L_106BL_1068:	cmpb	#0x40,d0		|  infinity?	jne 	L_1069	bsrl	__l_ld_pinf	jra 	L_106BL_1069:	cmpb	#0x60,d0		|  NaN?	jne 	L_106A	bsrl	__l_mon_nan	jra 	L_106BL_106A:	bsrl	__l_scoshd		|  assuming a denorm...L_106B:	fmovel	fpsr,d0		|  update status register	orb	a6@(USER_FPSR+3),d0	| add previously accrued exceptions	fmovel	d0,fpsr||	Result is now in FP0|	moveml	a6@(USER_DA),d0-d1/a0-a1	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts	.globl	__l_fcoshx__l_fcoshx:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)	fmovel	fpcr,a6@(USER_FPCR)	fmovel	fpcr,d1		/* |  user's rounding mode/precision */	fmovel	#0,fpcr		|  force rounding mode/prec to extended,rn||	copy, convert and tag input argument|	fmovex	a6@(8),fp0	fmovex	fp0,a6@(ETEMP)	lea	a6@(ETEMP),a0	bsrl	__l_tag	moveb	d0,a6@(STAG)	tstb	d0	jne 	L_106C	bsrl	__l_scosh		|  normalized (regular) number	jra 	L_106GL_106C:	cmpb	#0x20,d0		|  zero?	jne 	L_106D	bsrl	__l_ld_pone	jra 	L_106GL_106D:	cmpb	#0x40,d0		|  infinity?	jne 	L_106E	bsrl	__l_ld_pinf	jra 	L_106GL_106E:	cmpb	#0x60,d0		|  NaN?	jne 	L_106F	bsrl	__l_mon_nan	jra 	L_106GL_106F:	bsrl	__l_scoshd		|  assuming a denorm...L_106G:	fmovel	fpsr,d0		|  update status register	orb	a6@(USER_FPSR+3),d0	| add previously accrued exceptions	fmovel	d0,fpsr||	Result is now in FP0|	moveml	a6@(USER_DA),d0-d1/a0-a1	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts||	MONADIC.GEN 1.3 4/30/91||	MONADIC.GEN --- generic MONADIC template||	This version saves all registers that will be used by the emulation|	routines and restores all but FP0 on exit.  The FPSR is|	updated to reflect the result of the operation.  Return value|	is placed in FP0 for single, double and extended results.||	The package subroutines expect the incoming fpcr to be zeroed|	since they need extended precision to work properly.  The/* |	'final' fpcr is expected in d1 so that the calculated result */|	can be properly sized and rounded.  Also, if the incoming fpcr|	has enabled any exceptions, the exception will be taken on the|	final fmovem in this template.||	Customizations:|		1. Remove the moveml at the entry and exit of|		   each routine if your compiler treats those|		   registers as scratch./* |		2. Likewise, don't save FP0/FP1 if they are scratch */|		   registers.|		3. Delete handling of the fpsr if you only care about|		   the result.|		4. Some (most?) C compilers convert all float arguments|		   to double, and provide no support at all for extended|		   precision so remove the __l_fetoxs and __l_fetoxx entry points.|		5. Move the result to d0/d1 if the compiler is that old.|		Copyright (C) Motorola, Inc. 1991|			All Rights Reserved||	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF MOTOROLA|	The copyright notice above does not evidence any|	actual or intended publication of such source code.|	xref	__l_tag|	xref	__l_setox|	xref	__l_ld_pone|	xref	__l_szr_inf|	xref	__l_mon_nan|	xref	__l_setoxd	.globl	__l_fetoxs__l_fetoxs:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)	fmovel	fpcr,a6@(USER_FPCR)	fmovel	fpcr,d1		/* |  user's rounding mode/precision */	fmovel	#0,fpcr		|  force rounding mode/prec to extended,rn||	copy, convert and tag input argument|	fmoves	a6@(8),fp0	fmovex	fp0,a6@(ETEMP)	lea	a6@(ETEMP),a0	bsrl	__l_tag	moveb	d0,a6@(STAG)	tstb	d0	jne 	L_1072	bsrl	__l_setox		|  normalized (regular) number	jra 	L_1076L_1072:	cmpb	#0x20,d0		|  zero?	jne 	L_1073	bsrl	__l_ld_pone	jra 	L_1076L_1073:	cmpb	#0x40,d0		|  infinity?	jne 	L_1074	bsrl	__l_szr_inf	jra 	L_1076L_1074:	cmpb	#0x60,d0		|  NaN?	jne 	L_1075	bsrl	__l_mon_nan	jra 	L_1076L_1075:	bsrl	__l_setoxd		|  assuming a denorm...L_1076:	fmovel	fpsr,d0		|  update status register	orb	a6@(USER_FPSR+3),d0	| add previously accrued exceptions	fmovel	d0,fpsr||	Result is now in FP0|	moveml	a6@(USER_DA),d0-d1/a0-a1	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts	.globl	__l_fetoxd__l_fetoxd:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)	fmovel	fpcr,a6@(USER_FPCR)	fmovel	fpcr,d1		/* |  user's rounding mode/precision */	fmovel	#0,fpcr		|  force rounding mode/prec to extended,rn||	copy, convert and tag input argument|	fmoved	a6@(8),fp0	fmovex	fp0,a6@(ETEMP)	lea	a6@(ETEMP),a0	bsrl	__l_tag	moveb	d0,a6@(STAG)	tstb	d0	jne 	L_1077	bsrl	__l_setox		|  normalized (regular) number	jra 	L_107BL_1077:	cmpb	#0x20,d0		|  zero?	jne 	L_1078	bsrl	__l_ld_pone	jra 	L_107BL_1078:	cmpb	#0x40,d0		|  infinity?	jne 	L_1079	bsrl	__l_szr_inf	jra 	L_107BL_1079:	cmpb	#0x60,d0		|  NaN?	jne 	L_107A	bsrl	__l_mon_nan	jra 	L_107BL_107A:	bsrl	__l_setoxd		|  assuming a denorm...L_107B:	fmovel	fpsr,d0		|  update status register	orb	a6@(USER_FPSR+3),d0	| add previously accrued exceptions	fmovel	d0,fpsr||	Result is now in FP0|	moveml	a6@(USER_DA),d0-d1/a0-a1	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts	.globl	__l_fetoxx__l_fetoxx:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)	fmovel	fpcr,a6@(USER_FPCR)	fmovel	fpcr,d1		/* |  user's rounding mode/precision */	fmovel	#0,fpcr		|  force rounding mode/prec to extended,rn||	copy, convert and tag input argument|	fmovex	a6@(8),fp0	fmovex	fp0,a6@(ETEMP)	lea	a6@(ETEMP),a0	bsrl	__l_tag	moveb	d0,a6@(STAG)	tstb	d0	jne 	L_107C	bsrl	__l_setox		|  normalized (regular) number	jra 	L_107GL_107C:	cmpb	#0x20,d0		|  zero?	jne 	L_107D	bsrl	__l_ld_pone	jra 	L_107GL_107D:	cmpb	#0x40,d0		|  infinity?	jne 	L_107E	bsrl	__l_szr_inf	jra 	L_107GL_107E:	cmpb	#0x60,d0		|  NaN?	jne 	L_107F	bsrl	__l_mon_nan	jra 	L_107GL_107F:	bsrl	__l_setoxd		|  assuming a denorm...L_107G:	fmovel	fpsr,d0		|  update status register	orb	a6@(USER_FPSR+3),d0	| add previously accrued exceptions	fmovel	d0,fpsr||	Result is now in FP0|	moveml	a6@(USER_DA),d0-d1/a0-a1	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts||	MONADIC.GEN 1.3 4/30/91||	MONADIC.GEN --- generic MONADIC template||	This version saves all registers that will be used by the emulation|	routines and restores all but FP0 on exit.  The FPSR is|	updated to reflect the result of the operation.  Return value|	is placed in FP0 for single, double and extended results.||	The package subroutines expect the incoming fpcr to be zeroed|	since they need extended precision to work properly.  The/* |	'final' fpcr is expected in d1 so that the calculated result */|	can be properly sized and rounded.  Also, if the incoming fpcr|	has enabled any exceptions, the exception will be taken on the|	final fmovem in this template.||	Customizations:|		1. Remove the moveml at the entry and exit of|		   each routine if your compiler treats those|		   registers as scratch./* |		2. Likewise, don't save FP0/FP1 if they are scratch */|		   registers.|		3. Delete handling of the fpsr if you only care about|		   the result.|		4. Some (most?) C compilers convert all float arguments|		   to double, and provide no support at all for extended|		   precision so remove the __l_fetoxm1s and __l_fetoxm1x entry points.|		5. Move the result to d0/d1 if the compiler is that old.|		Copyright (C) Motorola, Inc. 1991|			All Rights Reserved||	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF MOTOROLA|	The copyright notice above does not evidence any|	actual or intended publication of such source code.|	xref	__l_tag|	xref	__l_setoxm1|	xref	__l_szero|	xref	__l_setoxm1i|	xref	__l_mon_nan|	xref	__l_setoxm1d	.globl	__l_fetoxm1s__l_fetoxm1s:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)	fmovel	fpcr,a6@(USER_FPCR)	fmovel	fpcr,d1		/* |  user's rounding mode/precision */	fmovel	#0,fpcr		|  force rounding mode/prec to extended,rn||	copy, convert and tag input argument|	fmoves	a6@(8),fp0	fmovex	fp0,a6@(ETEMP)	lea	a6@(ETEMP),a0	bsrl	__l_tag	moveb	d0,a6@(STAG)	tstb	d0	jne 	L_1082	bsrl	__l_setoxm1		|  normalized (regular) number	jra 	L_1086L_1082:	cmpb	#0x20,d0		|  zero?	jne 	L_1083	bsrl	__l_szero	jra 	L_1086L_1083:	cmpb	#0x40,d0		|  infinity?	jne 	L_1084	bsrl	__l_setoxm1i	jra 	L_1086L_1084:	cmpb	#0x60,d0		|  NaN?	jne 	L_1085	bsrl	__l_mon_nan	jra 	L_1086L_1085:	bsrl	__l_setoxm1d		|  assuming a denorm...L_1086:	fmovel	fpsr,d0		|  update status register	orb	a6@(USER_FPSR+3),d0	| add previously accrued exceptions	fmovel	d0,fpsr||	Result is now in FP0|	moveml	a6@(USER_DA),d0-d1/a0-a1	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts	.globl	__l_fetoxm1d__l_fetoxm1d:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)	fmovel	fpcr,a6@(USER_FPCR)	fmovel	fpcr,d1		/* |  user's rounding mode/precision */	fmovel	#0,fpcr		|  force rounding mode/prec to extended,rn||	copy, convert and tag input argument|	fmoved	a6@(8),fp0	fmovex	fp0,a6@(ETEMP)	lea	a6@(ETEMP),a0	bsrl	__l_tag	moveb	d0,a6@(STAG)	tstb	d0	jne 	L_1087	bsrl	__l_setoxm1		|  normalized (regular) number	jra 	L_108BL_1087:	cmpb	#0x20,d0		|  zero?	jne 	L_1088	bsrl	__l_szero	jra 	L_108BL_1088:	cmpb	#0x40,d0		|  infinity?	jne 	L_1089	bsrl	__l_setoxm1i	jra 	L_108BL_1089:	cmpb	#0x60,d0		|  NaN?	jne 	L_108A	bsrl	__l_mon_nan	jra 	L_108BL_108A:	bsrl	__l_setoxm1d		|  assuming a denorm...L_108B:	fmovel	fpsr,d0		|  update status register	orb	a6@(USER_FPSR+3),d0	| add previously accrued exceptions	fmovel	d0,fpsr||	Result is now in FP0|	moveml	a6@(USER_DA),d0-d1/a0-a1	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts	.globl	__l_fetoxm1x__l_fetoxm1x:	link	a6,#-LOCAL_SIZE	moveml	d0-d1/a0-a1,a6@(USER_DA)	fmovemx fp0-fp3,a6@(USER_FP0)	fmovel	fpsr,a6@(USER_FPSR)

⌨️ 快捷键说明

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