xref: /openbsd/lib/libc/arch/m88k/gen/fpsetmask.c (revision 17df1aa7)
1 /*	$OpenBSD: fpsetmask.c,v 1.3 2005/08/07 16:40:14 espie Exp $	*/
2 
3 /*
4  * Written by J.T. Conklin, Apr 10, 1995
5  * Public domain.
6  * Porting to m88k by Nivas Madhur.
7  */
8 
9 #include <ieeefp.h>
10 
11 fp_except
12 fpsetmask(mask)
13 	fp_except mask;
14 {
15 	fp_except old;
16 	fp_except new;
17 
18 	__asm__ volatile("fldcr %0,fcr63" : "=r" (old));
19 
20 	new = old;
21 	new &= ~0x1f;		/* clear bottom 5 bits and */
22 	new |= (mask & 0x1f);	/* set them to mask */
23 
24 	__asm__ volatile("fstcr %0,fcr63" : : "r" (new));
25 
26 	return (old & 0x1f);
27 }
28