1/* $NetBSD: fpsetround.c,v 1.2 2002/01/13 21:45:51 thorpej Exp $ */ 2 3/* 4 * Written by J.T. Conklin, Apr 10, 1995 5 * Public domain. 6 */ 7 8#include <sys/cdefs.h> 9__FBSDID("$FreeBSD$"); 10 11#include <machine/fsr.h> 12#include <ieeefp.h> 13 14fp_rnd_t 15fpsetround(rnd_dir) 16 fp_rnd_t rnd_dir; 17{ 18 unsigned int old; 19 unsigned int new; 20 21 __asm__("st %%fsr,%0" : "=m" (old)); 22 23 new = old; 24 new &= ~FSR_RD_MASK; 25 new |= FSR_RD((unsigned int)rnd_dir & 0x03); 26 27 __asm__("ld %0,%%fsr" : : "m" (new)); 28 29 return ((fp_rnd_t)FSR_GET_RD(old)); 30} 31