Home | History | Annotate | Line # | Download | only in gen
      1  1.6  uebayasi /*	$NetBSD: fpsetround.S,v 1.6 2014/05/23 02:34:19 uebayasi Exp $	*/
      2  1.2     perry 
      3  1.1   mycroft /*
      4  1.4  christos  * Written by Frank van der Linden at Wasabi Systems for NetBSD.
      5  1.1   mycroft  * Public domain.
      6  1.1   mycroft  */
      7  1.1   mycroft 
      8  1.1   mycroft #include <machine/asm.h>
      9  1.1   mycroft 
     10  1.4  christos /*
     11  1.4  christos  * XXX set both the x87 control word
     12  1.4  christos  * Applications should only set exception and round flags
     13  1.4  christos  */
     14  1.4  christos 
     15  1.4  christos 
     16  1.3   thorpej #ifdef WEAK_ALIAS
     17  1.3   thorpej WEAK_ALIAS(fpsetround, _fpsetround)
     18  1.3   thorpej ENTRY(_fpsetround)
     19  1.3   thorpej #else
     20  1.1   mycroft ENTRY(fpsetround)
     21  1.3   thorpej #endif
     22  1.1   mycroft 
     23  1.4  christos 	fnstcw	-4(%esp)
     24  1.4  christos 	movl	-4(%esp), %edx
     25  1.4  christos 	movl	%edx, %eax
     26  1.4  christos 	andl	$0x00000c00, %eax
     27  1.4  christos 	andl	$0xfffff3ff, %edx
     28  1.5  christos 	movl	4(%esp), %ecx
     29  1.5  christos 	orl	%ecx, %edx
     30  1.4  christos 	movl	%edx, -4(%esp)
     31  1.4  christos 	fldcw	-4(%esp)
     32  1.1   mycroft 
     33  1.1   mycroft 	ret
     34  1.6  uebayasi #ifdef WEAK_ALIAS
     35  1.6  uebayasi END(_fpsetround)
     36  1.6  uebayasi #else
     37  1.6  uebayasi END(fpsetround)
     38  1.6  uebayasi #endif
     39