191663Sjake/* 291663Sjake * Written by J.T. Conklin, Apr 10, 1995 391663Sjake * Public domain. 491663Sjake */ 591663Sjake 691663Sjake#include <sys/cdefs.h> 791663Sjake__FBSDID("$FreeBSD: releng/10.3/lib/libc/sparc64/gen/fpsetmask.c 103324 2002-09-14 18:07:03Z tmm $"); 891663Sjake 9103324Stmm#include <machine/fsr.h> 1091663Sjake#include <ieeefp.h> 1191663Sjake 1291663Sjakefp_except_t 1391663Sjakefpsetmask(mask) 1491663Sjake fp_except_t mask; 1591663Sjake{ 1691663Sjake fp_except_t old; 1791663Sjake fp_except_t new; 1891663Sjake 19103324Stmm __asm__("st %%fsr,%0" : "=m" (old)); 2091663Sjake 2191663Sjake new = old; 22103324Stmm new &= ~FSR_TEM_MASK; 23103324Stmm new |= FSR_TEM(mask & FSR_EXC_MASK); 2491663Sjake 25103324Stmm __asm__("ld %0,%%fsr" : : "m" (new)); 2691663Sjake 27103324Stmm return (FSR_GET_TEM(old)); 2891663Sjake} 29