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