Revision 3a1d9b8b target-i386/translate.c

b/target-i386/translate.c
2554 2554
    case 0x8d: /* lea */
2555 2555
        ot = dflag ? OT_LONG : OT_WORD;
2556 2556
        modrm = ldub_code(s->pc++);
2557
        mod = (modrm >> 6) & 3;
2558
        if (mod == 3)
2559
            goto illegal_op;
2557 2560
        reg = (modrm >> 3) & 7;
2558 2561
        /* we must ensure that no segment is added */
2559 2562
        s->override = -1;
......
2815 2818
        mod = (modrm >> 6) & 3;
2816 2819
        rm = modrm & 7;
2817 2820
        op = ((b & 7) << 3) | ((modrm >> 3) & 7);
2818

  
2819 2821
        if (mod != 3) {
2820 2822
            /* memory op */
2821 2823
            gen_lea_modrm(s, modrm, &reg_addr, &offset_addr);
......
4479 4481
    pc_start = (uint8_t *)tb->pc;
4480 4482
    cs_base = (uint8_t *)tb->cs_base;
4481 4483
    flags = tb->flags;
4482
       
4484

  
4483 4485
    dc->pe = (flags >> HF_PE_SHIFT) & 1;
4484 4486
    dc->code32 = (flags >> HF_CS32_SHIFT) & 1;
4485 4487
    dc->ss32 = (flags >> HF_SS32_SHIFT) & 1;

Also available in: Unified diff