summaryrefslogtreecommitdiffstats
path: root/lib/msun/sparc64
diff options
context:
space:
mode:
authordas <das@FreeBSD.org>2005-01-14 07:09:23 +0000
committerdas <das@FreeBSD.org>2005-01-14 07:09:23 +0000
commit4ec986eab3914668211673027bf0160845519a35 (patch)
tree778e40f1835a14db783dd55f64577070b85926a2 /lib/msun/sparc64
parent8ea9839385621bf0b58f6ced08f73292c00d97d5 (diff)
downloadFreeBSD-src-4ec986eab3914668211673027bf0160845519a35.zip
FreeBSD-src-4ec986eab3914668211673027bf0160845519a35.tar.gz
Mark all inline asms that read the floating-point control or status
registers as volatile. Instructions that *wrote* to FP state were already marked volatile, but apparently gcc has license to move non-volatile asms past volatile asms. This broke amd64's feupdateenv at -O2 due to a WAR conflict between fnstsw and fldenv there.
Diffstat (limited to 'lib/msun/sparc64')
-rw-r--r--lib/msun/sparc64/fenv.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/msun/sparc64/fenv.h b/lib/msun/sparc64/fenv.h
index 793adcf..b425515 100644
--- a/lib/msun/sparc64/fenv.h
+++ b/lib/msun/sparc64/fenv.h
@@ -68,7 +68,7 @@ extern const fenv_t __fe_dfl_env;
#define _ENABLE_MASK (FE_ALL_EXCEPT << _FPUSW_SHIFT)
#define __ldxfsr(__r) __asm __volatile("ldx %0, %%fsr" : : "m" (__r))
-#define __stxfsr(__r) __asm("stx %%fsr, %0" : "=m" (*(__r)))
+#define __stxfsr(__r) __asm __volatile("stx %%fsr, %0" : "=m" (*(__r)))
static __inline int
feclearexcept(int __excepts)
OpenPOWER on IntegriCloud