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

📄 l_entry.s

📁 VXWORKS源代码
💻 S
📖 第 1 页 / 共 5 页
字号:
	fmovemx	a6@(USER_FP1),fp1-fp3	|  note: fp0 not restored	fmovel	a6@(USER_FPCR),fpcr	| fpcr restored	unlk	a6	rts	.globl	__l_fsinhd__l_fsinhd:	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_1117	bsrl	__l_ssinh		|  normalized (regular) number	jra 	L_111BL_1117:	cmpb	#0x20,d0		|  zero?	jne 	L_1118	bsrl	__l_szero	jra 	L_111BL_1118:	cmpb	#0x40,d0		|  infinity?	jne 	L_1119	bsrl	__l_sinf	jra 	L_111BL_1119:	cmpb	#0x60,d0		|  NaN?	jne 	L_111A	bsrl	__l_mon_nan	jra 	L_111BL_111A:	bsrl	__l_ssinhd		|  assuming a denorm...L_111B:	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_fsinhx__l_fsinhx:	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_111C	bsrl	__l_ssinh		|  normalized (regular) number	jra 	L_111GL_111C:	cmpb	#0x20,d0		|  zero?	jne 	L_111D	bsrl	__l_szero	jra 	L_111GL_111D:	cmpb	#0x40,d0		|  infinity?	jne 	L_111E	bsrl	__l_sinf	jra 	L_111GL_111E:	cmpb	#0x60,d0		|  NaN?	jne 	L_111F	bsrl	__l_mon_nan	jra 	L_111GL_111F:	bsrl	__l_ssinhd		|  assuming a denorm...L_111G:	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_ftans and __l_ftanx 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_stan|	xref	__l_szero|	xref	__l_t_operr|	xref	__l_mon_nan|	xref	__l_stand	.globl	__l_ftans__l_ftans:	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_1122	bsrl	__l_stan		|  normalized (regular) number	jra 	L_1126L_1122:	cmpb	#0x20,d0		|  zero?	jne 	L_1123	bsrl	__l_szero	jra 	L_1126L_1123:	cmpb	#0x40,d0		|  infinity?	jne 	L_1124	bsrl	__l_t_operr	jra 	L_1126L_1124:	cmpb	#0x60,d0		|  NaN?	jne 	L_1125	bsrl	__l_mon_nan	jra 	L_1126L_1125:	bsrl	__l_stand		|  assuming a denorm...L_1126:	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_ftand__l_ftand:	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_1127	bsrl	__l_stan		|  normalized (regular) number	jra 	L_112BL_1127:	cmpb	#0x20,d0		|  zero?	jne 	L_1128	bsrl	__l_szero	jra 	L_112BL_1128:	cmpb	#0x40,d0		|  infinity?	jne 	L_1129	bsrl	__l_t_operr	jra 	L_112BL_1129:	cmpb	#0x60,d0		|  NaN?	jne 	L_112A	bsrl	__l_mon_nan	jra 	L_112BL_112A:	bsrl	__l_stand		|  assuming a denorm...L_112B:	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_ftanx__l_ftanx:	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_112C	bsrl	__l_stan		|  normalized (regular) number	jra 	L_112GL_112C:	cmpb	#0x20,d0		|  zero?	jne 	L_112D	bsrl	__l_szero	jra 	L_112GL_112D:	cmpb	#0x40,d0		|  infinity?	jne 	L_112E	bsrl	__l_t_operr	jra 	L_112GL_112E:	cmpb	#0x60,d0		|  NaN?	jne 	L_112F	bsrl	__l_mon_nan	jra 	L_112GL_112F:	bsrl	__l_stand		|  assuming a denorm...L_112G:	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_ftanhs and __l_ftanhx 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_stanh|	xref	__l_szero|	xref	__l_sone|	xref	__l_mon_nan|	xref	__l_stanhd	.globl	__l_ftanhs__l_ftanhs:	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_1132	bsrl	__l_stanh		|  normalized (regular) number	jra 	L_1136L_1132:	cmpb	#0x20,d0		|  zero?	jne 	L_1133	bsrl	__l_szero	jra 	L_1136L_1133:	cmpb	#0x40,d0		|  infinity?	jne 	L_1134	bsrl	__l_sone	jra 	L_1136L_1134:	cmpb	#0x60,d0		|  NaN?	jne 	L_1135	bsrl	__l_mon_nan	jra 	L_1136L_1135:	bsrl	__l_stanhd		|  assuming a denorm...L_1136:	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_ftanhd__l_ftanhd:	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_1137	bsrl	__l_stanh		|  normalized (regular) number	jra 	L_113BL_1137:	cmpb	#0x20,d0		|  zero?	jne 	L_1138	bsrl	__l_szero	jra 	L_113BL_1138:	cmpb	#0x40,d0		|  infinity?	jne 	L_1139	bsrl	__l_sone	jra 	L_113BL_1139:	cmpb	#0x60,d0		|  NaN?	jne 	L_113A	bsrl	__l_mon_nan	jra 	L_113BL_113A:	bsrl	__l_stanhd		|  assuming a denorm...L_113B:	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_ftanhx__l_ftanhx:	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_113C	bsrl	__l_stanh		|  normalized (regular) number	jra 	L_113GL_113C:	cmpb	#0x20,d0		|  zero?	jne 	L_113D	bsrl	__l_szero	jra 	L_113GL_113D:	cmpb	#0x40,d0		|  infinity?	jne 	L_113E	bsrl	__l_sone	jra 	L_113GL_113E:	cmpb	#0x60,d0		|  NaN?	jne 	L_113F	bsrl	__l_mon_nan	jra 	L_113GL_113F:	bsrl	__l_stanhd		|  assuming a denorm...L_113G:	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 handlin

⌨️ 快捷键说明

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