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 057/104] KVM: x86 emulator: implement 'jmp rel' instruction (opcode 0xe9)
    Date
    From: Nitin A Kamble <nitin.a.kamble@intel.com>

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

    diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
    index 2b94d16..fa7aa27 100644
    --- a/drivers/kvm/x86_emulate.c
    +++ b/drivers/kvm/x86_emulate.c
    @@ -145,8 +145,10 @@ static u8 opcode_table[256] = {
    0, 0, 0, 0,
    /* 0xD8 - 0xDF */
    0, 0, 0, 0, 0, 0, 0, 0,
    - /* 0xE0 - 0xEF */
    - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    + /* 0xE0 - 0xE7 */
    + 0, 0, 0, 0, 0, 0, 0, 0,
    + /* 0xE8 - 0xEF */
    + 0, SrcImm|ImplicitOps, 0, 0, 0, 0, 0, 0,
    /* 0xF0 - 0xF7 */
    0, 0, 0, 0,
    ImplicitOps, 0,
    @@ -447,6 +449,12 @@ struct operand {
    (((reg) + _inc) & ((1UL << (ad_bytes << 3)) - 1)); \
    } while (0)

    +#define JMP_REL(rel) \
    + do { \
    + _eip += (int)(rel); \
    + _eip = ((op_bytes == 2) ? (uint16_t)_eip : (uint32_t)_eip); \
    + } while (0)
    +
    /*
    * Given the 'reg' portion of a ModRM byte, and a register block, return a
    * pointer into the block that addresses the relevant register.
    @@ -1023,6 +1031,10 @@ done_prefixes:
    case 0xd2 ... 0xd3: /* Grp2 */
    src.val = _regs[VCPU_REGS_RCX];
    goto grp2;
    + case 0xe9: /* jmp rel */
    + JMP_REL(src.val);
    + no_wb = 1; /* Disable writeback. */
    + break;
    case 0xf6 ... 0xf7: /* Grp3 */
    switch (modrm_reg) {
    case 0 ... 1: /* test */
    --
    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 11:03    [W:3.006 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site