[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] boot windows server 2003:emulate stf.spill instruction



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID be11edf8964e89a39d4fa98890a936503a034d5c
# Parent  f67d23e37921341a44679ec3e46666cb9d612949
[IA64] boot windows server 2003:emulate stf.spill instruction

Windows use stf.spill [r3]=f2 to access mmio address space

Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>
---
 xen/arch/ia64/vmx/mmio.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+)

diff -r f67d23e37921 -r be11edf8964e xen/arch/ia64/vmx/mmio.c
--- a/xen/arch/ia64/vmx/mmio.c  Mon Jul 31 10:09:15 2006 -0600
+++ b/xen/arch/ia64/vmx/mmio.c  Mon Jul 31 10:14:31 2006 -0600
@@ -494,6 +494,21 @@ void emulate_io_inst(VCPU *vcpu, u64 pad
             vcpu_set_gr(vcpu,inst.M3.r3,temp,0);
 
         }
+    }
+    // Floating-point spill
+    else if (inst.M9.major == 6 && inst.M9.x6 == 0x3B &&
+             inst.M9.m == 0 && inst.M9.x == 0) {
+        struct ia64_fpreg v;
+
+        inst_type = SL_FLOATING;
+        dir = IOREQ_WRITE;
+        vcpu_get_fpreg(vcpu, inst.M9.f2, &v);
+        /* Write high word.
+           FIXME: this is a kludge!  */
+        v.u.bits[1] &= 0x3ffff;
+        mmio_access(vcpu, padr + 8, &v.u.bits[1], 8, ma, IOREQ_WRITE);
+        data = v.u.bits[0];
+        size = 3;
     }
     // Floating-point spill + Imm update
     else if(inst.M10.major==7&&inst.M10.x6==0x3B){

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.