Home | History | Annotate | Line # | Download | only in gen
fpsetmask.c revision 1.1
      1  1.1  eeh /*	$NetBSD: fpsetmask.c,v 1.1 1998/09/11 04:56:24 eeh Exp $	*/
      2  1.1  eeh 
      3  1.1  eeh /*
      4  1.1  eeh  * Written by J.T. Conklin, Apr 10, 1995
      5  1.1  eeh  * Public domain.
      6  1.1  eeh  */
      7  1.1  eeh 
      8  1.1  eeh #include <ieeefp.h>
      9  1.1  eeh 
     10  1.1  eeh fp_except
     11  1.1  eeh fpsetmask(mask)
     12  1.1  eeh 	fp_except mask;
     13  1.1  eeh {
     14  1.1  eeh 	fp_except old;
     15  1.1  eeh 	fp_except new;
     16  1.1  eeh 
     17  1.1  eeh 	__asm__("st %%fsr,%0" : "=m" (*&old));
     18  1.1  eeh 
     19  1.1  eeh 	new = old;
     20  1.1  eeh 	new &= ~(0x1f << 23);
     21  1.1  eeh 	new |= ((mask & 0x1f) << 23);
     22  1.1  eeh 
     23  1.1  eeh 	__asm__("ld %0,%%fsr" : : "m" (*&new));
     24  1.1  eeh 
     25  1.1  eeh 	return (old >> 23) & 0x1f;
     26  1.1  eeh }
     27