Annotation of qemu/roms/SLOF/other-licence/x86emu/x86emu_changes.diff, revision 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.