lkml.org 
[lkml]   [2007]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 094/104] KVM: x86 emulator: call near
    Date
    From: Nitin A Kamble <nitin.a.kamble@intel.com>

    Implement emulation of instruction
    opcode: 0xe8
    call (near)

    Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
    Signed-off-by: Avi Kivity <avi@qumranet.com>
    ---
    drivers/kvm/x86_emulate.c | 22 +++++++++++++++++++++-
    1 files changed, 21 insertions(+), 1 deletions(-)

    diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
    index 4fc2da6..9f1772f 100644
    --- a/drivers/kvm/x86_emulate.c
    +++ b/drivers/kvm/x86_emulate.c
    @@ -150,7 +150,7 @@ static u8 opcode_table[256] = {
    /* 0xE0 - 0xE7 */
    0, 0, 0, 0, 0, 0, 0, 0,
    /* 0xE8 - 0xEF */
    - 0, SrcImm|ImplicitOps, 0, SrcImmByte|ImplicitOps, 0, 0, 0, 0,
    + ImplicitOps, SrcImm|ImplicitOps, 0, SrcImmByte|ImplicitOps, 0, 0, 0, 0,
    /* 0xF0 - 0xF7 */
    0, 0, 0, 0,
    ImplicitOps, 0,
    @@ -1033,6 +1033,26 @@ push:
    case 0xd2 ... 0xd3: /* Grp2 */
    src.val = _regs[VCPU_REGS_RCX];
    goto grp2;
    + case 0xe8: /* call (near) */ {
    + long int rel;
    + switch (op_bytes) {
    + case 2:
    + rel = insn_fetch(s16, 2, _eip);
    + break;
    + case 4:
    + rel = insn_fetch(s32, 4, _eip);
    + break;
    + case 8:
    + rel = insn_fetch(s64, 8, _eip);
    + break;
    + default:
    + DPRINTF("Call: Invalid op_bytes\n");
    + goto cannot_emulate;
    + }
    + src.val = (unsigned long) _eip;
    + JMP_REL(rel);
    + goto push;
    + }
    case 0xe9: /* jmp rel */
    case 0xeb: /* jmp rel short */
    JMP_REL(src.val);
    --
    1.5.3
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-09-17 10:57    [W:0.035 / U:0.444 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site