Made some very minor mods, to make CPUID aware of CMOV instructions

for BX_CPU_LEVEL >= 6, and to have the CMOV instructions generate
an undefined opcode exception after printing info that they were
called, if BX_CPU_LEVEL <= 5.  I suppose we could have a separate
configure option, but mirroring Intel, CMOV is available as of
Pentium Pro.

For now, you have to compile with --enable-cpu-level=6 for CMOV
support to be compiled in.
This commit is contained in:
Kevin Lawton 2002-09-01 04:01:14 +00:00
parent 7a8d2dc61e
commit d52b23daf1
3 changed files with 8 additions and 5 deletions

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: data_xfer16.cc,v 1.6 2001-10-03 13:10:37 bdenney Exp $ // $Id: data_xfer16.cc,v 1.7 2002-09-01 04:01:06 kevinlawton Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2001 MandrakeSoft S.A. // Copyright (C) 2001 MandrakeSoft S.A.
@ -377,6 +377,7 @@ BX_CPU_C::CMOV_GwEw(BxInstruction_t *i)
BX_WRITE_16BIT_REG(i->nnn, op2_16); BX_WRITE_16BIT_REG(i->nnn, op2_16);
} }
#else #else
BX_PANIC(("cmov_gwew called")); BX_INFO(("cmov_gwew called"));
UndefinedOpcode(i);
#endif #endif
} }

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: data_xfer32.cc,v 1.6 2001-10-03 13:10:37 bdenney Exp $ // $Id: data_xfer32.cc,v 1.7 2002-09-01 04:01:13 kevinlawton Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2001 MandrakeSoft S.A. // Copyright (C) 2001 MandrakeSoft S.A.
@ -317,6 +317,7 @@ BX_CPU_C::CMOV_GdEd(BxInstruction_t *i)
BX_WRITE_32BIT_REG(i->nnn, op2_32); BX_WRITE_32BIT_REG(i->nnn, op2_32);
} }
#else #else
BX_PANIC(("cmov_gded called")); BX_INFO(("cmov_gded called"));
UndefinedOpcode(i);
#endif #endif
} }

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// $Id: proc_ctrl.cc,v 1.25 2002-08-10 12:06:26 cbothamy Exp $ // $Id: proc_ctrl.cc,v 1.26 2002-09-01 04:01:14 kevinlawton Exp $
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2001 MandrakeSoft S.A. // Copyright (C) 2001 MandrakeSoft S.A.
@ -1029,6 +1029,7 @@ BX_CPU_C::CPUID(BxInstruction_t *i)
model = 1; // Pentium Pro model = 1; // Pentium Pro
stepping = 3; // ??? stepping = 3; // ???
features |= (1<<4); // implement TSC features |= (1<<4); // implement TSC
features |= (1<<15); // Implement CMOV instructions.
# if BX_SUPPORT_APIC # if BX_SUPPORT_APIC
features |= (1<<9); // APIC on chip features |= (1<<9); // APIC on chip
# endif # endif