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