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

📄 fplsp.s

📁 linux内核源码
💻 S
📖 第 1 页 / 共 5 页
字号:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUPM68000 Hi-Performance Microprocessor DivisionM68060 Software PackageProduction Release P1.00 -- October 10, 1994M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved.THE SOFTWARE is provided on an "AS IS" basis and without warranty.To the maximum extent permitted by applicable law,MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSEand any warranty against infringement with regard to the SOFTWARE(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials.To the maximum extent permitted by applicable law,IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.Motorola assumes no responsibility for the maintenance and support of the SOFTWARE.You are hereby granted a copyright license to use, modify, and distribute the SOFTWAREso long as this entire notice is retained without alteration in any modified and/orredistributed versions, and that such modified versions are clearly identified as such.No licenses are granted by implication, estoppel or otherwise under any patentsor trademarks of Motorola, Inc.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~## lfptop.s:#	This file is appended to the top of the 060ILSP package# and contains the entry points into the package. The user, in# effect, branches to one of the branch table entries located here.#	bra.l	_facoss_	short	0x0000	bra.l	_facosd_	short	0x0000	bra.l	_facosx_	short	0x0000	bra.l	_fasins_	short	0x0000	bra.l	_fasind_	short	0x0000	bra.l	_fasinx_	short	0x0000	bra.l	_fatans_	short	0x0000	bra.l	_fatand_	short	0x0000	bra.l	_fatanx_	short	0x0000	bra.l	_fatanhs_	short	0x0000	bra.l	_fatanhd_	short	0x0000	bra.l	_fatanhx_	short	0x0000	bra.l	_fcoss_	short	0x0000	bra.l	_fcosd_	short	0x0000	bra.l	_fcosx_	short	0x0000	bra.l	_fcoshs_	short	0x0000	bra.l	_fcoshd_	short	0x0000	bra.l	_fcoshx_	short	0x0000	bra.l	_fetoxs_	short	0x0000	bra.l	_fetoxd_	short	0x0000	bra.l	_fetoxx_	short	0x0000	bra.l	_fetoxm1s_	short	0x0000	bra.l	_fetoxm1d_	short	0x0000	bra.l	_fetoxm1x_	short	0x0000	bra.l	_fgetexps_	short	0x0000	bra.l	_fgetexpd_	short	0x0000	bra.l	_fgetexpx_	short	0x0000	bra.l	_fgetmans_	short	0x0000	bra.l	_fgetmand_	short	0x0000	bra.l	_fgetmanx_	short	0x0000	bra.l	_flog10s_	short	0x0000	bra.l	_flog10d_	short	0x0000	bra.l	_flog10x_	short	0x0000	bra.l	_flog2s_	short	0x0000	bra.l	_flog2d_	short	0x0000	bra.l	_flog2x_	short	0x0000	bra.l	_flogns_	short	0x0000	bra.l	_flognd_	short	0x0000	bra.l	_flognx_	short	0x0000	bra.l	_flognp1s_	short	0x0000	bra.l	_flognp1d_	short	0x0000	bra.l	_flognp1x_	short	0x0000	bra.l	_fmods_	short	0x0000	bra.l	_fmodd_	short	0x0000	bra.l	_fmodx_	short	0x0000	bra.l	_frems_	short	0x0000	bra.l	_fremd_	short	0x0000	bra.l	_fremx_	short	0x0000	bra.l	_fscales_	short	0x0000	bra.l	_fscaled_	short	0x0000	bra.l	_fscalex_	short	0x0000	bra.l	_fsins_	short	0x0000	bra.l	_fsind_	short	0x0000	bra.l	_fsinx_	short	0x0000	bra.l	_fsincoss_	short	0x0000	bra.l	_fsincosd_	short	0x0000	bra.l	_fsincosx_	short	0x0000	bra.l	_fsinhs_	short	0x0000	bra.l	_fsinhd_	short	0x0000	bra.l	_fsinhx_	short	0x0000	bra.l	_ftans_	short	0x0000	bra.l	_ftand_	short	0x0000	bra.l	_ftanx_	short	0x0000	bra.l	_ftanhs_	short	0x0000	bra.l	_ftanhd_	short	0x0000	bra.l	_ftanhx_	short	0x0000	bra.l	_ftentoxs_	short	0x0000	bra.l	_ftentoxd_	short	0x0000	bra.l	_ftentoxx_	short	0x0000	bra.l	_ftwotoxs_	short	0x0000	bra.l	_ftwotoxd_	short	0x0000	bra.l	_ftwotoxx_	short	0x0000	bra.l	_fabss_	short	0x0000	bra.l	_fabsd_	short	0x0000	bra.l	_fabsx_	short	0x0000	bra.l	_fadds_	short	0x0000	bra.l	_faddd_	short	0x0000	bra.l	_faddx_	short	0x0000	bra.l	_fdivs_	short	0x0000	bra.l	_fdivd_	short	0x0000	bra.l	_fdivx_	short	0x0000	bra.l	_fints_	short	0x0000	bra.l	_fintd_	short	0x0000	bra.l	_fintx_	short	0x0000	bra.l	_fintrzs_	short	0x0000	bra.l	_fintrzd_	short	0x0000	bra.l	_fintrzx_	short	0x0000	bra.l	_fmuls_	short	0x0000	bra.l	_fmuld_	short	0x0000	bra.l	_fmulx_	short	0x0000	bra.l	_fnegs_	short	0x0000	bra.l	_fnegd_	short	0x0000	bra.l	_fnegx_	short	0x0000	bra.l	_fsqrts_	short	0x0000	bra.l	_fsqrtd_	short	0x0000	bra.l	_fsqrtx_	short	0x0000	bra.l	_fsubs_	short	0x0000	bra.l	_fsubd_	short	0x0000	bra.l	_fsubx_	short	0x0000# leave room for future possible additions	align	0x400## This file contains a set of define statements for constants# in order to promote readability within the corecode itself.#set LOCAL_SIZE,		192			# stack frame size(bytes)set LV,			-LOCAL_SIZE		# stack offsetset EXC_SR,		0x4			# stack status registerset EXC_PC,		0x6			# stack pcset EXC_VOFF,		0xa			# stacked vector offsetset EXC_EA,		0xc			# stacked <ea>set EXC_FP,		0x0			# frame pointerset EXC_AREGS,		-68			# offset of all address regsset EXC_DREGS,		-100			# offset of all data regsset EXC_FPREGS,		-36			# offset of all fp regsset EXC_A7,		EXC_AREGS+(7*4)		# offset of saved a7set OLD_A7,		EXC_AREGS+(6*4)		# extra copy of saved a7set EXC_A6,		EXC_AREGS+(6*4)		# offset of saved a6set EXC_A5,		EXC_AREGS+(5*4)set EXC_A4,		EXC_AREGS+(4*4)set EXC_A3,		EXC_AREGS+(3*4)set EXC_A2,		EXC_AREGS+(2*4)set EXC_A1,		EXC_AREGS+(1*4)set EXC_A0,		EXC_AREGS+(0*4)set EXC_D7,		EXC_DREGS+(7*4)set EXC_D6,		EXC_DREGS+(6*4)set EXC_D5,		EXC_DREGS+(5*4)set EXC_D4,		EXC_DREGS+(4*4)set EXC_D3,		EXC_DREGS+(3*4)set EXC_D2,		EXC_DREGS+(2*4)set EXC_D1,		EXC_DREGS+(1*4)set EXC_D0,		EXC_DREGS+(0*4)set EXC_FP0,		EXC_FPREGS+(0*12)	# offset of saved fp0set EXC_FP1,		EXC_FPREGS+(1*12)	# offset of saved fp1set EXC_FP2,		EXC_FPREGS+(2*12)	# offset of saved fp2 (not used)set FP_SCR1,		LV+80			# fp scratch 1set FP_SCR1_EX,		FP_SCR1+0set FP_SCR1_SGN,	FP_SCR1+2set FP_SCR1_HI,		FP_SCR1+4set FP_SCR1_LO,		FP_SCR1+8set FP_SCR0,		LV+68			# fp scratch 0set FP_SCR0_EX,		FP_SCR0+0set FP_SCR0_SGN,	FP_SCR0+2set FP_SCR0_HI,		FP_SCR0+4set FP_SCR0_LO,		FP_SCR0+8set FP_DST,		LV+56			# fp destination operandset FP_DST_EX,		FP_DST+0set FP_DST_SGN,		FP_DST+2set FP_DST_HI,		FP_DST+4set FP_DST_LO,		FP_DST+8set FP_SRC,		LV+44			# fp source operandset FP_SRC_EX,		FP_SRC+0set FP_SRC_SGN,		FP_SRC+2set FP_SRC_HI,		FP_SRC+4set FP_SRC_LO,		FP_SRC+8set USER_FPIAR,		LV+40			# FP instr address registerset USER_FPSR,		LV+36			# FP status registerset FPSR_CC,		USER_FPSR+0		# FPSR condition codesset FPSR_QBYTE,		USER_FPSR+1		# FPSR qoutient byteset FPSR_EXCEPT,	USER_FPSR+2		# FPSR exception status byteset FPSR_AEXCEPT,	USER_FPSR+3		# FPSR accrued exception byteset USER_FPCR,		LV+32			# FP control registerset FPCR_ENABLE,	USER_FPCR+2		# FPCR exception enableset FPCR_MODE,		USER_FPCR+3		# FPCR rounding mode controlset L_SCR3,		LV+28			# integer scratch 3set L_SCR2,		LV+24			# integer scratch 2set L_SCR1,		LV+20			# integer scratch 1set STORE_FLG,		LV+19			# flag: operand store (ie. not fcmp/ftst)set EXC_TEMP2,		LV+24			# temporary spaceset EXC_TEMP,		LV+16			# temporary spaceset DTAG,		LV+15			# destination operand typeset STAG,		LV+14			# source operand typeset SPCOND_FLG,		LV+10			# flag: special case (see below)set EXC_CC,		LV+8			# saved condition codesset EXC_EXTWPTR,	LV+4			# saved current PC (active)set EXC_EXTWORD,	LV+2			# saved extension wordset EXC_CMDREG,		LV+2			# saved extension wordset EXC_OPWORD,		LV+0			# saved operation word################################# Helpful macrosset FTEMP,		0			# offsets within anset FTEMP_EX,		0			# extended precisionset FTEMP_SGN,		2			# value saved in memory.set FTEMP_HI,		4set FTEMP_LO,		8set FTEMP_GRS,		12set LOCAL,		0			# offsets within anset LOCAL_EX,		0			# extended precisionset LOCAL_SGN,		2			# value saved in memory.set LOCAL_HI,		4set LOCAL_LO,		8set LOCAL_GRS,		12set DST,		0			# offsets within anset DST_EX,		0			# extended precisionset DST_HI,		4			# value saved in memory.set DST_LO,		8set SRC,		0			# offsets within anset SRC_EX,		0			# extended precisionset SRC_HI,		4			# value saved in memory.set SRC_LO,		8set SGL_LO,		0x3f81			# min sgl prec exponentset SGL_HI,		0x407e			# max sgl prec exponentset DBL_LO,		0x3c01			# min dbl prec exponentset DBL_HI,		0x43fe			# max dbl prec exponentset EXT_LO,		0x0			# min ext prec exponentset EXT_HI,		0x7ffe			# max ext prec exponentset EXT_BIAS,		0x3fff			# extended precision biasset SGL_BIAS,		0x007f			# single precision biasset DBL_BIAS,		0x03ff			# double precision biasset NORM,		0x00			# operand type for STAG/DTAGset ZERO,		0x01			# operand type for STAG/DTAGset INF,		0x02			# operand type for STAG/DTAGset QNAN,		0x03			# operand type for STAG/DTAGset DENORM,		0x04			# operand type for STAG/DTAGset SNAN,		0x05			# operand type for STAG/DTAGset UNNORM,		0x06			# operand type for STAG/DTAG################### FPSR/FPCR bits ###################set neg_bit,		0x3			# negative resultset z_bit,		0x2			# zero resultset inf_bit,		0x1			# infinite resultset nan_bit,		0x0			# NAN resultset q_sn_bit,		0x7			# sign bit of quotient byteset bsun_bit,		7			# branch on unorderedset snan_bit,		6			# signalling NANset operr_bit,		5			# operand errorset ovfl_bit,		4			# overflowset unfl_bit,		3			# underflowset dz_bit,		2			# divide by zeroset inex2_bit,		1			# inexact result 2set inex1_bit,		0			# inexact result 1set aiop_bit,		7			# accrued inexact operation bitset aovfl_bit,		6			# accrued overflow bitset aunfl_bit,		5			# accrued underflow bitset adz_bit,		4			# accrued dz bitset ainex_bit,		3			# accrued inexact bit############################## FPSR individual bit masks ##############################set neg_mask,		0x08000000		# negative bit mask (lw)set inf_mask,		0x02000000		# infinity bit mask (lw)set z_mask,		0x04000000		# zero bit mask (lw)set nan_mask,		0x01000000		# nan bit mask (lw)set neg_bmask,		0x08			# negative bit mask (byte)set inf_bmask,		0x02			# infinity bit mask (byte)set z_bmask,		0x04			# zero bit mask (byte)set nan_bmask,		0x01			# nan bit mask (byte)set bsun_mask,		0x00008000		# bsun exception maskset snan_mask,		0x00004000		# snan exception maskset operr_mask,		0x00002000		# operr exception maskset ovfl_mask,		0x00001000		# overflow exception maskset unfl_mask,		0x00000800		# underflow exception maskset dz_mask,		0x00000400		# dz exception maskset inex2_mask,		0x00000200		# inex2 exception maskset inex1_mask,		0x00000100		# inex1 exception maskset aiop_mask,		0x00000080		# accrued illegal operationset aovfl_mask,		0x00000040		# accrued overflowset aunfl_mask,		0x00000020		# accrued underflowset adz_mask,		0x00000010		# accrued divide by zeroset ainex_mask,		0x00000008		# accrued inexact####################################### FPSR combinations used in the FPSP #######################################set dzinf_mask,		inf_mask+dz_mask+adz_maskset opnan_mask,		nan_mask+operr_mask+aiop_maskset nzi_mask,		0x01ffffff		#clears N, Z, and Iset unfinx_mask,	unfl_mask+inex2_mask+aunfl_mask+ainex_maskset unf2inx_mask,	unfl_mask+inex2_mask+ainex_maskset ovfinx_mask,	ovfl_mask+inex2_mask+aovfl_mask+ainex_maskset inx1a_mask,		inex1_mask+ainex_maskset inx2a_mask,		inex2_mask+ainex_maskset snaniop_mask,	nan_mask+snan_mask+aiop_maskset snaniop2_mask,	snan_mask+aiop_maskset naniop_mask,	nan_mask+aiop_maskset neginf_mask,	neg_mask+inf_maskset infaiop_mask,	inf_mask+aiop_maskset negz_mask,		neg_mask+z_maskset opaop_mask,		operr_mask+aiop_maskset unfl_inx_mask,	unfl_mask+aunfl_mask+ainex_maskset ovfl_inx_mask,	ovfl_mask+aovfl_mask+ainex_mask########## misc. ##########set rnd_stky_bit,	29			# stky bit pos in longwordset sign_bit,		0x7			# sign bitset signan_bit,		0x6			# signalling nan bitset sgl_thresh,		0x3f81			# minimum sgl exponentset dbl_thresh,		0x3c01			# minimum dbl exponentset x_mode,		0x0			# extended precisionset s_mode,		0x4			# single precisionset d_mode,		0x8			# double precisionset rn_mode,		0x0			# round-to-nearestset rz_mode,		0x1			# round-to-zeroset rm_mode,		0x2			# round-tp-minus-infinityset rp_mode,		0x3			# round-to-plus-infinityset mantissalen,	64			# length of mantissa in bitsset BYTE,		1			# len(byte) == 1 byteset WORD,		2			# len(word) == 2 bytesset LONG,		4			# len(longword) == 2 bytesset BSUN_VEC,		0xc0			# bsun    vector offsetset INEX_VEC,		0xc4			# inexact vector offsetset DZ_VEC,		0xc8			# dz      vector offsetset UNFL_VEC,		0xcc			# unfl    vector offsetset OPERR_VEC,		0xd0			# operr   vector offsetset OVFL_VEC,		0xd4			# ovfl    vector offsetset SNAN_VEC,		0xd8			# snan    vector offset############################ SPecial CONDition FLaGs ############################set ftrapcc_flg,	0x01			# flag bit: ftrapcc exceptionset fbsun_flg,		0x02			# flag bit: bsun exceptionset mia7_flg,		0x04			# flag bit: (a7)+ <ea>set mda7_flg,		0x08			# flag bit: -(a7) <ea>set fmovm_flg,		0x40			# flag bit: fmovm instructionset immed_flg,		0x80			# flag bit: &<data> <ea>set ftrapcc_bit,	0x0set fbsun_bit,		0x1set mia7_bit,		0x2set mda7_bit,		0x3set immed_bit,		0x7################################### TRANSCENDENTAL "LAST-OP" FLAGS ###################################set FMUL_OP,		0x0			# fmul instr performed lastset FDIV_OP,		0x1			# fdiv performed lastset FADD_OP,		0x2			# fadd performed lastset FMOV_OP,		0x3			# fmov performed last############## CONSTANTS ##############T1:	long		0x40C62D38,0xD3D64634	# 16381 LOG2 LEADT2:	long		0x3D6F90AE,0xB1E75CC7	# 16381 LOG2 TRAILPI:	long		0x40000000,0xC90FDAA2,0x2168C235,0x00000000PIBY2:	long		0x3FFF0000,0xC90FDAA2,0x2168C235,0x00000000TWOBYPI:	long		0x3FE45F30,0x6DC9C883########################################################################## MONADIC TEMPLATE							##########################################################################	global		_fsins__fsins_:	link		%a6,&-LOCAL_SIZE	movm.l		&0x0303,EXC_DREGS(%a6)	# save d0-d1/a0-a1	fmovm.l		%fpcr,%fpsr,USER_FPCR(%a6) # save ctrl regs	fmovm.x		&0xc0,EXC_FP0(%a6)	# save fp0/fp1	fmov.l		&0x0,%fpcr		# zero FPCR##	copy, convert, and tag input argument#	fmov.s		0x8(%a6),%fp0		# load sgl input	fmov.x		%fp0,FP_SRC(%a6)	lea		FP_SRC(%a6),%a0	bsr.l		tag			# fetch operand type	mov.b		%d0,STAG(%a6)	mov.b		%d0,%d1	andi.l		&0x00ff00ff,USER_FPSR(%a6)

⌨️ 快捷键说明

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