xref: /openbsd/lib/libc/arch/m88k/gen/fpsetsticky.c (revision 0b514a07)
1 /*	$OpenBSD: fpsetsticky.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  * Ported to m88k by Nivas Madhur.
7  */
8 
9 #include <ieeefp.h>
10 
11 fp_except
fpsetsticky(sticky)12 fpsetsticky(sticky)
13 	fp_except sticky;
14 {
15 	fp_except old;
16 	fp_except new;
17 
18 	__asm__ volatile("fldcr %0, %%fcr62" : "=r" (old));
19 
20 	new = old;
21 	new &= ~(0x1f);
22 	new |= (sticky & 0x1f);
23 
24 	__asm__ volatile("fstcr %0, %%fcr62" : : "r" (new));
25 
26 	return (old & 0x1f);
27 }
28