xref: /openbsd-src/lib/libc/arch/hppa/gen/fpgetsticky.c (revision b5aa3b3329f64accdef718a6489253474d9be985)
1*b5aa3b33Sguenther /*	$OpenBSD: fpgetsticky.c,v 1.4 2014/04/18 15:09:52 guenther Exp $	*/
2c9d6e9aeSmiod 
3c9d6e9aeSmiod /*
44451fc0fSmiod  * Written by Miodrag Vallat.  Public domain
5c9d6e9aeSmiod  */
6c9d6e9aeSmiod 
7c9d6e9aeSmiod #include <sys/types.h>
8c9d6e9aeSmiod #include <ieeefp.h>
9c9d6e9aeSmiod 
10c9d6e9aeSmiod fp_except
fpgetsticky()11c9d6e9aeSmiod fpgetsticky()
12c9d6e9aeSmiod {
138524f5e4Smickey 	u_int64_t fpsr;
14c9d6e9aeSmiod 
15*b5aa3b33Sguenther 	__asm__ volatile("fstd %%fr0,0(%1)" : "=m" (fpsr) : "r" (&fpsr));
168524f5e4Smickey 	return ((fpsr >> 59) & 0x1f);
17c9d6e9aeSmiod }
18