Annotation of qemu/roms/SLOF/other-licence/x86emu/x86emu_changes.diff, revision 1.1.1.1

1.1       root        1: Index: debug.c
                      2: ===================================================================
                      3: RCS file: /cvs/osdf/cvs/host/other-licence/x86emu/debug.c,v
                      4: retrieving revision 1.1
                      5: retrieving revision 1.3
                      6: diff -u -u -r1.1 -r1.3
                      7: --- debug.c    7 Sep 2007 10:01:21 -0000       1.1
                      8: +++ debug.c    15 Jan 2008 13:49:25 -0000      1.3
                      9: @@ -52,7 +52,11 @@
                     10:  void X86EMU_trace_regs (void)
                     11:  {
                     12:      if (DEBUG_TRACE()) {
                     13: -        x86emu_dump_regs();
                     14: +      if (M.x86.mode & (SYSMODE_PREFIX_DATA | SYSMODE_PREFIX_ADDR)) {
                     15: +              x86emu_dump_xregs();
                     16: +      } else {
                     17: +              x86emu_dump_regs();
                     18: +      }
                     19:      }
                     20:      if (DEBUG_DECODE() && ! DEBUG_DECODE_NOPRINT()) {
                     21:          printk("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip);
                     22: @@ -185,7 +189,7 @@
                     23:      for (i=0; i< M.x86.enc_pos; i++) {
                     24:          sprintf(buf1+2*i,"%02x", fetch_data_byte_abs(s,o+i));
                     25:      }
                     26: -    printk("%-20s",buf1);
                     27: +    printk("%-20s ",buf1);
                     28:  }
                     29:  
                     30:  static void print_decoded_instruction (void)
                     31: Index: ops2.c
                     32: ===================================================================
                     33: RCS file: /cvs/osdf/cvs/host/other-licence/x86emu/ops2.c,v
                     34: retrieving revision 1.1
                     35: retrieving revision 1.3
                     36: diff -u -u -r1.1 -r1.3
                     37: --- ops2.c     7 Sep 2007 10:01:21 -0000       1.1
                     38: +++ ops2.c     20 Mar 2008 15:48:34 -0000      1.3
                     39: @@ -149,8 +149,69 @@
                     40:      target += (s16) M.x86.R_IP;
                     41:      DECODE_PRINTF2("%04x\n", target);
                     42:      TRACE_AND_STEP();
                     43: -    if (cond)
                     44: +    if (cond) {
                     45:          M.x86.R_IP = (u16)target;
                     46: +      JMP_TRACE(M.x86.saved_cs, M.x86.saved_ip, M.x86.R_CS, M.x86.R_IP, " LONG COND ");
                     47: +    }
                     48: +    DECODE_CLEAR_SEGOVR();
                     49: +    END_OF_INSTR();
                     50: +}
                     51: +
                     52: +/****************************************************************************
                     53: +REMARKS:
                     54: +Handles opcode 0x0f,0xC8-0xCF
                     55: +****************************************************************************/
                     56: +s32 x86emu_bswap(s32 reg)
                     57: +{
                     58: +   // perform the byte swap
                     59: +   s32 temp = reg;
                     60: +   reg = (temp & 0xFF000000) >> 24;
                     61: +   reg |= (temp & 0xFF0000) >> 8;
                     62: +   reg |= (temp & 0xFF00) << 8;
                     63: +   reg |= (temp & 0xFF) << 24;
                     64: +   return reg;
                     65: +}
                     66: +
                     67: +void x86emuOp2_bswap(u8 op2)
                     68: +{
                     69: +    /* byte swap 32 bit register */
                     70: +    START_OF_INSTR();
                     71: +    DECODE_PRINTF("BSWAP\t");
                     72: +    switch (op2) {
                     73: +      case 0xc8:
                     74: +        DECODE_PRINTF("EAX\n");
                     75: +        M.x86.R_EAX = x86emu_bswap(M.x86.R_EAX);
                     76: +        break;
                     77: +      case 0xc9:
                     78: +        DECODE_PRINTF("ECX\n");
                     79: +        M.x86.R_ECX = x86emu_bswap(M.x86.R_ECX);
                     80: +        break;
                     81: +      case 0xca:
                     82: +        DECODE_PRINTF("EDX\n");
                     83: +        M.x86.R_EDX = x86emu_bswap(M.x86.R_EDX);
                     84: +        break;
                     85: +      case 0xcb:
                     86: +        DECODE_PRINTF("EBX\n");
                     87: +        M.x86.R_EBX = x86emu_bswap(M.x86.R_EBX);
                     88: +        break;
                     89: +      case 0xcc:
                     90: +        DECODE_PRINTF("ESP\n");
                     91: +        M.x86.R_ESP = x86emu_bswap(M.x86.R_ESP);
                     92: +        break;
                     93: +      case 0xcd:
                     94: +        DECODE_PRINTF("EBP\n");
                     95: +        M.x86.R_EBP = x86emu_bswap(M.x86.R_EBP);
                     96: +        break;
                     97: +      case 0xce:
                     98: +        DECODE_PRINTF("ESI\n");
                     99: +        M.x86.R_ESI = x86emu_bswap(M.x86.R_ESI);
                    100: +        break;
                    101: +      case 0xcf:
                    102: +        DECODE_PRINTF("EDI\n");
                    103: +        M.x86.R_EDI = x86emu_bswap(M.x86.R_EDI);
                    104: +        break;
                    105: +    }
                    106: +    TRACE_AND_STEP();
                    107:      DECODE_CLEAR_SEGOVR();
                    108:      END_OF_INSTR();
                    109:  }
                    110: @@ -1702,14 +1763,14 @@
                    111:  /*  0xc5 */ x86emuOp2_illegal_op,
                    112:  /*  0xc6 */ x86emuOp2_illegal_op,
                    113:  /*  0xc7 */ x86emuOp2_illegal_op,
                    114: -/*  0xc8 */ x86emuOp2_illegal_op,  /* TODO: bswap */
                    115: -/*  0xc9 */ x86emuOp2_illegal_op,  /* TODO: bswap */
                    116: -/*  0xca */ x86emuOp2_illegal_op,  /* TODO: bswap */
                    117: -/*  0xcb */ x86emuOp2_illegal_op,  /* TODO: bswap */
                    118: -/*  0xcc */ x86emuOp2_illegal_op,  /* TODO: bswap */
                    119: -/*  0xcd */ x86emuOp2_illegal_op,  /* TODO: bswap */
                    120: -/*  0xce */ x86emuOp2_illegal_op,  /* TODO: bswap */
                    121: -/*  0xcf */ x86emuOp2_illegal_op,  /* TODO: bswap */
                    122: +/*  0xc8 */ x86emuOp2_bswap,
                    123: +/*  0xc9 */ x86emuOp2_bswap,
                    124: +/*  0xca */ x86emuOp2_bswap,
                    125: +/*  0xcb */ x86emuOp2_bswap,
                    126: +/*  0xcc */ x86emuOp2_bswap,
                    127: +/*  0xcd */ x86emuOp2_bswap,
                    128: +/*  0xce */ x86emuOp2_bswap,
                    129: +/*  0xcf */ x86emuOp2_bswap,
                    130:  
                    131:  /*  0xd0 */ x86emuOp2_illegal_op,
                    132:  /*  0xd1 */ x86emuOp2_illegal_op,
                    133: Index: ops.c
                    134: ===================================================================
                    135: RCS file: /cvs/osdf/cvs/host/other-licence/x86emu/ops.c,v
                    136: retrieving revision 1.1
                    137: diff -u -u -r1.1 ops.c
                    138: --- ops.c      7 Sep 2007 10:01:21 -0000       1.1
                    139: +++ ops.c      20 Mar 2008 16:52:00 -0000
                    140: @@ -1061,7 +1061,11 @@
                    141:      imm = (s8)fetch_byte_imm();
                    142:      DECODE_PRINTF2("PUSH\t%d\n", imm);
                    143:      TRACE_AND_STEP();
                    144: -    push_word(imm);
                    145: +    if (M.x86.mode & SYSMODE_PREFIX_DATA) {
                    146: +        push_long(imm);
                    147: +    } else {
                    148: +        push_word(imm);
                    149: +    }
                    150:      DECODE_CLEAR_SEGOVR();
                    151:      END_OF_INSTR();
                    152:  }
                    153: @@ -1256,8 +1260,10 @@
                    154:      target = (u16)(M.x86.R_IP + (s16)offset);
                    155:      DECODE_PRINTF2("%x\n", target);
                    156:      TRACE_AND_STEP();
                    157: -    if (cond)
                    158: +    if (cond) {
                    159:          M.x86.R_IP = target;
                    160: +      JMP_TRACE(M.x86.saved_cs, M.x86.saved_ip, M.x86.R_CS, M.x86.R_IP, " NEAR COND ");
                    161: +    }
                    162:      DECODE_CLEAR_SEGOVR();
                    163:      END_OF_INSTR();
                    164:  }
                    165: @@ -2516,9 +2522,11 @@
                    166:      count = 1;
                    167:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    168:          /* dont care whether REPE or REPNE */
                    169: -        /* move them until CX is ZERO. */
                    170: -        count = M.x86.R_CX;
                    171: +        /* move them until (E)CX is ZERO. */
                    172: +        count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
                    173:          M.x86.R_CX = 0;
                    174: +      if (M.x86.mode & SYSMODE_32BIT_REP)
                    175: +            M.x86.R_ECX = 0;
                    176:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    177:      }
                    178:      while (count--) {
                    179: @@ -2526,6 +2534,8 @@
                    180:          store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, val);
                    181:          M.x86.R_SI += inc;
                    182:          M.x86.R_DI += inc;
                    183: +        if (M.x86.intr & INTR_HALTED)
                    184: +            break;
                    185:      }
                    186:      DECODE_CLEAR_SEGOVR();
                    187:      END_OF_INSTR();
                    188: @@ -2559,9 +2569,11 @@
                    189:      count = 1;
                    190:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    191:          /* dont care whether REPE or REPNE */
                    192: -        /* move them until CX is ZERO. */
                    193: -        count = M.x86.R_CX;
                    194: +        /* move them until (E)CX is ZERO. */
                    195: +        count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
                    196:          M.x86.R_CX = 0;
                    197: +      if (M.x86.mode & SYSMODE_32BIT_REP)
                    198: +            M.x86.R_ECX = 0;
                    199:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    200:      }
                    201:      while (count--) {
                    202: @@ -2574,6 +2586,8 @@
                    203:          }
                    204:          M.x86.R_SI += inc;
                    205:          M.x86.R_DI += inc;
                    206: +        if (M.x86.intr & INTR_HALTED)
                    207: +            break;
                    208:      }
                    209:      DECODE_CLEAR_SEGOVR();
                    210:      END_OF_INSTR();
                    211: @@ -2598,16 +2612,21 @@
                    212:  
                    213:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    214:          /* REPE  */
                    215: -        /* move them until CX is ZERO. */
                    216: -        while (M.x86.R_CX != 0) {
                    217: +        /* move them until (E)CX is ZERO. */
                    218: +        while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
                    219:              val1 = fetch_data_byte(M.x86.R_SI);
                    220:              val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI);
                    221:                       cmp_byte(val1, val2);
                    222: -            M.x86.R_CX -= 1;
                    223: +            if (M.x86.mode & SYSMODE_32BIT_REP)
                    224: +                M.x86.R_ECX -= 1;
                    225: +            else
                    226: +                M.x86.R_CX -= 1;
                    227:              M.x86.R_SI += inc;
                    228:              M.x86.R_DI += inc;
                    229:              if ( (M.x86.mode & SYSMODE_PREFIX_REPE) && (ACCESS_FLAG(F_ZF) == 0) ) break;
                    230:              if ( (M.x86.mode & SYSMODE_PREFIX_REPNE) && ACCESS_FLAG(F_ZF) ) break;
                    231: +            if (M.x86.intr & INTR_HALTED)
                    232: +                break;
                    233:          }
                    234:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    235:      } else {
                    236: @@ -2644,8 +2663,8 @@
                    237:      TRACE_AND_STEP();
                    238:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    239:          /* REPE  */
                    240: -        /* move them until CX is ZERO. */
                    241: -        while (M.x86.R_CX != 0) {
                    242: +        /* move them until (E)CX is ZERO. */
                    243: +        while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
                    244:              if (M.x86.mode & SYSMODE_PREFIX_DATA) {
                    245:                  val1 = fetch_data_long(M.x86.R_SI);
                    246:                  val2 = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI);
                    247: @@ -2655,11 +2674,16 @@
                    248:                  val2 = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI);
                    249:                  cmp_word((u16)val1, (u16)val2);
                    250:              }
                    251: -            M.x86.R_CX -= 1;
                    252: +            if (M.x86.mode & SYSMODE_32BIT_REP)
                    253: +                M.x86.R_ECX -= 1;
                    254: +            else
                    255: +                M.x86.R_CX -= 1;
                    256:              M.x86.R_SI += inc;
                    257:              M.x86.R_DI += inc;
                    258:              if ( (M.x86.mode & SYSMODE_PREFIX_REPE) && ACCESS_FLAG(F_ZF) == 0 ) break;
                    259:              if ( (M.x86.mode & SYSMODE_PREFIX_REPNE) && ACCESS_FLAG(F_ZF) ) break;
                    260: +            if (M.x86.intr & INTR_HALTED)
                    261: +                break;
                    262:          }
                    263:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    264:      } else {
                    265: @@ -2741,11 +2765,16 @@
                    266:      TRACE_AND_STEP();
                    267:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    268:          /* dont care whether REPE or REPNE */
                    269: -        /* move them until CX is ZERO. */
                    270: -        while (M.x86.R_CX != 0) {
                    271: +        /* move them until (E)CX is ZERO. */
                    272: +        while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
                    273:              store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, M.x86.R_AL);
                    274: -            M.x86.R_CX -= 1;
                    275: +            if (M.x86.mode & SYSMODE_32BIT_REP)
                    276: +                M.x86.R_ECX -= 1;
                    277: +            else
                    278: +                M.x86.R_CX -= 1;
                    279:              M.x86.R_DI += inc;
                    280: +            if (M.x86.intr & INTR_HALTED)
                    281: +                break;
                    282:          }
                    283:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    284:      } else {
                    285: @@ -2783,9 +2812,11 @@
                    286:      count = 1;
                    287:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    288:          /* dont care whether REPE or REPNE */
                    289: -        /* move them until CX is ZERO. */
                    290: -        count = M.x86.R_CX;
                    291: +        /* move them until (E)CX is ZERO. */
                    292: +        count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
                    293:          M.x86.R_CX = 0;
                    294: +      if (M.x86.mode & SYSMODE_32BIT_REP)
                    295: +            M.x86.R_ECX = 0;
                    296:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    297:      }
                    298:      while (count--) {
                    299: @@ -2795,6 +2826,8 @@
                    300:              store_data_word_abs(M.x86.R_ES, M.x86.R_DI, M.x86.R_AX);
                    301:          }
                    302:          M.x86.R_DI += inc;
                    303: +        if (M.x86.intr & INTR_HALTED)
                    304: +            break;
                    305:      }
                    306:      DECODE_CLEAR_SEGOVR();
                    307:      END_OF_INSTR();
                    308: @@ -2817,11 +2850,16 @@
                    309:          inc = 1;
                    310:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    311:          /* dont care whether REPE or REPNE */
                    312: -        /* move them until CX is ZERO. */
                    313: -        while (M.x86.R_CX != 0) {
                    314: +        /* move them until (E)CX is ZERO. */
                    315: +        while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
                    316:              M.x86.R_AL = fetch_data_byte(M.x86.R_SI);
                    317: -            M.x86.R_CX -= 1;
                    318: +            if (M.x86.mode & SYSMODE_32BIT_REP)
                    319: +                M.x86.R_ECX -= 1;
                    320: +            else
                    321: +                M.x86.R_CX -= 1;
                    322:              M.x86.R_SI += inc;
                    323: +            if (M.x86.intr & INTR_HALTED)
                    324: +                break;
                    325:          }
                    326:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    327:      } else {
                    328: @@ -2859,9 +2897,11 @@
                    329:      count = 1;
                    330:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    331:          /* dont care whether REPE or REPNE */
                    332: -        /* move them until CX is ZERO. */
                    333: -        count = M.x86.R_CX;
                    334: +        /* move them until (E)CX is ZERO. */
                    335: +        count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
                    336:          M.x86.R_CX = 0;
                    337: +      if (M.x86.mode & SYSMODE_32BIT_REP)
                    338: +            M.x86.R_ECX = 0;
                    339:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    340:      }
                    341:      while (count--) {
                    342: @@ -2871,6 +2911,8 @@
                    343:              M.x86.R_AX = fetch_data_word(M.x86.R_SI);
                    344:          }
                    345:          M.x86.R_SI += inc;
                    346: +        if (M.x86.intr & INTR_HALTED)
                    347: +            break;
                    348:      }
                    349:      DECODE_CLEAR_SEGOVR();
                    350:      END_OF_INSTR();
                    351: @@ -2894,26 +2936,36 @@
                    352:          inc = 1;
                    353:      if (M.x86.mode & SYSMODE_PREFIX_REPE) {
                    354:          /* REPE  */
                    355: -        /* move them until CX is ZERO. */
                    356: -        while (M.x86.R_CX != 0) {
                    357: +        /* move them until (E)CX is ZERO. */
                    358: +        while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
                    359:              val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI);
                    360:              cmp_byte(M.x86.R_AL, val2);
                    361: -            M.x86.R_CX -= 1;
                    362: +            if (M.x86.mode & SYSMODE_32BIT_REP)
                    363: +                M.x86.R_ECX -= 1;
                    364: +            else
                    365: +                M.x86.R_CX -= 1;
                    366:              M.x86.R_DI += inc;
                    367:              if (ACCESS_FLAG(F_ZF) == 0)
                    368:                  break;
                    369: +            if (M.x86.intr & INTR_HALTED)
                    370: +                break;
                    371:          }
                    372:          M.x86.mode &= ~SYSMODE_PREFIX_REPE;
                    373:      } else if (M.x86.mode & SYSMODE_PREFIX_REPNE) {
                    374:          /* REPNE  */
                    375: -        /* move them until CX is ZERO. */
                    376: -        while (M.x86.R_CX != 0) {
                    377: +        /* move them until (E)CX is ZERO. */
                    378: +        while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
                    379:              val2 = fetch_data_byte_abs(M.x86.R_ES, M.x86.R_DI);
                    380:              cmp_byte(M.x86.R_AL, val2);
                    381: -            M.x86.R_CX -= 1;
                    382: +            if (M.x86.mode & SYSMODE_32BIT_REP)
                    383: +                M.x86.R_ECX -= 1;
                    384: +            else
                    385: +                M.x86.R_CX -= 1;
                    386:              M.x86.R_DI += inc;
                    387:              if (ACCESS_FLAG(F_ZF))
                    388:                  break;          /* zero flag set means equal */
                    389: +            if (M.x86.intr & INTR_HALTED)
                    390: +                break;
                    391:          }
                    392:          M.x86.mode &= ~SYSMODE_PREFIX_REPNE;
                    393:      } else {
                    394: @@ -2951,8 +3003,8 @@
                    395:      TRACE_AND_STEP();
                    396:      if (M.x86.mode & SYSMODE_PREFIX_REPE) {
                    397:          /* REPE  */
                    398: -        /* move them until CX is ZERO. */
                    399: -        while (M.x86.R_CX != 0) {
                    400: +        /* move them until (E)CX is ZERO. */
                    401: +        while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
                    402:              if (M.x86.mode & SYSMODE_PREFIX_DATA) {
                    403:                  val = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI);
                    404:                  cmp_long(M.x86.R_EAX, val);
                    405: @@ -2960,16 +3012,21 @@
                    406:                  val = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI);
                    407:                  cmp_word(M.x86.R_AX, (u16)val);
                    408:              }
                    409: -            M.x86.R_CX -= 1;
                    410: +            if (M.x86.mode & SYSMODE_32BIT_REP)
                    411: +                M.x86.R_ECX -= 1;
                    412: +            else
                    413: +                M.x86.R_CX -= 1;
                    414:              M.x86.R_DI += inc;
                    415:              if (ACCESS_FLAG(F_ZF) == 0)
                    416:                  break;
                    417: +            if (M.x86.intr & INTR_HALTED)
                    418: +                break;
                    419:          }
                    420:          M.x86.mode &= ~SYSMODE_PREFIX_REPE;
                    421:      } else if (M.x86.mode & SYSMODE_PREFIX_REPNE) {
                    422:          /* REPNE  */
                    423: -        /* move them until CX is ZERO. */
                    424: -        while (M.x86.R_CX != 0) {
                    425: +        /* move them until (E)CX is ZERO. */
                    426: +        while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
                    427:              if (M.x86.mode & SYSMODE_PREFIX_DATA) {
                    428:                  val = fetch_data_long_abs(M.x86.R_ES, M.x86.R_DI);
                    429:                  cmp_long(M.x86.R_EAX, val);
                    430: @@ -2977,10 +3034,15 @@
                    431:                  val = fetch_data_word_abs(M.x86.R_ES, M.x86.R_DI);
                    432:                  cmp_word(M.x86.R_AX, (u16)val);
                    433:              }
                    434: -            M.x86.R_CX -= 1;
                    435: +            if (M.x86.mode & SYSMODE_32BIT_REP)
                    436: +                M.x86.R_ECX -= 1;
                    437: +            else
                    438: +                M.x86.R_CX -= 1;
                    439:              M.x86.R_DI += inc;
                    440:              if (ACCESS_FLAG(F_ZF))
                    441:                  break;          /* zero flag set means equal */
                    442: +            if (M.x86.intr & INTR_HALTED)
                    443: +                break;
                    444:          }
                    445:          M.x86.mode &= ~SYSMODE_PREFIX_REPNE;
                    446:      } else {
                    447: @@ -3238,9 +3300,9 @@
                    448:      DECODE_PRINTF("RET\t");
                    449:      imm = fetch_word_imm();
                    450:      DECODE_PRINTF2("%x\n", imm);
                    451: -      RETURN_TRACE("RET",M.x86.saved_cs,M.x86.saved_ip);
                    452:        TRACE_AND_STEP();
                    453:      M.x86.R_IP = pop_word();
                    454: +      RETURN_TRACE(M.x86.saved_cs,M.x86.saved_ip, M.x86.R_CS, M.x86.R_IP, "NEAR");
                    455:      M.x86.R_SP += imm;
                    456:      DECODE_CLEAR_SEGOVR();
                    457:      END_OF_INSTR();
                    458: @@ -3254,9 +3316,9 @@
                    459:  {
                    460:      START_OF_INSTR();
                    461:      DECODE_PRINTF("RET\n");
                    462: -      RETURN_TRACE("RET",M.x86.saved_cs,M.x86.saved_ip);
                    463:        TRACE_AND_STEP();
                    464:      M.x86.R_IP = pop_word();
                    465: +      RETURN_TRACE(M.x86.saved_cs,M.x86.saved_ip, M.x86.R_CS, M.x86.R_IP, "NEAR");
                    466:      DECODE_CLEAR_SEGOVR();
                    467:      END_OF_INSTR();
                    468:  }
                    469: @@ -3471,10 +3533,10 @@
                    470:      DECODE_PRINTF("RETF\t");
                    471:      imm = fetch_word_imm();
                    472:      DECODE_PRINTF2("%x\n", imm);
                    473: -      RETURN_TRACE("RETF",M.x86.saved_cs,M.x86.saved_ip);
                    474:        TRACE_AND_STEP();
                    475:      M.x86.R_IP = pop_word();
                    476:      M.x86.R_CS = pop_word();
                    477: +      RETURN_TRACE(M.x86.saved_cs,M.x86.saved_ip, M.x86.R_CS, M.x86.R_IP, "FAR");
                    478:      M.x86.R_SP += imm;
                    479:      DECODE_CLEAR_SEGOVR();
                    480:      END_OF_INSTR();
                    481: @@ -3488,10 +3550,10 @@
                    482:  {
                    483:      START_OF_INSTR();
                    484:      DECODE_PRINTF("RETF\n");
                    485: -      RETURN_TRACE("RETF",M.x86.saved_cs,M.x86.saved_ip);
                    486:        TRACE_AND_STEP();
                    487:      M.x86.R_IP = pop_word();
                    488:      M.x86.R_CS = pop_word();
                    489: +      RETURN_TRACE(M.x86.saved_cs,M.x86.saved_ip, M.x86.R_CS, M.x86.R_IP, "FAR");
                    490:      DECODE_CLEAR_SEGOVR();
                    491:      END_OF_INSTR();
                    492:  }
                    493: @@ -4020,8 +4082,11 @@
                    494:      ip += (s16) M.x86.R_IP;
                    495:      DECODE_PRINTF2("%04x\n", ip);
                    496:      TRACE_AND_STEP();
                    497: -    M.x86.R_CX -= 1;
                    498: -    if (M.x86.R_CX != 0 && !ACCESS_FLAG(F_ZF))      /* CX != 0 and !ZF */
                    499: +    if (M.x86.mode & SYSMODE_PREFIX_ADDR)
                    500: +        M.x86.R_ECX -= 1;
                    501: +    else
                    502: +        M.x86.R_CX -= 1;
                    503: +    if (((M.x86.mode & SYSMODE_PREFIX_ADDR) ? M.x86.R_ECX : M.x86.R_CX) != 0 && !ACCESS_FLAG(F_ZF))      /* (E)CX != 0 and !ZF */
                    504:          M.x86.R_IP = ip;
                    505:      DECODE_CLEAR_SEGOVR();
                    506:      END_OF_INSTR();
                    507: @@ -4041,8 +4106,11 @@
                    508:      ip += (s16) M.x86.R_IP;
                    509:      DECODE_PRINTF2("%04x\n", ip);
                    510:      TRACE_AND_STEP();
                    511: -    M.x86.R_CX -= 1;
                    512: -    if (M.x86.R_CX != 0 && ACCESS_FLAG(F_ZF))       /* CX != 0 and ZF */
                    513: +    if (M.x86.mode & SYSMODE_PREFIX_ADDR)
                    514: +        M.x86.R_ECX -= 1;
                    515: +    else
                    516: +        M.x86.R_CX -= 1;
                    517: +    if (((M.x86.mode & SYSMODE_PREFIX_ADDR) ? M.x86.R_ECX : M.x86.R_CX) != 0 && ACCESS_FLAG(F_ZF))      /* (E)CX != 0 and ZF */
                    518:          M.x86.R_IP = ip;
                    519:      DECODE_CLEAR_SEGOVR();
                    520:      END_OF_INSTR();
                    521: @@ -4062,8 +4130,11 @@
                    522:      ip += (s16) M.x86.R_IP;
                    523:      DECODE_PRINTF2("%04x\n", ip);
                    524:      TRACE_AND_STEP();
                    525: -    M.x86.R_CX -= 1;
                    526: -    if (M.x86.R_CX != 0)
                    527: +    if (M.x86.mode & SYSMODE_PREFIX_ADDR)
                    528: +        M.x86.R_ECX -= 1;
                    529: +    else
                    530: +        M.x86.R_CX -= 1;
                    531: +    if (((M.x86.mode & SYSMODE_PREFIX_ADDR) ? M.x86.R_ECX : M.x86.R_CX) != 0)      /* (E)CX != 0 */
                    532:          M.x86.R_IP = ip;
                    533:      DECODE_CLEAR_SEGOVR();
                    534:      END_OF_INSTR();
                    535: @@ -4085,8 +4156,10 @@
                    536:      target = (u16)(M.x86.R_IP + offset);
                    537:      DECODE_PRINTF2("%x\n", target);
                    538:      TRACE_AND_STEP();
                    539: -    if (M.x86.R_CX == 0)
                    540: +    if (M.x86.R_CX == 0) {
                    541:          M.x86.R_IP = target;
                    542: +      JMP_TRACE(M.x86.saved_cs, M.x86.saved_ip, M.x86.R_CS, M.x86.R_IP, " CXZ ");
                    543: +    }
                    544:      DECODE_CLEAR_SEGOVR();
                    545:      END_OF_INSTR();
                    546:  }
                    547: @@ -4213,6 +4286,7 @@
                    548:      ip = (s16)fetch_word_imm();
                    549:      ip += (s16)M.x86.R_IP;
                    550:      DECODE_PRINTF2("%04x\n", ip);
                    551: +    JMP_TRACE(M.x86.saved_cs, M.x86.saved_ip, M.x86.R_CS, ip, " NEAR ");
                    552:      TRACE_AND_STEP();
                    553:      M.x86.R_IP = (u16)ip;
                    554:      DECODE_CLEAR_SEGOVR();
                    555: @@ -4233,6 +4307,7 @@
                    556:      cs = fetch_word_imm();
                    557:      DECODE_PRINTF2("%04x:", cs);
                    558:      DECODE_PRINTF2("%04x\n", ip);
                    559: +    JMP_TRACE(M.x86.saved_cs, M.x86.saved_ip, cs, ip, " FAR ");
                    560:      TRACE_AND_STEP();
                    561:      M.x86.R_IP = ip;
                    562:      M.x86.R_CS = cs;
                    563: @@ -4254,6 +4329,7 @@
                    564:      offset = (s8)fetch_byte_imm();
                    565:      target = (u16)(M.x86.R_IP + offset);
                    566:      DECODE_PRINTF2("%x\n", target);
                    567: +    JMP_TRACE(M.x86.saved_cs, M.x86.saved_ip, M.x86.R_CS, target, " BYTE ");
                    568:      TRACE_AND_STEP();
                    569:      M.x86.R_IP = target;
                    570:      DECODE_CLEAR_SEGOVR();
                    571: @@ -4357,6 +4433,8 @@
                    572:      DECODE_PRINTF("REPNE\n");
                    573:      TRACE_AND_STEP();
                    574:      M.x86.mode |= SYSMODE_PREFIX_REPNE;
                    575: +    if (M.x86.mode & SYSMODE_PREFIX_ADDR)
                    576: +        M.x86.mode |= SYSMODE_32BIT_REP;
                    577:      DECODE_CLEAR_SEGOVR();
                    578:      END_OF_INSTR();
                    579:  }
                    580: @@ -4371,6 +4449,8 @@
                    581:      DECODE_PRINTF("REPE\n");
                    582:      TRACE_AND_STEP();
                    583:      M.x86.mode |= SYSMODE_PREFIX_REPE;
                    584: +    if (M.x86.mode & SYSMODE_PREFIX_ADDR)
                    585: +        M.x86.mode |= SYSMODE_32BIT_REP;
                    586:      DECODE_CLEAR_SEGOVR();
                    587:      END_OF_INSTR();
                    588:  }
                    589: @@ -5013,12 +5093,14 @@
                    590:              break;
                    591:          case 4:         /* jmp word ptr ... */
                    592:              destval = fetch_data_word(destoffset);
                    593: +            JMP_TRACE(M.x86.saved_cs, M.x86.saved_ip, M.x86.R_CS, destval, " WORD ");
                    594:              TRACE_AND_STEP();
                    595:              M.x86.R_IP = destval;
                    596:              break;
                    597:          case 5:         /* jmp far ptr ... */
                    598:              destval = fetch_data_word(destoffset);
                    599:              destval2 = fetch_data_word(destoffset + 2);
                    600: +            JMP_TRACE(M.x86.saved_cs, M.x86.saved_ip, destval2, destval, " FAR ");
                    601:              TRACE_AND_STEP();
                    602:              M.x86.R_IP = destval;
                    603:              M.x86.R_CS = destval2;
                    604: Index: prim_ops.c
                    605: ===================================================================
                    606: RCS file: /cvs/osdf/cvs/host/other-licence/x86emu/prim_ops.c,v
                    607: retrieving revision 1.1
                    608: retrieving revision 1.3
                    609: diff -u -u -r1.1 -r1.3
                    610: --- prim_ops.c 7 Sep 2007 10:01:21 -0000       1.1
                    611: +++ prim_ops.c 16 Jan 2008 14:18:15 -0000      1.3
                    612: @@ -1921,7 +1921,7 @@
                    613:  void imul_long_direct(u32 *res_lo, u32* res_hi,u32 d, u32 s)
                    614:  {
                    615:  #ifdef  __HAS_LONG_LONG__
                    616: -    s64 res = (s64)d * (s64)s;
                    617: +    s64 res = (s64)(s32)d * (s64)(s32)s;
                    618:  
                    619:      *res_lo = (u32)res;
                    620:      *res_hi = (u32)(res >> 32);
                    621: @@ -2013,7 +2013,7 @@
                    622:  void mul_long(u32 s)
                    623:  {
                    624:  #ifdef  __HAS_LONG_LONG__
                    625: -    u64 res = (u32)M.x86.R_EAX * (u32)s;
                    626: +    u64 res = (u64)M.x86.R_EAX * s;
                    627:  
                    628:      M.x86.R_EAX = (u32)res;
                    629:      M.x86.R_EDX = (u32)(res >> 32);
                    630: @@ -2312,16 +2312,15 @@
                    631:      }
                    632:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    633:          /* dont care whether REPE or REPNE */
                    634: -        /* in until CX is ZERO. */
                    635: -        u32 count = ((M.x86.mode & SYSMODE_PREFIX_DATA) ?
                    636: +        /* in until (E)CX is ZERO. */
                    637: +        u32 count = ((M.x86.mode & SYSMODE_32BIT_REP) ?
                    638:                       M.x86.R_ECX : M.x86.R_CX);
                    639: -
                    640:          while (count--) {
                    641:            single_in(size);
                    642:            M.x86.R_DI += inc;
                    643:            }
                    644:          M.x86.R_CX = 0;
                    645: -        if (M.x86.mode & SYSMODE_PREFIX_DATA) {
                    646: +        if (M.x86.mode & SYSMODE_32BIT_REP) {
                    647:              M.x86.R_ECX = 0;
                    648:          }
                    649:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    650: @@ -2355,15 +2354,15 @@
                    651:      }
                    652:      if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
                    653:          /* dont care whether REPE or REPNE */
                    654: -        /* out until CX is ZERO. */
                    655: -        u32 count = ((M.x86.mode & SYSMODE_PREFIX_DATA) ?
                    656: +        /* out until (E)CX is ZERO. */
                    657: +        u32 count = ((M.x86.mode & SYSMODE_32BIT_REP) ?
                    658:                       M.x86.R_ECX : M.x86.R_CX);
                    659:          while (count--) {
                    660:            single_out(size);
                    661:            M.x86.R_SI += inc;
                    662:            }
                    663:          M.x86.R_CX = 0;
                    664: -        if (M.x86.mode & SYSMODE_PREFIX_DATA) {
                    665: +        if (M.x86.mode & SYSMODE_32BIT_REP) {
                    666:              M.x86.R_ECX = 0;
                    667:          }
                    668:          M.x86.mode &= ~(SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE);
                    669: Index: sys.c
                    670: ===================================================================
                    671: RCS file: /cvs/osdf/cvs/host/other-licence/x86emu/sys.c,v
                    672: retrieving revision 1.1
                    673: retrieving revision 1.2
                    674: diff -u -u -r1.1 -r1.2
                    675: --- sys.c      7 Sep 2007 10:01:21 -0000       1.1
                    676: +++ sys.c      7 Sep 2007 10:03:13 -0000       1.2
                    677: @@ -45,11 +45,6 @@
                    678:  #include <x86emu/regs.h>
                    679:  #include "debug.h"
                    680:  #include "prim_ops.h"
                    681: -#ifdef LINUXBIOS_VERSION
                    682: -#include "io.h"
                    683: -#else
                    684: -#include <sys/io.h>
                    685: -#endif
                    686:  
                    687:  #ifdef IN_MODULE
                    688:  #include "xf86_ansic.h"
                    689: @@ -220,7 +215,7 @@
                    690:  {
                    691:        DB(if (DEBUG_IO_TRACE())
                    692:                printk("inb %#04x \n", addr);)
                    693: -      return inb(addr);
                    694: +      return 0;
                    695:  }
                    696:  
                    697:  /****************************************************************************
                    698: @@ -235,7 +230,7 @@
                    699:  {
                    700:        DB(if (DEBUG_IO_TRACE())
                    701:                printk("inw %#04x \n", addr);)
                    702: -      return inw(addr);
                    703: +      return 0;
                    704:  }
                    705:  
                    706:  /****************************************************************************
                    707: @@ -250,7 +245,7 @@
                    708:  {
                    709:        DB(if (DEBUG_IO_TRACE())
                    710:                printk("inl %#04x \n", addr);)
                    711: -      return inl(addr);
                    712: +      return 0;
                    713:  }
                    714:  
                    715:  /****************************************************************************
                    716: @@ -264,7 +259,6 @@
                    717:  {
                    718:        DB(if (DEBUG_IO_TRACE())
                    719:                printk("outb %#02x -> %#04x \n", val, addr);)
                    720: -      outb(val, addr);
                    721:        return;
                    722:  }
                    723:  
                    724: @@ -279,7 +273,6 @@
                    725:  {
                    726:        DB(if (DEBUG_IO_TRACE())
                    727:                printk("outw %#04x -> %#04x \n", val, addr);)
                    728: -      outw(val, addr);
                    729:        return;
                    730:  }
                    731:  
                    732: @@ -295,7 +288,6 @@
                    733:        DB(if (DEBUG_IO_TRACE())
                    734:               printk("outl %#08x -> %#04x \n", val, addr);)
                    735:  
                    736: -      outl(val, addr);
                    737:        return;
                    738:  }
                    739:  
                    740: @@ -405,6 +397,6 @@
                    741:  
                    742:  void X86EMU_setMemBase(void *base, size_t size)
                    743:  {
                    744: -      M.mem_base = (int) base;
                    745: +      M.mem_base = (unsigned long) base;
                    746:        M.mem_size = size;
                    747:  }
                    748: Index: include/x86emu/debug.h
                    749: ===================================================================
                    750: RCS file: /cvs/osdf/cvs/host/other-licence/x86emu/include/x86emu/debug.h,v
                    751: retrieving revision 1.1
                    752: retrieving revision 1.4
                    753: diff -u -u -r1.1 -r1.4
                    754: --- include/x86emu/debug.h     7 Sep 2007 10:01:21 -0000       1.1
                    755: +++ include/x86emu/debug.h     20 Mar 2008 15:25:27 -0000      1.4
                    756: @@ -40,8 +40,6 @@
                    757:  #ifndef __X86EMU_DEBUG_H
                    758:  #define __X86EMU_DEBUG_H
                    759:  
                    760: -//#define DEBUG 0
                    761: -#undef DEBUG
                    762:  /*---------------------- Macros and type definitions ----------------------*/
                    763:  
                    764:  /* checks to be enabled for "runtime" */
                    765: @@ -78,6 +76,8 @@
                    766:  # define DEBUG_SYSINT()               (M.x86.debug & DEBUG_SYSINT_F)
                    767:  # define DEBUG_TRACECALL()            (M.x86.debug & DEBUG_TRACECALL_F)
                    768:  # define DEBUG_TRACECALLREGS()        (M.x86.debug & DEBUG_TRACECALL_REGS_F)
                    769: +# define DEBUG_TRACEJMP()       (M.x86.debug & DEBUG_TRACEJMP_F)
                    770: +# define DEBUG_TRACEJMPREGS()   (M.x86.debug & DEBUG_TRACEJMP_REGS_F)
                    771:  # define DEBUG_SYS()                  (M.x86.debug & DEBUG_SYS_F)
                    772:  # define DEBUG_MEM_TRACE()            (M.x86.debug & DEBUG_MEM_TRACE_F)
                    773:  # define DEBUG_IO_TRACE()             (M.x86.debug & DEBUG_IO_TRACE_F)
                    774: @@ -96,6 +96,8 @@
                    775:  # define DEBUG_SYSINT()               0
                    776:  # define DEBUG_TRACECALL()            0
                    777:  # define DEBUG_TRACECALLREGS()        0
                    778: +# define DEBUG_TRACEJMP()       0
                    779: +# define DEBUG_TRACEJMPREGS()   0
                    780:  # define DEBUG_SYS()                  0
                    781:  # define DEBUG_MEM_TRACE()            0
                    782:  # define DEBUG_IO_TRACE()             0
                    783: @@ -169,14 +171,20 @@
                    784:                x86emu_dump_regs();                                     \
                    785:        if (DEBUG_TRACECALL())                                          \
                    786:                printk("%04x:%04x: CALL %s%04x:%04x\n", u , v, s, w, x);
                    787: -# define RETURN_TRACE(n,u,v)                                    \
                    788: +# define RETURN_TRACE(u,v,w,x,s)                                    \
                    789:        if (DEBUG_TRACECALLREGS())                                                                      \
                    790:                x86emu_dump_regs();                                     \
                    791:        if (DEBUG_TRACECALL())                                          \
                    792: -              printk("%04x:%04x: %s\n",u,v,n);
                    793: +              printk("%04x:%04x: RET %s %04x:%04x\n",u,v,s,w,x);
                    794: +# define  JMP_TRACE(u,v,w,x,s)                                 \
                    795: +   if (DEBUG_TRACEJMPREGS()) \
                    796: +      x86emu_dump_regs(); \
                    797: +   if (DEBUG_TRACEJMP()) \
                    798: +      printk("%04x:%04x: JMP %s%04x:%04x\n", u , v, s, w, x);
                    799:  #else
                    800:  # define CALL_TRACE(u,v,w,x,s)
                    801: -# define RETURN_TRACE(n,u,v)
                    802: +# define RETURN_TRACE(u,v,w,x,s)
                    803: +# define  JMP_TRACE(u,v,w,x,s)
                    804:  #endif
                    805:  
                    806:  #ifdef DEBUG
                    807: Index: include/x86emu/regs.h
                    808: ===================================================================
                    809: RCS file: /cvs/osdf/cvs/host/other-licence/x86emu/include/x86emu/regs.h,v
                    810: retrieving revision 1.1
                    811: retrieving revision 1.4
                    812: diff -u -u -r1.1 -r1.4
                    813: --- include/x86emu/regs.h      7 Sep 2007 10:01:21 -0000       1.1
                    814: +++ include/x86emu/regs.h      15 Jan 2008 13:46:40 -0000      1.4
                    815: @@ -231,6 +231,9 @@
                    816:  #define SYSMODE_PREFIX_REPNE    0x00000100
                    817:  #define SYSMODE_PREFIX_DATA     0x00000200
                    818:  #define SYSMODE_PREFIX_ADDR     0x00000400
                    819: +//phueper: for REP(E|NE) Instructions, we need to decide wether it should be using
                    820: +//the 32bit ECX register as or the 16bit CX register as count register
                    821: +#define SYSMODE_32BIT_REP       0x00000800
                    822:  #define SYSMODE_INTR_PENDING    0x10000000
                    823:  #define SYSMODE_EXTRN_INTR      0x20000000
                    824:  #define SYSMODE_HALTED          0x40000000
                    825: @@ -250,7 +253,8 @@
                    826:                                                 SYSMODE_SEGOVR_GS      | \
                    827:                                                 SYSMODE_SEGOVR_SS      | \
                    828:                                                 SYSMODE_PREFIX_DATA    | \
                    829: -                                               SYSMODE_PREFIX_ADDR)
                    830: +                                               SYSMODE_PREFIX_ADDR    | \
                    831: +                                               SYSMODE_32BIT_REP)
                    832:  
                    833:  #define  INTR_SYNCH           0x1
                    834:  #define  INTR_ASYNCH          0x2
                    835: @@ -274,9 +278,9 @@
                    836:       */
                    837:      u32                         mode;
                    838:      volatile int                intr;   /* mask of pending interrupts */
                    839: -      int                         debug;
                    840: +    volatile int                         debug;
                    841:  #ifdef DEBUG
                    842: -      int                         check;
                    843: +    int                         check;
                    844:      u16                         saved_ip;
                    845:      u16                         saved_cs;
                    846:      int                         enc_pos;
                    847: @@ -366,7 +370,7 @@
                    848:  
                    849:  /* Function to log information at runtime */
                    850:  
                    851: -//void        printk(const char *fmt, ...);
                    852: +void  printk(const char *fmt, ...);
                    853:  
                    854:  #ifdef  __cplusplus
                    855:  }                                             /* End of "C" linkage for C++           */
                    856: Index: include/x86emu/x86emu.h
                    857: ===================================================================
                    858: RCS file: /cvs/osdf/cvs/host/other-licence/x86emu/include/x86emu/x86emu.h,v
                    859: retrieving revision 1.1
                    860: retrieving revision 1.3
                    861: diff -u -u -r1.1 -r1.3
                    862: --- include/x86emu/x86emu.h    7 Sep 2007 10:01:21 -0000       1.1
                    863: +++ include/x86emu/x86emu.h    19 Oct 2007 08:42:15 -0000      1.3
                    864: @@ -42,14 +42,6 @@
                    865:  #ifndef __X86EMU_X86EMU_H
                    866:  #define __X86EMU_X86EMU_H
                    867:  
                    868: -/* FIXME: undefine printk for the moment */
                    869: -#ifdef LINUXBIOS_VERSION
                    870: -#include <console.h>
                    871: -#define printk(x...) printk(BIOS_DEBUG, x)
                    872: -#else
                    873: -#define printk printf
                    874: -#endif 
                    875: -
                    876:  #ifdef SCITECH
                    877:  #include "scitech.h"
                    878:  #define       X86API  _ASMAPI
                    879: @@ -189,6 +181,8 @@
                    880:  #define DEBUG_TRACECALL_REGS_F  0x004000
                    881:  #define DEBUG_DECODE_NOPRINT_F  0x008000 
                    882:  #define DEBUG_SAVE_IP_CS_F      0x010000
                    883: +#define DEBUG_TRACEJMP_F        0x020000
                    884: +#define DEBUG_TRACEJMP_REGS_F   0x040000
                    885:  #define DEBUG_SYS_F             (DEBUG_SVC_F|DEBUG_FS_F|DEBUG_PROC_F)
                    886:  
                    887:  void  X86EMU_trace_regs(void);
                    888: @@ -200,5 +194,4 @@
                    889:  #ifdef  __cplusplus
                    890:  }                                             /* End of "C" linkage for C++           */
                    891:  #endif
                    892: -
                    893:  #endif /* __X86EMU_X86EMU_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.