ia64/xen-unstable

changeset 10870:be11edf8964e

[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@intel.com>
author awilliam@xenbuild.aw
date Mon Jul 31 10:14:31 2006 -0600 (2006-07-31)
parents f67d23e37921
children 87247ceb0acd
files xen/arch/ia64/vmx/mmio.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/mmio.c	Mon Jul 31 10:09:15 2006 -0600
     1.2 +++ b/xen/arch/ia64/vmx/mmio.c	Mon Jul 31 10:14:31 2006 -0600
     1.3 @@ -495,6 +495,21 @@ void emulate_io_inst(VCPU *vcpu, u64 pad
     1.4  
     1.5          }
     1.6      }
     1.7 +    // Floating-point spill
     1.8 +    else if (inst.M9.major == 6 && inst.M9.x6 == 0x3B &&
     1.9 +             inst.M9.m == 0 && inst.M9.x == 0) {
    1.10 +        struct ia64_fpreg v;
    1.11 +
    1.12 +        inst_type = SL_FLOATING;
    1.13 +        dir = IOREQ_WRITE;
    1.14 +        vcpu_get_fpreg(vcpu, inst.M9.f2, &v);
    1.15 +        /* Write high word.
    1.16 +           FIXME: this is a kludge!  */
    1.17 +        v.u.bits[1] &= 0x3ffff;
    1.18 +        mmio_access(vcpu, padr + 8, &v.u.bits[1], 8, ma, IOREQ_WRITE);
    1.19 +        data = v.u.bits[0];
    1.20 +        size = 3;
    1.21 +    }
    1.22      // Floating-point spill + Imm update
    1.23      else if(inst.M10.major==7&&inst.M10.x6==0x3B){
    1.24          struct ia64_fpreg v;