lkml.org 
[lkml]   [2007]   [Dec]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 52/55] KVM: x86 emulator: modify 'lods', and 'stos' not to depend on CR2
    Date
    From: Sheng Yang <sheng.yang@intel.com>

    The current 'lods' and 'stos' is depending on incoming CR2 rather than decode
    memory address from registers.

    Signed-off-by: Sheng Yang <sheng.yang@intel.com>
    Signed-off-by: Avi Kivity <avi@qumranet.com>
    ---
    drivers/kvm/x86_emulate.c | 14 ++++++++++----
    1 files changed, 10 insertions(+), 4 deletions(-)

    diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
    index e697947..8e2162f 100644
    --- a/drivers/kvm/x86_emulate.c
    +++ b/drivers/kvm/x86_emulate.c
    @@ -1528,7 +1528,9 @@ special_insn:
    case 0xaa ... 0xab: /* stos */
    c->dst.type = OP_MEM;
    c->dst.bytes = (c->d & ByteOp) ? 1 : c->op_bytes;
    - c->dst.ptr = (unsigned long *)cr2;
    + c->dst.ptr = (unsigned long *)register_address(
    + ctxt->es_base,
    + c->regs[VCPU_REGS_RDI]);
    c->dst.val = c->regs[VCPU_REGS_RAX];
    register_address_increment(c->regs[VCPU_REGS_RDI],
    (ctxt->eflags & EFLG_DF) ? -c->dst.bytes
    @@ -1538,9 +1540,13 @@ special_insn:
    c->dst.type = OP_REG;
    c->dst.bytes = (c->d & ByteOp) ? 1 : c->op_bytes;
    c->dst.ptr = (unsigned long *)&c->regs[VCPU_REGS_RAX];
    - if ((rc = ops->read_emulated(cr2, &c->dst.val,
    - c->dst.bytes,
    - ctxt->vcpu)) != 0)
    + if ((rc = ops->read_emulated(register_address(
    + c->override_base ? *c->override_base :
    + ctxt->ds_base,
    + c->regs[VCPU_REGS_RSI]),
    + &c->dst.val,
    + c->dst.bytes,
    + ctxt->vcpu)) != 0)
    goto done;
    register_address_increment(c->regs[VCPU_REGS_RSI],
    (ctxt->eflags & EFLG_DF) ? -c->dst.bytes
    --
    1.5.3.7


    \
     
     \ /
      Last update: 2007-12-26 12:25    [W:0.031 / U:61.940 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site