summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2011-07-05 18:42:10 +0000
committerjkim <jkim@FreeBSD.org>2011-07-05 18:42:10 +0000
commit52539f62b4594a26512f2452204d41d1b277552d (patch)
tree7923bfba8a42e986b0579c1aa267e7fcba336126 /sys/i386
parent97f9011cd81d27c563028b9f2fe7df9169adde14 (diff)
downloadFreeBSD-src-52539f62b4594a26512f2452204d41d1b277552d.zip
FreeBSD-src-52539f62b4594a26512f2452204d41d1b277552d.tar.gz
Correct cpu_monitor() and cpu_mwait() for amd64. These instructions take
%rcx as "extensions" in long mode. If any unused bit is set in %rcx, these instructions cause general protection fault. Fix style nits and synchronize i386 with amd64.
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/include/cpufunc.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/i386/include/cpufunc.h b/sys/i386/include/cpufunc.h
index d6ec534..7116f76 100644
--- a/sys/i386/include/cpufunc.h
+++ b/sys/i386/include/cpufunc.h
@@ -133,16 +133,18 @@ enable_intr(void)
}
static __inline void
-cpu_monitor(const void *addr, int extensions, int hints)
+cpu_monitor(const void *addr, u_long extensions, u_int hints)
{
- __asm __volatile("monitor;"
- : :"a" (addr), "c" (extensions), "d"(hints));
+
+ __asm __volatile("monitor"
+ : : "a" (addr), "c" (extensions), "d" (hints));
}
static __inline void
-cpu_mwait(int extensions, int hints)
+cpu_mwait(u_long extensions, u_int hints)
{
- __asm __volatile("mwait;" : :"a" (hints), "c" (extensions));
+
+ __asm __volatile("mwait" : : "a" (hints), "c" (extensions));
}
static __inline void
OpenPOWER on IntegriCloud