svn commit: r223796 - in head/sys: amd64/include i386/include
Jung-uk Kim
jkim at FreeBSD.org
Tue Jul 5 18:42:10 UTC 2011
Author: jkim
Date: Tue Jul 5 18:42:10 2011
New Revision: 223796
URL: http://svn.freebsd.org/changeset/base/223796
Log:
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.
Modified:
head/sys/amd64/include/cpufunc.h
head/sys/i386/include/cpufunc.h
Modified: head/sys/amd64/include/cpufunc.h
==============================================================================
--- head/sys/amd64/include/cpufunc.h Tue Jul 5 18:40:37 2011 (r223795)
+++ head/sys/amd64/include/cpufunc.h Tue Jul 5 18:42:10 2011 (r223796)
@@ -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
Modified: head/sys/i386/include/cpufunc.h
==============================================================================
--- head/sys/i386/include/cpufunc.h Tue Jul 5 18:40:37 2011 (r223795)
+++ head/sys/i386/include/cpufunc.h Tue Jul 5 18:42:10 2011 (r223796)
@@ -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
More information about the svn-src-head
mailing list