summaryrefslogtreecommitdiffstats
path: root/sys/i386/include
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2012-07-09 20:55:39 +0000
committerjhb <jhb@FreeBSD.org>2012-07-09 20:55:39 +0000
commit501beca671a3ea893482559b54b30ab166ad3d75 (patch)
treedc9080f4848fba24288806991434be319bb1d32a /sys/i386/include
parentfb20c6fee6baf0d773d72b8e0a63489e2e7cb188 (diff)
downloadFreeBSD-src-501beca671a3ea893482559b54b30ab166ad3d75.zip
FreeBSD-src-501beca671a3ea893482559b54b30ab166ad3d75.tar.gz
Add a clts() wrapper around the 'clts' instruction to <machine/cpufunc.h>
on x86 and use that to implement stop_emulating() in the fpu/npx code. Reimplement start_emulating() in the non-XEN case by using load_cr0() and rcr0() instead of the 'lmsw' and 'smsw' instructions. Intel explicitly discourages the use of 'lmsw' and 'smsw' on 80386 and later processors in the description of these instructions in Volume 2 of the ADM. Reviewed by: kib MFC after: 1 month
Diffstat (limited to 'sys/i386/include')
-rw-r--r--sys/i386/include/cpufunc.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/i386/include/cpufunc.h b/sys/i386/include/cpufunc.h
index 7116f76..62d268d 100644
--- a/sys/i386/include/cpufunc.h
+++ b/sys/i386/include/cpufunc.h
@@ -97,6 +97,13 @@ clflush(u_long addr)
}
static __inline void
+clts(void)
+{
+
+ __asm __volatile("clts");
+}
+
+static __inline void
disable_intr(void)
{
#ifdef XEN
@@ -688,6 +695,9 @@ intr_restore(register_t eflags)
int breakpoint(void);
u_int bsfl(u_int mask);
u_int bsrl(u_int mask);
+void clflush(u_long addr);
+void clts(void);
+void cpuid_count(u_int ax, u_int cx, u_int *p);
void disable_intr(void);
void do_cpuid(u_int ax, u_int *p);
void enable_intr(void);
OpenPOWER on IntegriCloud