summaryrefslogtreecommitdiffstats
path: root/sys/amd64
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/amd64
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/amd64')
-rw-r--r--sys/amd64/include/cpufunc.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/amd64/include/cpufunc.h b/sys/amd64/include/cpufunc.h
index 9b61d37..c07e09b 100644
--- a/sys/amd64/include/cpufunc.h
+++ b/sys/amd64/include/cpufunc.h
@@ -467,16 +467,18 @@ load_es(u_short sel)
}
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));
}
#ifdef _KERNEL
OpenPOWER on IntegriCloud