summaryrefslogtreecommitdiffstats
path: root/sys/amd64/amd64/fpu.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2010-07-26 22:16:36 +0000
committerjkim <jkim@FreeBSD.org>2010-07-26 22:16:36 +0000
commitc9cd4250bdabd161203cbfa1bd8fa9d74834a3b7 (patch)
tree2e3a84c1c28bd3c643f5610084ace25064106bec /sys/amd64/amd64/fpu.c
parent13f6efd22794a5a17e35239bfcce7c0cb5f70b1d (diff)
downloadFreeBSD-src-c9cd4250bdabd161203cbfa1bd8fa9d74834a3b7.zip
FreeBSD-src-c9cd4250bdabd161203cbfa1bd8fa9d74834a3b7.tar.gz
Reduce diff against fenv.h:
Mark all inline asms as volatile for safety. No object file change after this commit (verified with md5).
Diffstat (limited to 'sys/amd64/amd64/fpu.c')
-rw-r--r--sys/amd64/amd64/fpu.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c
index 2d4e41e..03e3b33 100644
--- a/sys/amd64/amd64/fpu.c
+++ b/sys/amd64/amd64/fpu.c
@@ -65,17 +65,18 @@ __FBSDID("$FreeBSD$");
#if defined(__GNUCLIKE_ASM) && !defined(lint)
-#define fldcw(addr) __asm("fldcw %0" : : "m" (*(addr)))
-#define fnclex() __asm("fnclex")
-#define fninit() __asm("fninit")
+#define fldcw(addr) __asm __volatile("fldcw %0" : : "m" (*(addr)))
+#define fnclex() __asm __volatile("fnclex")
+#define fninit() __asm __volatile("fninit")
#define fnstcw(addr) __asm __volatile("fnstcw %0" : "=m" (*(addr)))
#define fnstsw(addr) __asm __volatile("fnstsw %0" : "=am" (*(addr)))
-#define fxrstor(addr) __asm("fxrstor %0" : : "m" (*(addr)))
+#define fxrstor(addr) __asm __volatile("fxrstor %0" : : "m" (*(addr)))
#define fxsave(addr) __asm __volatile("fxsave %0" : "=m" (*(addr)))
#define ldmxcsr(r) __asm __volatile("ldmxcsr %0" : : "m" (r))
-#define start_emulating() __asm("smsw %%ax; orb %0,%%al; lmsw %%ax" \
- : : "n" (CR0_TS) : "ax")
-#define stop_emulating() __asm("clts")
+#define start_emulating() __asm __volatile( \
+ "smsw %%ax; orb %0,%%al; lmsw %%ax" \
+ : : "n" (CR0_TS) : "ax")
+#define stop_emulating() __asm __volatile("clts")
#else /* !(__GNUCLIKE_ASM && !lint) */
OpenPOWER on IntegriCloud