diff options
| author | Jake Burkholder <jake@FreeBSD.org> | 2002-03-05 04:03:57 +0000 |
|---|---|---|
| committer | Jake Burkholder <jake@FreeBSD.org> | 2002-03-05 04:03:57 +0000 |
| commit | 3ff2c61db800661a45937ed7fe3660e08a9e010a (patch) | |
| tree | 5f35a618ec65e372e14bd852d27b771ecedd32f2 /lib/libc | |
| parent | f496405572792600c12200c071c194e539d0450d (diff) | |
Notes
Diffstat (limited to 'lib/libc')
| -rw-r--r-- | lib/libc/sparc64/gen/Makefile.inc | 4 | ||||
| -rw-r--r-- | lib/libc/sparc64/gen/fpsetmask.c | 27 |
2 files changed, 29 insertions, 2 deletions
diff --git a/lib/libc/sparc64/gen/Makefile.inc b/lib/libc/sparc64/gen/Makefile.inc index e4fdbc70f328..afc3a9edb708 100644 --- a/lib/libc/sparc64/gen/Makefile.inc +++ b/lib/libc/sparc64/gen/Makefile.inc @@ -1,4 +1,4 @@ # $FreeBSD$ -SRCS+= _setjmp.S fixunsdfsi.S flt_rounds.c infinity.c isinf.c ldexp.c \ - modf.S setjmp.S sigsetjmp.S +SRCS+= _setjmp.S fixunsdfsi.S flt_rounds.c fpsetmask.c infinity.c isinf.c \ + ldexp.c modf.S setjmp.S sigsetjmp.S diff --git a/lib/libc/sparc64/gen/fpsetmask.c b/lib/libc/sparc64/gen/fpsetmask.c new file mode 100644 index 000000000000..a1ef3be9739d --- /dev/null +++ b/lib/libc/sparc64/gen/fpsetmask.c @@ -0,0 +1,27 @@ +/* + * Written by J.T. Conklin, Apr 10, 1995 + * Public domain. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <ieeefp.h> + +fp_except_t +fpsetmask(mask) + fp_except_t mask; +{ + fp_except_t old; + fp_except_t new; + + __asm__("st %%fsr,%0" : "=m" (*&old)); + + new = old; + new &= ~(0x1f << 23); + new |= ((mask & 0x1f) << 23); + + __asm__("ld %0,%%fsr" : : "m" (*&new)); + + return (old >> 23) & 0x1f; +} |
