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