From 231cd533c61b0caf184c1ebcc3bc216264422ae7 Mon Sep 17 00:00:00 2001 From: Stanislav Shwartsman Date: Mon, 16 Aug 2004 20:18:01 +0000 Subject: [PATCH] 1. Update changes 2. Fix lazy_flags duplicate instruction patterns --- bochs/CHANGES | 30 ++++++++++++- bochs/cpu/arith16.cc | 12 ++--- bochs/cpu/arith32.cc | 12 ++--- bochs/cpu/arith64.cc | 12 ++--- bochs/cpu/arith8.cc | 12 ++--- bochs/cpu/lazy_flags.cc | 98 +++++++++++------------------------------ bochs/cpu/lazy_flags.h | 36 ++++++--------- bochs/cpu/string.cc | 46 +++++++++---------- 8 files changed, 114 insertions(+), 144 deletions(-) diff --git a/bochs/CHANGES b/bochs/CHANGES index f721d07a1..e36813bb9 100644 --- a/bochs/CHANGES +++ b/bochs/CHANGES @@ -36,7 +36,6 @@ Changes to next release: ! Unmasked underflow/overflow should correct the result by magic number for all operations, including float32 and float64. - ! improve performance of transcendential instructions. - Disassembler - fixed MOV opcode 0x88, had exchanged the operands (h.johansson) @@ -111,6 +110,35 @@ Changes to next release: [869822] a real SVGA implementation by m_suzu - these S.F. bugs were closed + #522111 Host os SIGILL, booting grub from hd + #1005052 DMA Controller Model Problem + #552939 Bochs window doesn't resize when win311 + #989478 I-Cache and undefined Instructions + #661008 make install fails + #845691 Workaround: Ne2k and Windows 2000 not working + #923662 BIOS diskette motor countdown byte broken + #848141 VGA problems running Scitech Display Driver on Win95 + #799370 Problem booting ReactOS 0.1.3 + #670143 No rule to make config.h + #653444 with vbe/lgpl bios, scrn updates broken + #655696 quickstart broken? + #659350 FDC + #620853 Ne2000 ethernet card *NOT* supported + #607611 Numlock + #543476 Sound card does not work in Windows 95 + #529554 unsupported VBE features DISPI update + #487316 Access violation on Win32 + #576253 RTC too fast + #489748 io read from address 000003c0, len=2 + #656861 Gentoo Linux panics in VGA code + #787184 Video BIOS's don't checksum correctly + #988529 textconfig [Save options to] function output obsolete option + #987293 Cannot accesss header/toolbar + #988246 floppy read error + #933199 speedup Bochs compilation 4x -> suggestion + #979106 Incorrect disassembly table entry + #658374 FPU incorrect emulation + #706933 Problem with the F12-Key #477043 math_abort panic in RH 7.1 #634371 Floating point problems #681138 // is not valid in C diff --git a/bochs/cpu/arith16.cc b/bochs/cpu/arith16.cc index 87ddc000c..38bb076f1 100644 --- a/bochs/cpu/arith16.cc +++ b/bochs/cpu/arith16.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: arith16.cc,v 1.34 2004-08-14 20:44:48 sshwarts Exp $ +// $Id: arith16.cc,v 1.35 2004-08-16 20:18:01 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -395,7 +395,7 @@ BX_CPU_C::CMP_EwGw(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit16u diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMP16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); #endif } @@ -420,7 +420,7 @@ BX_CPU_C::CMP_GwEw(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit16u diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMP16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); #endif } @@ -439,7 +439,7 @@ BX_CPU_C::CMP_AXIw(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit16u diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMP16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); #endif } @@ -626,7 +626,7 @@ BX_CPU_C::CMP_EwIw(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit16u diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMP16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); #endif } @@ -718,7 +718,7 @@ BX_CPU_C::CMPXCHG_EwGw(bxInstruction_c *i) diff_16 = AX - op1_16; - SET_FLAGS_OSZAPC_16(AX, op1_16, diff_16, BX_INSTR_CMP16); + SET_FLAGS_OSZAPC_16(AX, op1_16, diff_16, BX_INSTR_COMPARE16); if (diff_16 == 0) { // if accumulator == dest // ZF = 1 diff --git a/bochs/cpu/arith32.cc b/bochs/cpu/arith32.cc index 57eadbdc5..7472298d0 100644 --- a/bochs/cpu/arith32.cc +++ b/bochs/cpu/arith32.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: arith32.cc,v 1.37 2004-08-14 20:44:48 sshwarts Exp $ +// $Id: arith32.cc,v 1.38 2004-08-16 20:18:01 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -393,7 +393,7 @@ BX_CPU_C::CMP_EdGd(bxInstruction_c *i) #else Bit32u diff_32; diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMP32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); #endif } @@ -419,7 +419,7 @@ BX_CPU_C::CMP_GdEd(bxInstruction_c *i) #else Bit32u diff_32; diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMP32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); #endif } @@ -439,7 +439,7 @@ BX_CPU_C::CMP_EAXId(bxInstruction_c *i) #else Bit32u diff_32; diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMP32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); #endif } @@ -640,7 +640,7 @@ BX_CPU_C::CMP_EdId(bxInstruction_c *i) #else Bit32u diff_32; diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMP32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); #endif } @@ -719,7 +719,7 @@ BX_CPU_C::CMPXCHG_EdGd(bxInstruction_c *i) diff_32 = EAX - op1_32; - SET_FLAGS_OSZAPC_32(EAX, op1_32, diff_32, BX_INSTR_CMP32); + SET_FLAGS_OSZAPC_32(EAX, op1_32, diff_32, BX_INSTR_COMPARE32); if (diff_32 == 0) { // if accumulator == dest // ZF = 1 diff --git a/bochs/cpu/arith64.cc b/bochs/cpu/arith64.cc index 584364fe2..5080bac49 100644 --- a/bochs/cpu/arith64.cc +++ b/bochs/cpu/arith64.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: arith64.cc,v 1.20 2004-08-14 20:44:48 sshwarts Exp $ +// $Id: arith64.cc,v 1.21 2004-08-16 20:18:01 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -391,7 +391,7 @@ BX_CPU_C::CMP_EqGq(bxInstruction_c *i) diff_64 = op1_64 - op2_64; - SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMP64); + SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64); } void @@ -414,7 +414,7 @@ BX_CPU_C::CMP_GqEq(bxInstruction_c *i) diff_64 = op1_64 - op2_64; - SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMP64); + SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64); } void @@ -427,7 +427,7 @@ BX_CPU_C::CMP_RAXId(bxInstruction_c *i) op2_64 = (Bit32s) i->Id(); diff_64 = op1_64 - op2_64; - SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMP64); + SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64); } void @@ -603,7 +603,7 @@ BX_CPU_C::CMP_EqId(bxInstruction_c *i) diff_64 = op1_64 - op2_64; - SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMP64); + SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64); } void @@ -704,7 +704,7 @@ BX_CPU_C::CMPXCHG_EqGq(bxInstruction_c *i) diff_64 = RAX - op1_64; - SET_FLAGS_OSZAPC_64(RAX, op1_64, diff_64, BX_INSTR_CMP64); + SET_FLAGS_OSZAPC_64(RAX, op1_64, diff_64, BX_INSTR_COMPARE64); if (diff_64 == 0) { // if accumulator == dest // ZF = 1 diff --git a/bochs/cpu/arith8.cc b/bochs/cpu/arith8.cc index fb86680b3..3c273546b 100644 --- a/bochs/cpu/arith8.cc +++ b/bochs/cpu/arith8.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: arith8.cc,v 1.30 2004-08-14 20:44:48 sshwarts Exp $ +// $Id: arith8.cc,v 1.31 2004-08-16 20:18:01 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -314,7 +314,7 @@ BX_CPU_C::CMP_EbGb(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit8u diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMP8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); #endif } @@ -339,7 +339,7 @@ BX_CPU_C::CMP_GbEb(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit8u diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMP8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); #endif } @@ -358,7 +358,7 @@ BX_CPU_C::CMP_ALIb(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit8u diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMP8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); #endif } @@ -486,7 +486,7 @@ BX_CPU_C::CMP_EbIb(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit8u diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMP8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); #endif } @@ -562,7 +562,7 @@ BX_CPU_C::CMPXCHG_EbGb(bxInstruction_c *i) diff_8 = AL - op1_8; - SET_FLAGS_OSZAPC_8(AL, op1_8, diff_8, BX_INSTR_CMP8); + SET_FLAGS_OSZAPC_8(AL, op1_8, diff_8, BX_INSTR_COMPARE8); if (diff_8 == 0) { // if accumulator == dest // ZF = 1 diff --git a/bochs/cpu/lazy_flags.cc b/bochs/cpu/lazy_flags.cc index 789915812..680977170 100644 --- a/bochs/cpu/lazy_flags.cc +++ b/bochs/cpu/lazy_flags.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: lazy_flags.cc,v 1.18 2004-08-15 20:31:27 sshwarts Exp $ +// $Id: lazy_flags.cc,v 1.19 2004-08-16 20:18:01 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -92,31 +92,23 @@ bx_bool BX_CPU_C::get_CFLazy(void) break; #endif case BX_INSTR_SUB8: - case BX_INSTR_CMP8: - case BX_INSTR_CMPS8: - case BX_INSTR_SCAS8: + case BX_INSTR_COMPARE8: cf = (BX_CPU_THIS_PTR oszapc.op1_8 < BX_CPU_THIS_PTR oszapc.op2_8); break; case BX_INSTR_SUB16: - case BX_INSTR_CMP16: - case BX_INSTR_CMPS16: - case BX_INSTR_SCAS16: + case BX_INSTR_COMPARE16: cf = (BX_CPU_THIS_PTR oszapc.op1_16 < BX_CPU_THIS_PTR oszapc.op2_16); break; case BX_INSTR_SUB32: - case BX_INSTR_CMP32: - case BX_INSTR_CMPS32: - case BX_INSTR_SCAS32: + case BX_INSTR_COMPARE32: cf = (BX_CPU_THIS_PTR oszapc.op1_32 < BX_CPU_THIS_PTR oszapc.op2_32); break; #if BX_SUPPORT_X86_64 case BX_INSTR_SUB64: - case BX_INSTR_CMP64: - case BX_INSTR_CMPS64: - case BX_INSTR_SCAS64: + case BX_INSTR_COMPARE64: cf = (BX_CPU_THIS_PTR oszapc.op1_64 < BX_CPU_THIS_PTR oszapc.op2_64); break; @@ -275,50 +267,42 @@ bx_bool BX_CPU_C::get_AFLazy(void) switch ( (BX_CPU_THIS_PTR lf_flags_status>>8) & 0x00000f ) { case BX_LF_INDEX_OSZAPC: switch (BX_CPU_THIS_PTR oszapc.instr) { + case BX_INSTR_COMPARE8: case BX_INSTR_ADD8: case BX_INSTR_ADC8: case BX_INSTR_SUB8: case BX_INSTR_SBB8: - case BX_INSTR_CMP8: - case BX_INSTR_CMPS8: - case BX_INSTR_SCAS8: af = ((BX_CPU_THIS_PTR oszapc.op1_8 ^ BX_CPU_THIS_PTR oszapc.op2_8) ^ BX_CPU_THIS_PTR oszapc.result_8) & 0x10; break; + case BX_INSTR_COMPARE16: case BX_INSTR_ADD16: case BX_INSTR_ADC16: case BX_INSTR_SUB16: case BX_INSTR_SBB16: - case BX_INSTR_CMP16: - case BX_INSTR_CMPS16: - case BX_INSTR_SCAS16: af = ((BX_CPU_THIS_PTR oszapc.op1_16 ^ BX_CPU_THIS_PTR oszapc.op2_16) ^ BX_CPU_THIS_PTR oszapc.result_16) & 0x10; break; + case BX_INSTR_COMPARE32: case BX_INSTR_ADD32: case BX_INSTR_ADC32: case BX_INSTR_SUB32: case BX_INSTR_SBB32: - case BX_INSTR_CMP32: - case BX_INSTR_CMPS32: - case BX_INSTR_SCAS32: af = ((BX_CPU_THIS_PTR oszapc.op1_32 ^ BX_CPU_THIS_PTR oszapc.op2_32) ^ BX_CPU_THIS_PTR oszapc.result_32) & 0x10; break; #if BX_SUPPORT_X86_64 + case BX_INSTR_COMPARE64: case BX_INSTR_ADD64: case BX_INSTR_ADC64: case BX_INSTR_SUB64: case BX_INSTR_SBB64: - case BX_INSTR_CMP64: - case BX_INSTR_CMPS64: - case BX_INSTR_SCAS64: af = ((BX_CPU_THIS_PTR oszapc.op1_64 ^ BX_CPU_THIS_PTR oszapc.op2_64) ^ @@ -430,10 +414,8 @@ bx_bool BX_CPU_C::get_ZFLazy(void) case BX_INSTR_ADC8: case BX_INSTR_SUB8: case BX_INSTR_SBB8: - case BX_INSTR_CMP8: + case BX_INSTR_COMPARE8: case BX_INSTR_NEG8: - case BX_INSTR_CMPS8: - case BX_INSTR_SCAS8: case BX_INSTR_SAR8: case BX_INSTR_SHR8: case BX_INSTR_SHL8: @@ -444,10 +426,8 @@ bx_bool BX_CPU_C::get_ZFLazy(void) case BX_INSTR_ADC16: case BX_INSTR_SUB16: case BX_INSTR_SBB16: - case BX_INSTR_CMP16: + case BX_INSTR_COMPARE16: case BX_INSTR_NEG16: - case BX_INSTR_CMPS16: - case BX_INSTR_SCAS16: case BX_INSTR_SAR16: case BX_INSTR_SHR16: case BX_INSTR_SHL16: @@ -458,10 +438,8 @@ bx_bool BX_CPU_C::get_ZFLazy(void) case BX_INSTR_ADC32: case BX_INSTR_SUB32: case BX_INSTR_SBB32: - case BX_INSTR_CMP32: + case BX_INSTR_COMPARE32: case BX_INSTR_NEG32: - case BX_INSTR_CMPS32: - case BX_INSTR_SCAS32: case BX_INSTR_SAR32: case BX_INSTR_SHR32: case BX_INSTR_SHL32: @@ -473,10 +451,8 @@ bx_bool BX_CPU_C::get_ZFLazy(void) case BX_INSTR_ADC64: case BX_INSTR_SUB64: case BX_INSTR_SBB64: - case BX_INSTR_CMP64: + case BX_INSTR_COMPARE64: case BX_INSTR_NEG64: - case BX_INSTR_CMPS64: - case BX_INSTR_SCAS64: case BX_INSTR_SAR64: case BX_INSTR_SHR64: case BX_INSTR_SHL64: @@ -546,10 +522,8 @@ bx_bool BX_CPU_C::get_SFLazy(void) case BX_INSTR_ADC8: case BX_INSTR_SUB8: case BX_INSTR_SBB8: - case BX_INSTR_CMP8: + case BX_INSTR_COMPARE8: case BX_INSTR_NEG8: - case BX_INSTR_CMPS8: - case BX_INSTR_SCAS8: case BX_INSTR_SAR8: case BX_INSTR_SHR8: case BX_INSTR_SHL8: @@ -560,10 +534,8 @@ bx_bool BX_CPU_C::get_SFLazy(void) case BX_INSTR_ADC16: case BX_INSTR_SUB16: case BX_INSTR_SBB16: - case BX_INSTR_CMP16: + case BX_INSTR_COMPARE16: case BX_INSTR_NEG16: - case BX_INSTR_CMPS16: - case BX_INSTR_SCAS16: case BX_INSTR_SAR16: case BX_INSTR_SHR16: case BX_INSTR_SHL16: @@ -575,10 +547,8 @@ bx_bool BX_CPU_C::get_SFLazy(void) case BX_INSTR_ADC32: case BX_INSTR_SUB32: case BX_INSTR_SBB32: - case BX_INSTR_CMP32: + case BX_INSTR_COMPARE32: case BX_INSTR_NEG32: - case BX_INSTR_CMPS32: - case BX_INSTR_SCAS32: case BX_INSTR_SAR32: case BX_INSTR_SHR32: case BX_INSTR_SHL32: @@ -591,10 +561,8 @@ bx_bool BX_CPU_C::get_SFLazy(void) case BX_INSTR_ADC64: case BX_INSTR_SUB64: case BX_INSTR_SBB64: - case BX_INSTR_CMP64: + case BX_INSTR_COMPARE64: case BX_INSTR_NEG64: - case BX_INSTR_CMPS64: - case BX_INSTR_SCAS64: case BX_INSTR_SAR64: case BX_INSTR_SHR64: case BX_INSTR_SHL64: @@ -691,9 +659,7 @@ bx_bool BX_CPU_C::get_OFLazy(void) #endif case BX_INSTR_SUB8: case BX_INSTR_SBB8: - case BX_INSTR_CMP8: - case BX_INSTR_CMPS8: - case BX_INSTR_SCAS8: + case BX_INSTR_COMPARE8: op1_b7 = BX_CPU_THIS_PTR oszapc.op1_8 & 0x80; op2_b7 = BX_CPU_THIS_PTR oszapc.op2_8 & 0x80; result_b7 = BX_CPU_THIS_PTR oszapc.result_8 & 0x80; @@ -701,9 +667,7 @@ bx_bool BX_CPU_C::get_OFLazy(void) break; case BX_INSTR_SUB16: case BX_INSTR_SBB16: - case BX_INSTR_CMP16: - case BX_INSTR_CMPS16: - case BX_INSTR_SCAS16: + case BX_INSTR_COMPARE16: op1_b15 = BX_CPU_THIS_PTR oszapc.op1_16 & 0x8000; op2_b15 = BX_CPU_THIS_PTR oszapc.op2_16 & 0x8000; result_b15 = BX_CPU_THIS_PTR oszapc.result_16 & 0x8000; @@ -711,9 +675,7 @@ bx_bool BX_CPU_C::get_OFLazy(void) break; case BX_INSTR_SUB32: case BX_INSTR_SBB32: - case BX_INSTR_CMP32: - case BX_INSTR_CMPS32: - case BX_INSTR_SCAS32: + case BX_INSTR_COMPARE32: op1_b31 = BX_CPU_THIS_PTR oszapc.op1_32 & 0x80000000; op2_b31 = BX_CPU_THIS_PTR oszapc.op2_32 & 0x80000000; result_b31 = BX_CPU_THIS_PTR oszapc.result_32 & 0x80000000; @@ -722,9 +684,7 @@ bx_bool BX_CPU_C::get_OFLazy(void) #if BX_SUPPORT_X86_64 case BX_INSTR_SUB64: case BX_INSTR_SBB64: - case BX_INSTR_CMP64: - case BX_INSTR_CMPS64: - case BX_INSTR_SCAS64: + case BX_INSTR_COMPARE64: op1_b63 = BX_CPU_THIS_PTR oszapc.op1_64 & BX_CONST64(0x8000000000000000); op2_b63 = BX_CPU_THIS_PTR oszapc.op2_64 & BX_CONST64(0x8000000000000000); result_b63 = BX_CPU_THIS_PTR oszapc.result_64 & BX_CONST64(0x8000000000000000); @@ -882,10 +842,8 @@ bx_bool BX_CPU_C::get_PFLazy(void) case BX_INSTR_ADC8: case BX_INSTR_SUB8: case BX_INSTR_SBB8: - case BX_INSTR_CMP8: + case BX_INSTR_COMPARE8: case BX_INSTR_NEG8: - case BX_INSTR_CMPS8: - case BX_INSTR_SCAS8: case BX_INSTR_SAR8: case BX_INSTR_SHR8: case BX_INSTR_SHL8: @@ -896,10 +854,8 @@ bx_bool BX_CPU_C::get_PFLazy(void) case BX_INSTR_ADC16: case BX_INSTR_SUB16: case BX_INSTR_SBB16: - case BX_INSTR_CMP16: + case BX_INSTR_COMPARE16: case BX_INSTR_NEG16: - case BX_INSTR_CMPS16: - case BX_INSTR_SCAS16: case BX_INSTR_SAR16: case BX_INSTR_SHR16: case BX_INSTR_SHL16: @@ -911,10 +867,8 @@ bx_bool BX_CPU_C::get_PFLazy(void) case BX_INSTR_ADC32: case BX_INSTR_SUB32: case BX_INSTR_SBB32: - case BX_INSTR_CMP32: + case BX_INSTR_COMPARE32: case BX_INSTR_NEG32: - case BX_INSTR_CMPS32: - case BX_INSTR_SCAS32: case BX_INSTR_SAR32: case BX_INSTR_SHR32: case BX_INSTR_SHL32: @@ -927,10 +881,8 @@ bx_bool BX_CPU_C::get_PFLazy(void) case BX_INSTR_ADC64: case BX_INSTR_SUB64: case BX_INSTR_SBB64: - case BX_INSTR_CMP64: + case BX_INSTR_COMPARE64: case BX_INSTR_NEG64: - case BX_INSTR_CMPS64: - case BX_INSTR_SCAS64: case BX_INSTR_SAR64: case BX_INSTR_SHR64: case BX_INSTR_SHL64: diff --git a/bochs/cpu/lazy_flags.h b/bochs/cpu/lazy_flags.h index 44765286e..d8531be20 100644 --- a/bochs/cpu/lazy_flags.h +++ b/bochs/cpu/lazy_flags.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: lazy_flags.h,v 1.12 2004-08-15 20:12:05 sshwarts Exp $ +// $Id: lazy_flags.h,v 1.13 2004-08-16 20:18:01 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -47,10 +47,10 @@ #define BX_INSTR_SBB32 15 #define BX_INSTR_SBB64 16 -#define BX_INSTR_CMP8 17 -#define BX_INSTR_CMP16 18 -#define BX_INSTR_CMP32 19 -#define BX_INSTR_CMP64 20 +#define BX_INSTR_COMPARE8 17 +#define BX_INSTR_COMPARE16 18 +#define BX_INSTR_COMPARE32 19 +#define BX_INSTR_COMPARE64 20 #define BX_INSTR_INC8 21 #define BX_INSTR_INC16 22 @@ -72,15 +72,15 @@ #define BX_INSTR_LOGIC32 35 #define BX_INSTR_LOGIC64 36 -#define BX_INSTR_CMPS8 37 -#define BX_INSTR_CMPS16 38 -#define BX_INSTR_CMPS32 39 -#define BX_INSTR_CMPS64 40 +// BX_INSTR_BITSCAN8 not exists, leave number for alignment +#define BX_INSTR_BITSCAN16 38 +#define BX_INSTR_BITSCAN32 39 +#define BX_INSTR_BITSCAN64 40 -#define BX_INSTR_SCAS8 41 -#define BX_INSTR_SCAS16 42 -#define BX_INSTR_SCAS32 43 -#define BX_INSTR_SCAS64 44 +#define BX_INSTR_SHL8 41 +#define BX_INSTR_SHL16 42 +#define BX_INSTR_SHL32 43 +#define BX_INSTR_SHL64 44 #define BX_INSTR_SHR8 45 #define BX_INSTR_SHR16 46 @@ -92,16 +92,6 @@ #define BX_INSTR_SAR32 51 #define BX_INSTR_SAR64 52 -#define BX_INSTR_SHL8 53 -#define BX_INSTR_SHL16 54 -#define BX_INSTR_SHL32 55 -#define BX_INSTR_SHL64 56 - -// BX_INSTR_BITSCAN8 not exists, leave number for alignment -#define BX_INSTR_BITSCAN16 58 -#define BX_INSTR_BITSCAN32 59 -#define BX_INSTR_BITSCAN64 60 - #define BX_LF_INDEX_OSZAPC 1 #define BX_LF_INDEX_OSZAP 2 diff --git a/bochs/cpu/string.cc b/bochs/cpu/string.cc index da0295691..75371f06a 100644 --- a/bochs/cpu/string.cc +++ b/bochs/cpu/string.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: string.cc,v 1.23 2004-08-14 20:44:48 sshwarts Exp $ +// $Id: string.cc,v 1.24 2004-08-16 20:18:01 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -929,7 +929,7 @@ BX_CPU_C::CMPSB_XbYb(bxInstruction_c *i) diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMPS8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement RSI */ @@ -959,7 +959,7 @@ BX_CPU_C::CMPSB_XbYb(bxInstruction_c *i) diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMPS8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -997,7 +997,7 @@ BX_CPU_C::CMPSB_XbYb(bxInstruction_c *i) #else diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_CMPS8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); #endif if (BX_CPU_THIS_PTR get_DF ()) { @@ -1047,7 +1047,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i) diff_64 = op1_64 - op2_64; - SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMPS64); + SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1070,7 +1070,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i) diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMPS32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1092,7 +1092,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i) diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMPS16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1128,7 +1128,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i) diff_64 = op1_64 - op2_64; - SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_CMPS64); + SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1151,7 +1151,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i) diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMPS32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1177,7 +1177,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i) #else Bit16u diff_16; diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMPS16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); #endif if (BX_CPU_THIS_PTR get_DF ()) { @@ -1214,7 +1214,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i) diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_CMPS32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1244,7 +1244,7 @@ BX_CPU_C::CMPSW_XvYv(bxInstruction_c *i) Bit16u diff_16; diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_CMPS16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); #endif if (BX_CPU_THIS_PTR get_DF ()) { @@ -1282,7 +1282,7 @@ BX_CPU_C::SCASB_ALXb(bxInstruction_c *i) diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_SCAS8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1311,7 +1311,7 @@ BX_CPU_C::SCASB_ALXb(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit8u diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_SCAS8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); #endif if (BX_CPU_THIS_PTR get_DF ()) { @@ -1342,7 +1342,7 @@ BX_CPU_C::SCASB_ALXb(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit8u diff_8 = op1_8 - op2_8; - SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_SCAS8); + SET_FLAGS_OSZAPC_8(op1_8, op2_8, diff_8, BX_INSTR_COMPARE8); #endif if (BX_CPU_THIS_PTR get_DF ()) { @@ -1374,7 +1374,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i) diff_64 = op1_64 - op2_64; - SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_SCAS64); + SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement EDI */ @@ -1394,7 +1394,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i) diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_SCAS32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement EDI */ @@ -1413,7 +1413,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i) diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_SCAS16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1441,7 +1441,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i) diff_64 = op1_64 - op2_64; - SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_SCAS64); + SET_FLAGS_OSZAPC_64(op1_64, op2_64, diff_64, BX_INSTR_COMPARE64); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1462,7 +1462,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i) diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_SCAS32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1485,7 +1485,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit16u diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_SCAS16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); #endif if (BX_CPU_THIS_PTR get_DF ()) { @@ -1516,7 +1516,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i) diff_32 = op1_32 - op2_32; - SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_SCAS32); + SET_FLAGS_OSZAPC_32(op1_32, op2_32, diff_32, BX_INSTR_COMPARE32); if (BX_CPU_THIS_PTR get_DF ()) { /* decrement ESI */ @@ -1541,7 +1541,7 @@ BX_CPU_C::SCASW_eAXXv(bxInstruction_c *i) setEFlagsOSZAPC(flags32); #else Bit16u diff_16 = op1_16 - op2_16; - SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_SCAS16); + SET_FLAGS_OSZAPC_16(op1_16, op2_16, diff_16, BX_INSTR_COMPARE16); #endif if (BX_CPU_THIS_PTR get_DF ()) {