138889Sjdp/* 238889Sjdp * Written by J.T. Conklin, Apr 10, 1995 360484Sobrien * Public domain. 460484Sobrien */ 560484Sobrien 638889Sjdp#include <sys/cdefs.h> 738889Sjdp__FBSDID("$FreeBSD$"); 860484Sobrien 938889Sjdp#include <machine/fsr.h> 1038889Sjdp#include <ieeefp.h> 1138889Sjdp 1260484Sobrienfp_except_t 1360484Sobrienfpsetmask(mask) 1438889Sjdp fp_except_t mask; 1577298Sobrien{ 1677298Sobrien fp_except_t old; 1777298Sobrien fp_except_t new; 1860484Sobrien 1938889Sjdp __asm__("st %%fsr,%0" : "=m" (old)); 2038889Sjdp 2138889Sjdp new = old; 2238889Sjdp new &= ~FSR_TEM_MASK; 2338889Sjdp new |= FSR_TEM(mask & FSR_EXC_MASK); 2438889Sjdp 2538889Sjdp __asm__("ld %0,%%fsr" : : "m" (new)); 2638889Sjdp 2738889Sjdp return (FSR_GET_TEM(old)); 2838889Sjdp} 2938889Sjdp