Home | History | Annotate | Line # | Download | only in fpsp
DYADIC.CI5 revision 1.1.1.1
      1 *	MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
      2 *	M68000 Hi-Performance Microprocessor Division
      3 *	M68040 Software Package 
      4 *
      5 *	M68040 Software Package Copyright (c) 1993, 1994 Motorola Inc.
      6 *	All rights reserved.
      7 *
      8 *	THE SOFTWARE is provided on an "AS IS" basis and without warranty.
      9 *	To the maximum extent permitted by applicable law,
     10 *	MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
     11 *	INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
     12 *	PARTICULAR PURPOSE and any warranty against infringement with
     13 *	regard to the SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF)
     14 *	and any accompanying written materials. 
     15 *
     16 *	To the maximum extent permitted by applicable law,
     17 *	IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
     18 *	(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS
     19 *	PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR
     20 *	OTHER PECUNIARY LOSS) ARISING OF THE USE OR INABILITY TO USE THE
     21 *	SOFTWARE.  Motorola assumes no responsibility for the maintenance
     22 *	and support of the SOFTWARE.  
     23 *
     24 *	You are hereby granted a copyright license to use, modify, and
     25 *	distribute the SOFTWARE so long as this entire notice is retained
     26 *	without alteration in any modified and/or redistributed versions,
     27 *	and that such modified versions are clearly identified as such.
     28 *	No licenses are granted by implication, estoppel or otherwise
     29 *	under any patents or trademarks of Motorola, Inc.
     30 
     31 *
     32 *	DYADIC.CI5 1.2 4/30/91
     33 *
     34 *	DYADIC.CI5 --- DYADIC template for CI5 compiler
     35 *
     36 
     37 	xref	_OPa_
     38 	xref	tag
     39 
     40 	xdef	_OPd_
     41 _OPd_:
     42 	link	a6,#-LOCAL_SIZE
     43 	fmovem.x fp2-fp3,USER_FP2(a6)
     44 	fmovem.l fpsr/fpcr,USER_FPSR(a6) ; user's rounding mode/precision
     45 	fmove.l	#0,fpcr		; force rounding mode/prec to extended,rn
     46 *
     47 *	copy, convert and tag input arguments
     48 *
     49 	fmove.d	8(a6),fp0
     50 	fmove.x	fp0,FPTEMP(a6)
     51 	lea	FPTEMP(a6),a0
     52 	bsr	tag
     53 	move.b	d0,DTAG(a6)
     54 
     55 	fmove.d	16(a6),fp0
     56 	fmove.x	fp0,ETEMP(a6)
     57 	lea	ETEMP(a6),a0
     58 	bsr	tag
     59 	move.b	d0,STAG(a6)
     60 
     61 	bsr	_OPa_
     62 
     63 	fmove.l	fpsr,d0		; update status register
     64 	or.b	FPSR_AEXCEPT(a6),d0	;add previously accrued exceptions
     65 	swap.w	d0
     66 	or.b	FPSR_QBYTE(a6),d0	; pickup sign of quotient byte
     67 	swap.w	d0
     68 	fmove.l	d0,fpsr		
     69 *
     70 *	Result is now in FP0
     71 *
     72 	fmovem.x USER_FP2(a6),fp2-fp3	; note: FP0/FP1 not restored
     73 	unlk	a6
     74 	rts
     75 
     76