xref: /openbsd-src/lib/libc/arch/hppa/gen/fpgetround.c (revision 29cc2a2d1d99869c4cfa9c708e043103e2d7d805)
1*29cc2a2dSguenther /*	$OpenBSD: fpgetround.c,v 1.5 2016/07/26 19:07:09 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_rnd
fpgetround(void)11*29cc2a2dSguenther fpgetround(void)
12c9d6e9aeSmiod {
138524f5e4Smickey 	u_int64_t fpsr;
14c9d6e9aeSmiod 
15b5aa3b33Sguenther 	__asm__ volatile("fstd %%fr0,0(%1)" : "=m" (fpsr) : "r" (&fpsr));
168524f5e4Smickey 	return ((fpsr >> 41) & 0x3);
17c9d6e9aeSmiod }
18*29cc2a2dSguenther DEF_WEAK(fpgetround);
19