]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - lib/libc/sparc64/gen/fpsetmask.c
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / lib / libc / sparc64 / gen / fpsetmask.c
1 /*
2  * Written by J.T. Conklin, Apr 10, 1995
3  * Public domain.
4  */
5
6 #include <sys/cdefs.h>
7 __FBSDID("$FreeBSD$");
8
9 #include <machine/fsr.h>
10 #include <ieeefp.h>
11
12 fp_except_t
13 fpsetmask(mask)
14         fp_except_t mask;
15 {
16         fp_except_t old;
17         fp_except_t new;
18
19         __asm__("st %%fsr,%0" : "=m" (old));
20
21         new = old;
22         new &= ~FSR_TEM_MASK;
23         new |= FSR_TEM(mask & FSR_EXC_MASK);
24
25         __asm__("ld %0,%%fsr" : : "m" (new));
26
27         return (FSR_GET_TEM(old));
28 }