Deleted Added
full compact
fpsetmask.c (125733) fpsetmask.c (176530)
1/* $NetBSD: fpsetmask.c,v 1.3 2002/01/13 21:45:48 thorpej Exp $ */
2
3/*
4 * Copyright (c) 1999 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Dan Winship.

--- 24 unchanged lines hidden (view full) ---

33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 * POSSIBILITY OF SUCH DAMAGE.
37 *
38 */
39
40#include <sys/cdefs.h>
1/* $NetBSD: fpsetmask.c,v 1.3 2002/01/13 21:45:48 thorpej Exp $ */
2
3/*
4 * Copyright (c) 1999 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Dan Winship.

--- 24 unchanged lines hidden (view full) ---

33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 * POSSIBILITY OF SUCH DAMAGE.
37 *
38 */
39
40#include <sys/cdefs.h>
41__FBSDID("$FreeBSD: head/lib/libc/powerpc/gen/fpsetmask.c 125733 2004-02-12 09:11:06Z grehan $");
41__FBSDID("$FreeBSD: head/lib/libc/powerpc/gen/fpsetmask.c 176530 2008-02-24 19:22:53Z raj $");
42
43#include <sys/types.h>
44#include <ieeefp.h>
45
42
43#include <sys/types.h>
44#include <ieeefp.h>
45
46#ifndef _SOFT_FLOAT
46fp_except_t
47fpsetmask(fp_except_t mask)
48{
49 u_int64_t fpscr;
50 fp_rnd_t old;
51
52 __asm__("mffs %0" : "=f"(fpscr));
53 old = (fp_rnd_t)((fpscr >> 3) & 0x1f);
54 fpscr = (fpscr & 0xffffff07) | (mask << 3);
55 __asm__ __volatile("mtfsf 0xff,%0" :: "f"(fpscr));
56 return (old);
57}
47fp_except_t
48fpsetmask(fp_except_t mask)
49{
50 u_int64_t fpscr;
51 fp_rnd_t old;
52
53 __asm__("mffs %0" : "=f"(fpscr));
54 old = (fp_rnd_t)((fpscr >> 3) & 0x1f);
55 fpscr = (fpscr & 0xffffff07) | (mask << 3);
56 __asm__ __volatile("mtfsf 0xff,%0" :: "f"(fpscr));
57 return (old);
58}
59#endif