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