1/*	$NetBSD: fpgetsticky.c,v 1.6 2012/03/17 21:35:06 martin Exp $	*/
2
3/*
4 * Written by J.T. Conklin, Apr 10, 1995
5 * Public domain.
6 */
7
8#include <sys/cdefs.h>
9#if defined(LIBC_SCCS) && !defined(lint)
10__RCSID("$NetBSD: fpgetsticky.c,v 1.6 2012/03/17 21:35:06 martin Exp $");
11#endif /* LIBC_SCCS and not lint */
12
13#include "namespace.h"
14
15#include <sys/types.h>
16#include <ieeefp.h>
17
18#ifdef __weak_alias
19__weak_alias(fpgetsticky,_fpgetsticky)
20#endif
21
22#ifdef EXCEPTIONS_WITH_SOFTFLOAT
23extern fp_except _softfloat_float_exception_flags;
24#endif
25
26fp_except
27fpgetsticky(void)
28{
29	uint32_t x;
30	fp_except res;
31
32	__asm("st %%fsr,%0" : "=m" (*&x));
33	res = (x >> 5) & 0x1f;
34
35#ifdef EXCEPTIONS_WITH_SOFTFLOAT
36	res |= _softfloat_float_exception_flags;
37#endif
38
39	return res;
40}
41