# 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
|