fpsetmask.c revision 91663
151078Speter/* 251078Speter * Written by J.T. Conklin, Apr 10, 1995 351078Speter * Public domain. 451078Speter */ 551078Speter 651078Speter#include <sys/cdefs.h> 751078Speter__FBSDID("$FreeBSD: head/lib/libc/sparc64/gen/fpsetmask.c 91663 2002-03-05 04:03:57Z jake $"); 851078Speter 951078Speter#include <ieeefp.h> 1051078Speter 1151078Speterfp_except_t 1251078Speterfpsetmask(mask) 1351078Speter fp_except_t mask; 1451078Speter{ 1551078Speter fp_except_t old; 1651078Speter fp_except_t new; 1751078Speter 1851078Speter __asm__("st %%fsr,%0" : "=m" (*&old)); 1951078Speter 2051078Speter new = old; 2151078Speter new &= ~(0x1f << 23); 2251078Speter new |= ((mask & 0x1f) << 23); 2351078Speter 2451078Speter __asm__("ld %0,%%fsr" : : "m" (*&new)); 2551078Speter 2651078Speter return (old >> 23) & 0x1f; 2751078Speter} 2851078Speter