xref: /netbsd-src/lib/libc/arch/sparc/gen/flt_rounds.c (revision 23c8222edbfb0f0932d88a8351d3a0cf817dfb9e)
1 /*	$NetBSD: flt_rounds.c,v 1.4 2003/11/01 14:26:29 nakayama Exp $	*/
2 
3 /*
4  * Written by J.T. Conklin, Apr 10, 1995
5  * Public domain.
6  */
7 
8 #include <sys/types.h>
9 #include <machine/float.h>
10 
11 static const int map[] = {
12 	1,	/* round to nearest */
13 	0,	/* round to zero */
14 	2,	/* round to positive infinity */
15 	3	/* round to negative infinity */
16 };
17 
18 int
19 __flt_rounds()
20 {
21 	int x;
22 
23 	__asm__("st %%fsr,%0" : "=m" (*&x));
24 	return map[(x >> 30) & 0x03];
25 }
26