xref: /openbsd/lib/libc/arch/m88k/gen/fpsetmask.c (revision 09467b48)
1 /*	$OpenBSD: fpsetmask.c,v 1.4 2013/01/05 11:20:55 miod 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