fpsetmask.c revision 91663
1191783Srmacklem/* 2191783Srmacklem * Written by J.T. Conklin, Apr 10, 1995 3191783Srmacklem * Public domain. 4191783Srmacklem */ 5191783Srmacklem 6191783Srmacklem#include <sys/cdefs.h> 7191783Srmacklem__FBSDID("$FreeBSD: head/lib/libc/sparc64/gen/fpsetmask.c 91663 2002-03-05 04:03:57Z jake $"); 8191783Srmacklem 9191783Srmacklem#include <ieeefp.h> 10191783Srmacklem 11191783Srmacklemfp_except_t 12191783Srmacklemfpsetmask(mask) 13191783Srmacklem fp_except_t mask; 14191783Srmacklem{ 15191783Srmacklem fp_except_t old; 16191783Srmacklem fp_except_t new; 17191783Srmacklem 18191783Srmacklem __asm__("st %%fsr,%0" : "=m" (*&old)); 19191783Srmacklem 20191783Srmacklem new = old; 21191783Srmacklem new &= ~(0x1f << 23); 22191783Srmacklem new |= ((mask & 0x1f) << 23); 23191783Srmacklem 24191783Srmacklem __asm__("ld %0,%%fsr" : : "m" (*&new)); 25191783Srmacklem 26191783Srmacklem return (old >> 23) & 0x1f; 27191783Srmacklem} 28191783Srmacklem