Home | History | Annotate | Line # | Download | only in gen
fpsetmask.S revision 1.3
      1  1.3     fvdl /*	$NetBSD: fpsetmask.S,v 1.3 2002/06/12 19:17:22 fvdl Exp $	*/
      2  1.1     fvdl 
      3  1.1     fvdl /*
      4  1.3     fvdl  * Written by Frank van der Linden at Wasabi Systems for NetBSD.
      5  1.1     fvdl  * Public domain.
      6  1.1     fvdl  */
      7  1.1     fvdl 
      8  1.1     fvdl #include <machine/asm.h>
      9  1.1     fvdl 
     10  1.3     fvdl /*
     11  1.3     fvdl  * XXX set both the x87 control word and the SSE mxcsr register.
     12  1.3     fvdl  * Applications should only set exception and round flags
     13  1.3     fvdl  * via the fp*() interface, otherwise the status words
     14  1.3     fvdl  * will get our of sync.
     15  1.3     fvdl  */
     16  1.3     fvdl 
     17  1.2  thorpej #ifdef WEAK_ALIAS
     18  1.2  thorpej WEAK_ALIAS(fpsetmask, _fpsetmask)
     19  1.2  thorpej ENTRY(_fpsetmask)
     20  1.2  thorpej #else
     21  1.1     fvdl ENTRY(fpsetmask)
     22  1.2  thorpej #endif
     23  1.3     fvdl 	fnstcw	-4(%rsp)
     24  1.3     fvdl 	stmxcsr	-8(%rsp)
     25  1.3     fvdl 	andl	$63,%edi
     26  1.3     fvdl 	notl	%edi
     27  1.3     fvdl 
     28  1.3     fvdl 	movl	-4(%rsp),%edx
     29  1.3     fvdl 	movl	%edx,%eax
     30  1.3     fvdl 	andl	%edi,%edx
     31  1.3     fvdl 	movl	%edx,-4(%rsp)
     32  1.3     fvdl 
     33  1.3     fvdl 	movl	-8(%rsp),%edx
     34  1.3     fvdl 	roll	$7,%edi
     35  1.3     fvdl 	andl	%edi,%edx
     36  1.3     fvdl 	movl	%edx,-8(%rsp)
     37  1.3     fvdl 
     38  1.3     fvdl 	fldcw	-4(%rsp)
     39  1.3     fvdl 	ldmxcsr	-8(%rsp)
     40  1.3     fvdl 	andl	$63,%eax
     41  1.1     fvdl 	ret
     42