diff options
author | jkim <jkim@FreeBSD.org> | 2011-07-05 18:42:10 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2011-07-05 18:42:10 +0000 |
commit | 52539f62b4594a26512f2452204d41d1b277552d (patch) | |
tree | 7923bfba8a42e986b0579c1aa267e7fcba336126 /sys/i386/include/cpufunc.h | |
parent | 97f9011cd81d27c563028b9f2fe7df9169adde14 (diff) | |
download | FreeBSD-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/include/cpufunc.h')
-rw-r--r-- | sys/i386/include/cpufunc.h | 12 |
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 |