flt_rounds.c revision 285830
1/* 2 * Written by J.T. Conklin, Apr 10, 1995 3 * Public domain. 4 */ 5 6#include <sys/cdefs.h> 7__FBSDID("$FreeBSD: releng/10.2/lib/libc/sparc64/gen/flt_rounds.c 140424 2005-01-18 15:29:28Z das $"); 8 9#include <sys/types.h> 10#include <machine/float.h> 11 12static const int map[] = { 13 1, /* round to nearest */ 14 0, /* round to zero */ 15 2, /* round to positive infinity */ 16 3 /* round to negative infinity */ 17}; 18 19int 20__flt_rounds() 21{ 22 int x; 23 24 __asm("st %%fsr,%0" : "=m" (*&x)); 25 return map[(x >> 30) & 0x03]; 26} 27