summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorneel <neel@FreeBSD.org>2013-01-04 02:49:12 +0000
committerneel <neel@FreeBSD.org>2013-01-04 02:49:12 +0000
commitfec8c768eb1c50ae42da476ee843414b7f87b8f5 (patch)
treeb061447a334188615e2679f906f5cf4ce8b835be
parent01173b0b4a9b00c153489a51f2cba1b3d0cfc119 (diff)
downloadFreeBSD-src-fec8c768eb1c50ae42da476ee843414b7f87b8f5.zip
FreeBSD-src-fec8c768eb1c50ae42da476ee843414b7f87b8f5.tar.gz
There is no need for 'start_emulating()' and 'stop_emulating()' to be defined
in <machine/cpufunc.h> so remove them from there. Obtained from: NetApp
-rw-r--r--sys/amd64/include/cpufunc.h17
-rw-r--r--sys/amd64/vmm/vmm.c4
2 files changed, 2 insertions, 19 deletions
diff --git a/sys/amd64/include/cpufunc.h b/sys/amd64/include/cpufunc.h
index 7243173..881fcd2 100644
--- a/sys/amd64/include/cpufunc.h
+++ b/sys/amd64/include/cpufunc.h
@@ -705,23 +705,6 @@ intr_disable(void)
return (rflags);
}
-#ifndef CR0_TS
-/* Defined in <machine/specialreg.h> */
-#define CR0_TS 0x00000008
-#endif
-static __inline void
-start_emulating(void)
-{
- __asm __volatile("smsw %%ax; orb %0,%%al; lmsw %%ax"
- : : "n" (CR0_TS) : "ax");
-}
-
-static __inline void
-stop_emulating(void)
-{
- __asm __volatile("clts");
-}
-
static __inline void
intr_restore(register_t rflags)
{
diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c
index eae9ccc..a4dea79 100644
--- a/sys/amd64/vmm/vmm.c
+++ b/sys/amd64/vmm/vmm.c
@@ -145,8 +145,8 @@ static struct vmm_ops *ops;
#define VMSETCAP(vmi, vcpu, num, val) \
(ops != NULL ? (*ops->vmsetcap)(vmi, vcpu, num, val) : ENXIO)
-#define fpu_start_emulating() start_emulating()
-#define fpu_stop_emulating() stop_emulating()
+#define fpu_start_emulating() load_cr0(rcr0() | CR0_TS)
+#define fpu_stop_emulating() clts()
static MALLOC_DEFINE(M_VM, "vm", "vm");
CTASSERT(VMM_MSR_NUM <= 64); /* msr_mask can keep track of up to 64 msrs */
OpenPOWER on IntegriCloud