Move MMX to be runtime option

This commit is contained in:
Stanislav Shwartsman 2010-03-01 18:53:53 +00:00
parent 160d4bbded
commit 01cfbdccbc
18 changed files with 270 additions and 315 deletions

View File

@ -142,6 +142,10 @@ cpu: count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="ms
#
# This defines features and functionality supported by Bochs emulated CPU:
#
# MMX:
# Select MMX instruction set support.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5.
#
# SEP:
# Select SYSENTER/SYSEXIT instruction set support.
# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
@ -179,7 +183,7 @@ cpu: count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="ms
# Determine whether to limit maximum CPUID function to 3. This mode is
# required to workaround WinNT installation and boot issues.
#=======================================================================
cpuid: sep=1, sse=sse4_2, xapic=1, aes=1, movbe=1, xsave=1, cpuid_limit_winnt=0
cpuid: mmx=1, sep=1, sse=sse4_2, xapic=1, aes=1, movbe=1, xsave=1, cpuid_limit_winnt=0
#=======================================================================
# MEMORY

View File

@ -12,7 +12,6 @@
--enable-debugger \
--enable-disasm \
--enable-debugger-gui \
--enable-mmx \
--enable-fpu \
--enable-misaligned-sse \
--enable-alignment-check \

View File

@ -21,7 +21,8 @@ Detailed change log :
Now you could enable/disable any of SSEx/AES/MOVBE/SYSENTER_SYSEXIT/XSAVE
instruction sets using new CPUID option in .bochsrc.
Configure options:
--enable-sse, --enable-aes, --enable-movbe, --enable-sep, --enable-xsave
--enable-mmx, --enable-sse, --enable-movbe, --enable-xsave,
--enable-sep, --enable-aes
are deprecated and should not be used anymore.
- Local APIC configure option --enable-apic is deprecated and should not
@ -49,6 +50,9 @@ Detailed change log :
- I/O Devices
- USB HP DeskJet 920C printer device emulation (Ben Lunt)
- Misc
- Updated Bochs TESTFORM to version 0.5
- SF patches applied
[2938273] allow instrumentation to change execute by Konrad Grochowski
[2926072] Indirection operators in expressions by Derek Peschel

View File

@ -1,4 +1,4 @@
$Id: PARAM_TREE.txt,v 1.26 2010-02-28 14:52:16 sshwarts Exp $
$Id: PARAM_TREE.txt,v 1.27 2010-03-01 18:53:53 sshwarts Exp $
Starting from Bochs 2.3 the parameters are organized in a tree structure
instead of a huge flat list. The parameter tree was required for implementing
@ -29,6 +29,7 @@ cpuid
cpuid_limit_winnt
vendor_string
brand_string
mmx
sep
sse
aes

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: dbg_main.cc,v 1.232 2010-02-26 14:18:18 sshwarts Exp $
// $Id: dbg_main.cc,v 1.233 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001-2009 The Bochs Project
@ -706,16 +706,22 @@ void bx_dbg_print_sse_state(void)
void bx_dbg_print_mmx_state(void)
{
#if BX_SUPPORT_MMX
char param_name[20];
for(unsigned i=0;i<8;i++) {
sprintf(param_name, "FPU.st%d.fraction", i);
Bit64u mmreg = SIM->get_param_num(param_name, dbg_cpu_list)->get64();
dbg_printf("MM[%d]: %08x:%08x\n", i, GET32H(mmreg), GET32L(mmreg));
#if BX_CPU_LEVEL >= 5
Bit32u cpuid_features_bitmask = SIM->get_param_num("cpuid_features_bitmask", dbg_cpu_list)->get();
if ((cpuid_features_bitmask & BX_CPU_MMX) != 0) {
char param_name[20];
for(unsigned i=0;i<8;i++) {
sprintf(param_name, "FPU.st%d.fraction", i);
Bit64u mmreg = SIM->get_param_num(param_name, dbg_cpu_list)->get64();
dbg_printf("MM[%d]: %08x:%08x\n", i, GET32H(mmreg), GET32L(mmreg));
}
}
#else
dbg_printf("The CPU doesn't support MMX state !\n");
else
#endif
{
dbg_printf("The CPU doesn't support MMX state !\n");
}
}
void bx_dbg_print_fpu_state(void)

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: config.cc,v 1.198 2010-02-28 14:52:16 sshwarts Exp $
// $Id: config.cc,v 1.199 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2002-2009 The Bochs Project
@ -358,7 +358,7 @@ void bx_init_options()
cpu_param->set_options(menu->SHOW_PARENT);
// cpuid subtree
bx_list_c *cpuid_param = new bx_list_c(root_param, "cpuid", "CPUID Options", 9);
bx_list_c *cpuid_param = new bx_list_c(root_param, "cpuid", "CPUID Options", 10);
new bx_param_bool_c(cpuid_param,
"cpuid_limit_winnt", "Limit max CPUID function to 3",
@ -386,6 +386,13 @@ void bx_init_options()
#endif
BX_CPUID_BRAND_LEN+1);
#if BX_CPU_LEVEL >= 5
new bx_param_bool_c(cpuid_param,
"mmx", "Support for MMX instruction set",
"Support for MMX instruction set",
1);
#endif
#if BX_CPU_LEVEL >= 6
// configure defaults to CPU_LEVEL = 6 with SSE2 enabled
static const char *sse_names[] = { "none", "sse", "sse2", "sse3", "ssse3", "sse4_1", "sse4_2", NULL };
@ -2173,6 +2180,16 @@ static int parse_debug_symbols(const char *context, const char **params, int num
return 0;
}
static int parse_param_bool(const char *input, int len, const char *param)
{
if (input[len] == '0' || input[len] == '1') {
SIM->get_param_bool(param)->set(input[len] - '0');
return 0;
}
return -1;
}
static int parse_line_formatted(const char *context, int num_params, char *params[])
{
int i, slot, t;
@ -2482,11 +2499,7 @@ static int parse_line_formatted(const char *context, int num_params, char *param
if (strncmp(params[1], "disabled=", 9)) {
PARSE_ERR(("%s: floppy_bootsig_check directive malformed.", context));
}
if (params[1][9] == '0')
SIM->get_param_bool(BXPN_FLOPPYSIGCHECK)->set(0);
else if (params[1][9] == '1')
SIM->get_param_bool(BXPN_FLOPPYSIGCHECK)->set(1);
else {
if (parse_param_bool(params[1], 9, BXPN_FLOPPYSIGCHECK) < 0) {
PARSE_ERR(("%s: floppy_bootsig_check directive malformed.", context));
}
} else if (!strcmp(params[0], "log")) {
@ -2561,16 +2574,12 @@ static int parse_line_formatted(const char *context, int num_params, char *param
SIM->get_param_num(BXPN_SMP_QUANTUM)->set(atol(&params[i][8]));
#endif
} else if (!strncmp(params[i], "reset_on_triple_fault=", 22)) {
if (params[i][22] == '0' || params[i][22] == '1') {
SIM->get_param_bool(BXPN_RESET_ON_TRIPLE_FAULT)->set(params[i][22] - '0');
} else {
if (parse_param_bool(params[i], 22, BXPN_RESET_ON_TRIPLE_FAULT) < 0) {
PARSE_ERR(("%s: cpu directive malformed.", context));
}
#if BX_CPU_LEVEL >= 5
} else if (!strncmp(params[i], "ignore_bad_msrs=", 16)) {
if (params[i][16] == '0' || params[i][16] == '1') {
SIM->get_param_bool(BXPN_IGNORE_BAD_MSRS)->set(params[i][16] - '0');
} else {
if (parse_param_bool(params[i], 16, BXPN_IGNORE_BAD_MSRS) < 0) {
PARSE_ERR(("%s: cpu directive malformed.", context));
}
#endif
@ -2596,43 +2605,37 @@ static int parse_line_formatted(const char *context, int num_params, char *param
}
SIM->get_param_string(BXPN_BRAND_STRING)->set(&params[i][13]);
} else if (!strncmp(params[i], "cpuid_limit_winnt=", 18)) {
if (params[i][18] == '0' || params[i][18] == '1') {
SIM->get_param_bool(BXPN_CPUID_LIMIT_WINNT)->set(params[i][18] - '0');
} else {
if (parse_param_bool(params[i], 18, BXPN_CPUID_LIMIT_WINNT) < 0) {
PARSE_ERR(("%s: cpuid directive malformed.", context));
}
#if BX_CPU_LEVEL >= 5
} else if (!strncmp(params[i], "mmx=", 4)) {
if (parse_param_bool(params[i], 4, BXPN_CPUID_MMX) < 0) {
PARSE_ERR(("%s: cpuid directive malformed.", context));
}
#endif
#if BX_CPU_LEVEL >= 6
} else if (!strncmp(params[i], "sse=", 4)) {
if (! SIM->get_param_enum(BXPN_CPUID_SSE)->set_by_name(&params[i][4]))
PARSE_ERR(("%s: unsupported sse option.", context));
} else if (!strncmp(params[i], "aes=", 4)) {
if (params[i][4] == '0' || params[i][4] == '1') {
SIM->get_param_bool(BXPN_CPUID_AES)->set(params[i][4] - '0');
} else {
if (parse_param_bool(params[i], 4, BXPN_CPUID_AES) < 0) {
PARSE_ERR(("%s: cpuid directive malformed.", context));
}
} else if (!strncmp(params[i], "movbe=", 6)) {
if (params[i][6] == '0' || params[i][6] == '1') {
SIM->get_param_bool(BXPN_CPUID_MOVBE)->set(params[i][6] - '0');
} else {
if (parse_param_bool(params[i], 6, BXPN_CPUID_MOVBE) < 0) {
PARSE_ERR(("%s: cpuid directive malformed.", context));
}
} else if (!strncmp(params[i], "sep=", 4)) {
if (params[i][4] == '0' || params[i][4] == '1') {
SIM->get_param_bool(BXPN_CPUID_SEP)->set(params[i][4] - '0');
} else {
if (parse_param_bool(params[i], 4, BXPN_CPUID_SEP) < 0) {
PARSE_ERR(("%s: cpuid directive malformed.", context));
}
} else if (!strncmp(params[i], "xsave=", 6)) {
if (params[i][6] == '0' || params[i][6] == '1') {
SIM->get_param_bool(BXPN_CPUID_XSAVE)->set(params[i][6] - '0');
} else {
if (parse_param_bool(params[i], 6, BXPN_CPUID_XSAVE) < 0) {
PARSE_ERR(("%s: cpuid directive malformed.", context));
}
} else if (!strncmp(params[i], "xapic=", 6)) {
if (params[i][6] == '0' || params[i][6] == '1') {
SIM->get_param_bool(BXPN_CPUID_XAPIC)->set(params[i][6] - '0');
} else {
if (parse_param_bool(params[i], 6, BXPN_CPUID_XAPIC) < 0) {
PARSE_ERR(("%s: cpuid directive malformed.", context));
}
#endif
@ -2768,10 +2771,9 @@ static int parse_line_formatted(const char *context, int num_params, char *param
PARSE_ERR(("%s: text_snapshot_check directive: wrong # args.", context));
}
if (!strncmp(params[1], "enabled=", 8)) {
if (params[1][8] == '0' || params[1][8] == '1')
SIM->get_param_bool(BXPN_TEXT_SNAPSHOT_CHECK)->set(params[1][8] - '0');
else
if (parse_param_bool(params[1], 8, BXPN_TEXT_SNAPSHOT_CHECK) < 0) {
PARSE_ERR(("%s: text_snapshot_check directive malformed.", context));
}
} else {
PARSE_ERR(("%s: text_snapshot_check directive malformed.", context));
}
@ -2781,10 +2783,9 @@ static int parse_line_formatted(const char *context, int num_params, char *param
}
for (i=1; i<num_params; i++) {
if (!strncmp(params[i], "enabled=", 8)) {
if (params[i][8] == '0' || params[i][8] == '1')
SIM->get_param_bool(BXPN_MOUSE_ENABLED)->set(params[i][8] - '0');
else
if (parse_param_bool(params[1], 8, BXPN_MOUSE_ENABLED) < 0) {
PARSE_ERR(("%s: mouse directive malformed.", context));
}
} else if (!strncmp(params[i], "type=", 5)) {
if (!SIM->get_param_enum(BXPN_MOUSE_TYPE)->set_by_name(&params[i][5]))
PARSE_ERR(("%s: mouse type '%s' not available", context, &params[i][5]));
@ -2799,9 +2800,7 @@ static int parse_line_formatted(const char *context, int num_params, char *param
if (strncmp(params[1], "enabled=", 8)) {
PARSE_ERR(("%s: private_colormap directive malformed.", context));
}
if (params[1][8] == '0' || params[1][8] == '1')
SIM->get_param_bool(BXPN_PRIVATE_COLORMAP)->set(params[1][8] - '0');
else {
if (parse_param_bool(params[1], 8, BXPN_PRIVATE_COLORMAP) < 0) {
PARSE_ERR(("%s: private_colormap directive malformed.", context));
}
} else if (!strcmp(params[0], "fullscreen")) {
@ -2812,9 +2811,7 @@ static int parse_line_formatted(const char *context, int num_params, char *param
if (strncmp(params[1], "enabled=", 8)) {
PARSE_ERR(("%s: fullscreen directive malformed.", context));
}
if (params[1][8] == '0' || params[1][8] == '1') {
SIM->get_param_bool(BXPN_FULLSCREEN)->set(params[1][8] - '0');
} else {
if (parse_param_bool(params[1], 8, BXPN_FULLSCREEN) < 0) {
PARSE_ERR(("%s: fullscreen directive malformed.", context));
}
#endif
@ -3094,10 +3091,7 @@ static int parse_line_formatted(const char *context, int num_params, char *param
if (strncmp(params[1], "enabled=", 8)) {
PARSE_ERR(("%s: port_e9_hack directive malformed.", context));
}
if (params[1][8] == '0' || params[1][8] == '1') {
SIM->get_param_bool(BXPN_PORT_E9_HACK)->set(atoi(&params[1][8]));
}
else {
if (parse_param_bool(params[1], 8, BXPN_PORT_E9_HACK) < 0) {
PARSE_ERR(("%s: port_e9_hack directive malformed.", context));
}
}
@ -3796,6 +3790,9 @@ int bx_write_configuration(const char *rc, int overwrite)
#endif
fprintf(fp, "\n");
fprintf(fp, "cpuid: cpuid_limit_winnt=%d", SIM->get_param_bool(BXPN_CPUID_LIMIT_WINNT)->get());
#if BX_CPU_LEVEL >= 5
fprintf(fp, ", mmx=%d", SIM->get_param_bool(BXPN_CPUID_MMX)->get());
#endif
#if BX_CPU_LEVEL >= 6
fprintf(fp, ", sse=%s, xapic=%d, sep=%d, aes=%d, xsave=%d, movbe=%d",
SIM->get_param_enum(BXPN_CPUID_SSE)->get_selected(),

View File

@ -683,7 +683,6 @@ typedef
#define BX_SUPPORT_ALIGNMENT_CHECK 0
#define BX_SUPPORT_FPU 0
#define BX_SUPPORT_MMX 0
#define BX_SUPPORT_3DNOW 0
#define BX_SUPPORT_MISALIGNED_SSE 0
#define BX_SUPPORT_MONITOR_MWAIT 0
@ -715,26 +714,14 @@ typedef
#error MSRs are supported only with CPU level >= 5 !
#endif
#if (BX_SUPPORT_MMX && BX_CPU_LEVEL < 5)
#error With CPU level < 5, you must disable MMX support !
#endif
#if (!BX_SUPPORT_FPU && BX_CPU_LEVEL > 4)
#error With CPU level > 4, you must enable FPU support !
#endif
#if (BX_SUPPORT_MMX && !BX_SUPPORT_FPU)
#error "MMX cannot be compiled without FPU support !"
#endif
#if (BX_SUPPORT_FPU && BX_CPU_LEVEL < 3)
#error "FPU cannot be compiled without cpu level >= 3 !"
#endif
#if (BX_SUPPORT_3DNOW && !BX_SUPPORT_MMX)
#error "3DNow! cannot be compiled without MMX support !"
#endif
#if (BX_CPU_LEVEL<6 && BX_SUPPORT_VMX)
#error "VMX only supported with CPU_LEVEL >= 6 !"
#endif

98
bochs/configure vendored
View File

@ -1,5 +1,5 @@
#! /bin/sh
# From configure.in Id: configure.in,v 1.427 2010/02/26 22:53:43 sshwarts Exp .
# From configure.in Id: configure.in,v 1.428 2010/02/28 14:52:16 sshwarts Exp .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.65.
#
@ -972,7 +972,6 @@ enable_vbe
enable_clgd54xx
enable_fpu
enable_vmx
enable_mmx
enable_3dnow
enable_alignment_check
enable_misaligned_sse
@ -1690,7 +1689,6 @@ Optional Features:
--enable-clgd54xx enable CLGD54XX emulation
--enable-fpu compile in FPU emulation
--enable-vmx virtualization extensions
--enable-mmx MMX support
--enable-3dnow 3DNow! support (incomplete)
--enable-alignment-check alignment check (#AC) support
--enable-misaligned-sse misaligned SSE support
@ -5099,7 +5097,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 5102 "configure"' > conftest.$ac_ext
echo '#line 5100 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@ -6788,11 +6786,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6791: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6789: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:6795: \$? = $ac_status" >&5
echo "$as_me:6793: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -7021,11 +7019,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:7024: $lt_compile\"" >&5)
(eval echo "\"\$as_me:7022: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:7028: \$? = $ac_status" >&5
echo "$as_me:7026: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -7088,11 +7086,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:7091: $lt_compile\"" >&5)
(eval echo "\"\$as_me:7089: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:7095: \$? = $ac_status" >&5
echo "$as_me:7093: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -8878,7 +8876,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 8881 "configure"
#line 8879 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -8976,7 +8974,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 8979 "configure"
#line 8977 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -11091,11 +11089,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:11094: $lt_compile\"" >&5)
(eval echo "\"\$as_me:11092: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:11098: \$? = $ac_status" >&5
echo "$as_me:11096: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -11158,11 +11156,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:11161: $lt_compile\"" >&5)
(eval echo "\"\$as_me:11159: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:11165: \$? = $ac_status" >&5
echo "$as_me:11163: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -12183,7 +12181,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 12186 "configure"
#line 12184 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -12281,7 +12279,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 12284 "configure"
#line 12282 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -13104,11 +13102,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13107: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13105: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:13111: \$? = $ac_status" >&5
echo "$as_me:13109: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -13171,11 +13169,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13174: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13172: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:13178: \$? = $ac_status" >&5
echo "$as_me:13176: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -15136,11 +15134,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15139: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15137: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:15143: \$? = $ac_status" >&5
echo "$as_me:15141: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -15369,11 +15367,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15372: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15370: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:15376: \$? = $ac_status" >&5
echo "$as_me:15374: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@ -15436,11 +15434,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15439: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15437: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:15443: \$? = $ac_status" >&5
echo "$as_me:15441: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -17226,7 +17224,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 17229 "configure"
#line 17227 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -17324,7 +17322,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 17327 "configure"
#line 17325 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -19011,7 +19009,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 19014 "configure"
#line 19012 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -21765,6 +21763,10 @@ $as_echo "6" >&6; }
echo "ERROR: with >1 processor, use --enable-cpu-level=6"
exit 1
fi
if test "$use_x86_64" = 1 -a "$enableval" -lt 6; then
echo "ERROR: --enable-cpu-level=6 required for x86-64 emulation"
exit 1
fi
else
@ -23020,40 +23022,6 @@ if test "$support_vmx" -lt 0 -a "$bx_cpu_level" -lt 6; then
as_fn_error "for VMX support the CPU level must be set to 6" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MMX support" >&5
$as_echo_n "checking for MMX support... " >&6; }
# Check whether --enable-mmx was given.
if test "${enable_mmx+set}" = set; then :
enableval=$enable_mmx; if test "$enableval" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define BX_SUPPORT_MMX 1" >>confdefs.h
elif test "$enableval" = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
$as_echo "#define BX_SUPPORT_MMX 0" >>confdefs.h
fi
else
if test "$bx_cpu_level" -ge 5; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
$as_echo "#define BX_SUPPORT_MMX 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
$as_echo "#define BX_SUPPORT_MMX 0" >>confdefs.h
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for 3DNow! support" >&5
$as_echo_n "checking for 3DNow! support... " >&6; }
# Check whether --enable-3dnow was given.

View File

@ -2,7 +2,7 @@ dnl // Process this file with autoconf to produce a configure script.
AC_PREREQ(2.50)
AC_INIT(bochs.h)
AC_REVISION([[$Id: configure.in,v 1.428 2010-02-28 14:52:16 sshwarts Exp $]])
AC_REVISION([[$Id: configure.in,v 1.429 2010-03-01 18:53:53 sshwarts Exp $]])
AC_CONFIG_HEADER(config.h)
AC_CONFIG_HEADER(ltdlconf.h)
@ -578,6 +578,10 @@ AC_ARG_ENABLE(cpu-level,
echo "ERROR: with >1 processor, use --enable-cpu-level=6"
exit 1
fi
if test "$use_x86_64" = 1 -a "$enableval" -lt 6; then
echo "ERROR: --enable-cpu-level=6 required for x86-64 emulation"
exit 1
fi
],
[
AC_MSG_RESULT(6)
@ -1407,28 +1411,6 @@ if test "$support_vmx" -lt 0 -a "$bx_cpu_level" -lt 6; then
AC_MSG_ERROR([for VMX support the CPU level must be set to 6])
fi
AC_MSG_CHECKING(for MMX support)
AC_ARG_ENABLE(mmx,
[ --enable-mmx MMX support],
[if test "$enableval" = yes; then
AC_MSG_RESULT(yes)
AC_DEFINE(BX_SUPPORT_MMX, 1)
elif test "$enableval" = no; then
AC_MSG_RESULT(no)
AC_DEFINE(BX_SUPPORT_MMX, 0)
fi
],
[
if test "$bx_cpu_level" -ge 5; then
AC_MSG_RESULT(yes)
AC_DEFINE(BX_SUPPORT_MMX, 1)
else
AC_MSG_RESULT(no)
AC_DEFINE(BX_SUPPORT_MMX, 0)
fi
]
)
AC_MSG_CHECKING(for 3DNow! support)
AC_ARG_ENABLE(3dnow,
[ --enable-3dnow 3DNow! support (incomplete)],

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: cpu.h,v 1.643 2010-03-01 17:35:49 sshwarts Exp $
// $Id: cpu.h,v 1.644 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001-2009 The Bochs Project
@ -889,7 +889,7 @@ public: // for now...
MSR *msrs[BX_MSR_MAX_INDEX];
#endif
#if BX_SUPPORT_FPU || BX_SUPPORT_MMX
#if BX_SUPPORT_FPU
i387_t the_i387;
#endif
@ -3329,9 +3329,11 @@ public: // for now...
BX_SMF Bit16u unpack_FPU_TW(Bit16u tag_byte);
#endif
#if BX_CPU_LEVEL >= 5
BX_SMF void prepareMMX(void);
BX_SMF void prepareFPU2MMX(void); /* cause transition from FPU to MMX technology state */
BX_SMF void print_state_MMX(void);
#endif
#if BX_CPU_LEVEL >= 6
BX_SMF void prepareSSE(void);
@ -3415,7 +3417,7 @@ public: // for now...
#endif
};
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPP_INLINE void BX_CPU_C::prepareMMX(void)
{
if(BX_CPU_THIS_PTR cr0.get_EM())

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: cpuid.cc,v 1.96 2010-03-01 17:35:49 sshwarts Exp $
// $Id: cpuid.cc,v 1.97 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2007-2009 Stanislav Shwartsman
@ -66,11 +66,12 @@ Bit32u BX_CPU_C::get_cpu_version_information(void)
#elif BX_CPU_LEVEL == 5
family = 5;
#if BX_SUPPORT_MMX
model = 4; // Pentium MMX
#else
model = 1; // Pentium 60/66
#endif
if (BX_CPU_SUPPORT_FEATURE(BX_CPU_MMX))
model = 4; // Pentium MMX
else
model = 1; // Pentium 60/66
stepping = 3;
/* ****** */
@ -265,8 +266,10 @@ Bit32u BX_CPU_C::get_std_cpuid_features(void)
if (BX_CPU_THIS_PTR cpuid_features_bitmask & BX_CPU_CLFLUSH)
features |= (1<<19);
#if BX_CPU_LEVEL >= 5
if (BX_CPU_THIS_PTR cpuid_features_bitmask & BX_CPU_MMX)
features |= (1<<23);
#endif
#if BX_CPU_LEVEL >= 6
if (BX_CPU_THIS_PTR cpuid_features_bitmask & BX_CPU_P6) {
@ -763,6 +766,7 @@ void BX_CPU_C::init_cpu_features_bitmask(void)
{
Bit32u features_bitmask = 0;
bx_bool mmx_enabled = SIM->get_param_bool(BXPN_CPUID_MMX)->get();
bx_bool sep_enabled = SIM->get_param_bool(BXPN_CPUID_SEP)->get();
bx_bool aes_enabled = SIM->get_param_bool(BXPN_CPUID_AES)->get();
bx_bool movbe_enabled = SIM->get_param_bool(BXPN_CPUID_MOVBE)->get();
@ -771,6 +775,13 @@ void BX_CPU_C::init_cpu_features_bitmask(void)
unsigned sse_enabled = SIM->get_param_enum(BXPN_CPUID_SSE)->get();
// sanity checks
#if BX_SUPPORT_3DNOW
if (! mmx_enabled) {
BX_PANIC(("PANIC: 3DNOW emulation requires MMX support !"));
return;
}
#endif
if (aes_enabled) {
// AES required 3-byte opcode (SSS3E support or more)
if (sse_enabled < BX_CPUID_SUPPORT_SSSE3) {
@ -795,7 +806,7 @@ void BX_CPU_C::init_cpu_features_bitmask(void)
}
if (sse_enabled) {
if (BX_SUPPORT_MMX == 0 || BX_CPU_LEVEL < 6) {
if (mmx_enabled == 0 || BX_CPU_LEVEL < 6) {
BX_PANIC(("PANIC: SSE support requires P6 emulation with MMX enabled !"));
return;
}
@ -836,12 +847,9 @@ void BX_CPU_C::init_cpu_features_bitmask(void)
#endif
#if BX_CPU_LEVEL >= 5
features_bitmask |= BX_CPU_PENTIUM;
#endif
#if BX_CPU_LEVEL >= 6
features_bitmask |= BX_CPU_P6;
#endif
#if BX_SUPPORT_MMX
features_bitmask |= BX_CPU_MMX;
if (mmx_enabled)
features_bitmask |= BX_CPU_MMX;
#endif
#if BX_SUPPORT_3DNOW
features_bitmask |= BX_CPU_3DNOW;
@ -851,6 +859,8 @@ void BX_CPU_C::init_cpu_features_bitmask(void)
#endif
#if BX_CPU_LEVEL >= 6
features_bitmask |= BX_CPU_P6;
// enabled CLFLUSH only when SSE2 or higher is enabled
if (sse_enabled >= BX_CPUID_SUPPORT_SSE2)
features_bitmask |= BX_CPU_CLFLUSH;

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: i387.h,v 1.39 2009-10-14 20:45:29 sshwarts Exp $
// $Id: i387.h,v 1.40 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2004-2009 Stanislav Shwartsman
@ -178,8 +178,6 @@ BX_CPP_INLINE void i387_t::reset()
memset(st_space, 0, sizeof(floatx80)*8);
}
#if BX_SUPPORT_MMX
typedef union bx_packed_mmx_reg_t {
Bit8s _sbyte[8];
Bit16s _s16[4];
@ -260,8 +258,6 @@ typedef union bx_packed_mmx_reg_t {
(BX_FPU_REG(index)).exp = 0xffff; \
}
#endif /* BX_SUPPORT_MMX */
#endif /* BX_SUPPORT_FPU */
#endif

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: init.cc,v 1.228 2010-02-26 22:53:43 sshwarts Exp $
// $Id: init.cc,v 1.229 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001-2009 The Bochs Project
@ -482,7 +482,7 @@ void BX_CPU_C::register_state(void)
#endif
#endif
#if BX_SUPPORT_FPU || BX_SUPPORT_MMX
#if BX_SUPPORT_FPU
bx_list_c *fpu = new bx_list_c(cpu, "FPU", 17);
BXRS_HEX_PARAM_FIELD(fpu, cwd, the_i387.cwd);
BXRS_HEX_PARAM_FIELD(fpu, swd, the_i387.swd);

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: mmx.cc,v 1.93 2010-02-26 11:44:50 sshwarts Exp $
// $Id: mmx.cc,v 1.94 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2002-2009 Stanislav Shwartsman
@ -26,7 +26,7 @@
#include "cpu.h"
#define LOG_THIS BX_CPU_THIS_PTR
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
void BX_CPU_C::print_state_MMX(void)
{
@ -47,7 +47,7 @@ void BX_CPU_C::prepareFPU2MMX(void)
/* 0F 38 00 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSHUFB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -80,7 +80,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSHUFB_PqQq(bxInstruction_c *i)
/* 0F 38 01 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHADDW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -109,7 +109,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHADDW_PqQq(bxInstruction_c *i)
/* 0F 38 02 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHADDD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -136,7 +136,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHADDD_PqQq(bxInstruction_c *i)
/* 0F 38 03 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHADDSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -166,7 +166,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHADDSW_PqQq(bxInstruction_c *i)
/* 0F 38 04 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMADDUBSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -199,7 +199,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMADDUBSW_PqQq(bxInstruction_c *i)
/* 0F 38 05 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHSUBSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -229,7 +229,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHSUBSW_PqQq(bxInstruction_c *i)
/* 0F 38 05 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHSUBW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -258,7 +258,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHSUBW_PqQq(bxInstruction_c *i)
/* 0F 38 06 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHSUBD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -285,7 +285,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PHSUBD_PqQq(bxInstruction_c *i)
/* 0F 38 08 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSIGNB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -314,7 +314,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSIGNB_PqQq(bxInstruction_c *i)
/* 0F 38 09 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSIGNW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -343,7 +343,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSIGNW_PqQq(bxInstruction_c *i)
/* 0F 38 0A */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSIGND_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -374,7 +374,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSIGND_PqQq(bxInstruction_c *i)
/* 0F 38 0B */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULHRSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -409,7 +409,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULHRSW_PqQq(bxInstruction_c *i)
/* 0F 38 1C */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PABSB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op;
@ -442,7 +442,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PABSB_PqQq(bxInstruction_c *i)
/* 0F 38 1D */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PABSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op;
@ -471,7 +471,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PABSW_PqQq(bxInstruction_c *i)
/* 0F 38 1E */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PABSD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op;
@ -498,7 +498,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PABSD_PqQq(bxInstruction_c *i)
/* 0F 3A 0F */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PALIGNR_PqQqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -534,7 +534,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PALIGNR_PqQqIb(bxInstruction_c *i)
/* 0F 60 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKLBW_PqQd(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -568,7 +568,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKLBW_PqQd(bxInstruction_c *i)
/* 0F 61 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKLWD_PqQd(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -598,7 +598,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKLWD_PqQd(bxInstruction_c *i)
/* 0F 62 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKLDQ_PqQd(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -625,7 +625,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKLDQ_PqQd(bxInstruction_c *i)
/* 0F 63 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PACKSSWB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -659,7 +659,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PACKSSWB_PqQq(bxInstruction_c *i)
/* 0F 64 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPGTB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -693,7 +693,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPGTB_PqQq(bxInstruction_c *i)
/* 0F 65 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPGTW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -723,7 +723,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPGTW_PqQq(bxInstruction_c *i)
/* 0F 66 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPGTD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -751,7 +751,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPGTD_PqQq(bxInstruction_c *i)
/* 0F 67 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PACKUSWB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -785,7 +785,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PACKUSWB_PqQq(bxInstruction_c *i)
/* 0F 68 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKHBW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -819,7 +819,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKHBW_PqQq(bxInstruction_c *i)
/* 0F 69 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKHWD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -849,7 +849,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKHWD_PqQq(bxInstruction_c *i)
/* 0F 6A */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKHDQ_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -877,7 +877,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PUNPCKHDQ_PqQq(bxInstruction_c *i)
/* 0F 6B */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PACKSSDW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -907,7 +907,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PACKSSDW_PqQq(bxInstruction_c *i)
/* 0F 6E */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVD_PqEdR(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -923,7 +923,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVD_PqEdR(bxInstruction_c *i)
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVD_PqEdM(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op;
@ -958,7 +958,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_PqEqR(bxInstruction_c *i)
/* 0F 6F */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_PqQqR(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -968,7 +968,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_PqQqR(bxInstruction_c *i)
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_PqQqM(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op;
@ -986,7 +986,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_PqQqM(bxInstruction_c *i)
/* 0F 70 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSHUFW_PqQqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op, result;
@ -1017,7 +1017,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSHUFW_PqQqIb(bxInstruction_c *i)
/* 0F 74 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPEQB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1051,7 +1051,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPEQB_PqQq(bxInstruction_c *i)
/* 0F 75 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPEQW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1081,7 +1081,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPEQW_PqQq(bxInstruction_c *i)
/* 0F 76 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPEQD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1109,7 +1109,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PCMPEQD_PqQq(bxInstruction_c *i)
/* 0F 77 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::EMMS(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX || BX_SUPPORT_3DNOW
#if BX_SUPPORT_3DNOW
BX_CPU_THIS_PTR prepareMMX();
FPU_TAG_WORD = 0xffff;
FPU_TOS = 0; /* reset FPU Top-Of-Stack */
@ -1119,7 +1119,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::EMMS(bxInstruction_c *i)
/* 0F 7E */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVD_EdPdR(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX();
@ -1130,7 +1130,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVD_EdPdR(bxInstruction_c *i)
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVD_EdPdM(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op = BX_READ_MMX_REG(i->nnn());
@ -1161,7 +1161,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_EqPqR(bxInstruction_c *i)
/* 0F 7F */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_QqPqR(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX();
@ -1171,7 +1171,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_QqPqR(bxInstruction_c *i)
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_QqPqM(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op = BX_READ_MMX_REG(i->nnn());
@ -1188,7 +1188,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVQ_QqPqM(bxInstruction_c *i)
/* 0F C4 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PINSRW_PqEwIb(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn());
@ -1216,7 +1216,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PINSRW_PqEwIb(bxInstruction_c *i)
/* 0F C5 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PEXTRW_GdPqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -1230,7 +1230,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PEXTRW_GdPqIb(bxInstruction_c *i)
/* 0F D1 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1266,7 +1266,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLW_PqQq(bxInstruction_c *i)
/* 0F D2 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1300,7 +1300,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLD_PqQq(bxInstruction_c *i)
/* 0F D3 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLQ_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1332,7 +1332,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLQ_PqQq(bxInstruction_c *i)
/* 0F D4 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDQ_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1359,7 +1359,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDQ_PqQq(bxInstruction_c *i)
/* 0F D5 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULLW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1394,7 +1394,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULLW_PqQq(bxInstruction_c *i)
/* 0F D7 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMOVMSKB_GdPRq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -1418,7 +1418,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMOVMSKB_GdPRq(bxInstruction_c *i)
/* 0F D8 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBUSB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1454,7 +1454,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBUSB_PqQq(bxInstruction_c *i)
/* 0F D9 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBUSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1486,7 +1486,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBUSW_PqQq(bxInstruction_c *i)
/* 0F DA */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMINUB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1520,7 +1520,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMINUB_PqQq(bxInstruction_c *i)
/* 0F DB */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PAND_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1547,7 +1547,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PAND_PqQq(bxInstruction_c *i)
/* 0F DC */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDUSB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1581,7 +1581,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDUSB_PqQq(bxInstruction_c *i)
/* 0F DD */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDUSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1611,7 +1611,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDUSW_PqQq(bxInstruction_c *i)
/* 0F DE */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMAXUB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1645,7 +1645,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMAXUB_PqQq(bxInstruction_c *i)
/* 0F DF */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PANDN_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1672,7 +1672,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PANDN_PqQq(bxInstruction_c *i)
/* 0F E0 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PAVGB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1706,7 +1706,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PAVGB_PqQq(bxInstruction_c *i)
/* 0F E1 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRAW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1753,7 +1753,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRAW_PqQq(bxInstruction_c *i)
/* 0F E2 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRAD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1797,7 +1797,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRAD_PqQq(bxInstruction_c *i)
/* 0F E3 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PAVGW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -1827,7 +1827,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PAVGW_PqQq(bxInstruction_c *i)
/* 0F E4 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULHUW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1862,7 +1862,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULHUW_PqQq(bxInstruction_c *i)
/* 0F E5 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULHW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1897,7 +1897,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULHW_PqQq(bxInstruction_c *i)
/* 0F E7 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVNTQ_MqPq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister reg = BX_READ_MMX_REG(i->nnn());
@ -1912,7 +1912,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MOVNTQ_MqPq(bxInstruction_c *i)
/* 0F E8 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBSB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1946,7 +1946,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBSB_PqQq(bxInstruction_c *i)
/* 0F E9 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -1976,7 +1976,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBSW_PqQq(bxInstruction_c *i)
/* 0F EA */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMINSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2006,7 +2006,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMINSW_PqQq(bxInstruction_c *i)
/* 0F EB */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::POR_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2033,7 +2033,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::POR_PqQq(bxInstruction_c *i)
/* 0F EC */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDSB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -2067,7 +2067,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDSB_PqQq(bxInstruction_c *i)
/* 0F ED */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -2097,7 +2097,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDSW_PqQq(bxInstruction_c *i)
/* 0F EE */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMAXSW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2127,7 +2127,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMAXSW_PqQq(bxInstruction_c *i)
/* 0F EF */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PXOR_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2154,7 +2154,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PXOR_PqQq(bxInstruction_c *i)
/* 0F F1 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2190,7 +2190,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLW_PqQq(bxInstruction_c *i)
/* 0F F2 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2224,7 +2224,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLD_PqQq(bxInstruction_c *i)
/* 0F F3 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLQ_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2256,7 +2256,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLQ_PqQq(bxInstruction_c *i)
/* 0F F4 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULUDQ_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -2283,7 +2283,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMULUDQ_PqQq(bxInstruction_c *i)
/* 0F F5 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMADDWD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result;
@ -2322,7 +2322,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PMADDWD_PqQq(bxInstruction_c *i)
/* 0F F6 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSADBW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2359,7 +2359,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSADBW_PqQq(bxInstruction_c *i)
/* 0F F7 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::MASKMOVQ_PqPRq(bxInstruction_c *i)
{
#if BX_SUPPORT_3DNOW || BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -2401,7 +2401,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::MASKMOVQ_PqPRq(bxInstruction_c *i)
/* 0F F8 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2435,7 +2435,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBB_PqQq(bxInstruction_c *i)
/* 0F F9 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2465,7 +2465,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBW_PqQq(bxInstruction_c *i)
/* 0F FA */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2493,7 +2493,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBD_PqQq(bxInstruction_c *i)
/* 0F FB */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBQ_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2520,7 +2520,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSUBQ_PqQq(bxInstruction_c *i)
/* 0F FC */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDB_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2554,7 +2554,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDB_PqQq(bxInstruction_c *i)
/* 0F FD */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDW_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2584,7 +2584,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDW_PqQq(bxInstruction_c *i)
/* 0F FE */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDD_PqQq(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2;
@ -2612,7 +2612,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PADDD_PqQq(bxInstruction_c *i)
/* 0F 71 GrpA 010 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLW_PqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -2636,7 +2636,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLW_PqIb(bxInstruction_c *i)
/* 0F 71 GrpA 100 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRAW_PqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -2671,7 +2671,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRAW_PqIb(bxInstruction_c *i)
/* 0F 71 GrpA 110 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLW_PqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -2695,7 +2695,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLW_PqIb(bxInstruction_c *i)
/* 0F 72 GrpA 010 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLD_PqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -2717,7 +2717,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLD_PqIb(bxInstruction_c *i)
/* 0F 72 GrpA 100 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRAD_PqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -2749,7 +2749,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRAD_PqIb(bxInstruction_c *i)
/* 0F 72 GrpA 110 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLD_PqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -2771,7 +2771,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLD_PqIb(bxInstruction_c *i)
/* 0F 73 GrpA 010 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLQ_PqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */
@ -2793,7 +2793,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSRLQ_PqIb(bxInstruction_c *i)
/* 0F 73 GrpA 110 */
void BX_CPP_AttrRegparmN(1) BX_CPU_C::PSLLQ_PqIb(bxInstruction_c *i)
{
#if BX_SUPPORT_MMX
#if BX_CPU_LEVEL >= 5
BX_CPU_THIS_PTR prepareMMX();
BX_CPU_THIS_PTR prepareFPU2MMX(); /* FPU2MMX transition */

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: sse_move.cc,v 1.109 2010-02-26 11:44:50 sshwarts Exp $
// $Id: sse_move.cc,v 1.110 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2003-2009 Stanislav Shwartsman
@ -159,13 +159,14 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FXSAVE(bxInstruction_c *i)
BX_DEBUG(("FXSAVE: save FPU/MMX/SSE state"));
#if BX_SUPPORT_MMX
if(BX_CPU_THIS_PTR cr0.get_TS())
exception(BX_NM_EXCEPTION, 0, 0);
if (BX_CPU_SUPPORT_FEATURE(BX_CPU_MMX))
{
if(BX_CPU_THIS_PTR cr0.get_TS())
exception(BX_NM_EXCEPTION, 0, 0);
if(BX_CPU_THIS_PTR cr0.get_EM())
exception(BX_UD_EXCEPTION, 0, 0);
#endif
if(BX_CPU_THIS_PTR cr0.get_EM())
exception(BX_UD_EXCEPTION, 0, 0);
}
xmm.xmm16u(0) = BX_CPU_THIS_PTR the_i387.get_control_word();
xmm.xmm16u(1) = BX_CPU_THIS_PTR the_i387.get_status_word();
@ -278,13 +279,13 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FXRSTOR(bxInstruction_c *i)
BX_DEBUG(("FXRSTOR: restore FPU/MMX/SSE state"));
#if BX_SUPPORT_MMX
if(BX_CPU_THIS_PTR cr0.get_TS())
exception(BX_NM_EXCEPTION, 0, 0);
if (BX_CPU_SUPPORT_FEATURE(BX_CPU_MMX)) {
if(BX_CPU_THIS_PTR cr0.get_TS())
exception(BX_NM_EXCEPTION, 0, 0);
if(BX_CPU_THIS_PTR cr0.get_EM())
exception(BX_UD_EXCEPTION, 0, 0);
#endif
if(BX_CPU_THIS_PTR cr0.get_EM())
exception(BX_UD_EXCEPTION, 0, 0);
}
bx_address eaddr = BX_CPU_CALL_METHODR(i->ResolveModrm, (i));

View File

@ -1,7 +1,7 @@
<!--
================================================================
doc/docbook/user/user.dbk
$Id: user.dbk,v 1.275 2010-02-26 22:53:43 sshwarts Exp $
$Id: user.dbk,v 1.276 2010-03-01 18:53:53 sshwarts Exp $
This is the top level file for the Bochs Users Manual.
================================================================
@ -2040,7 +2040,7 @@ turn it off.
<tbody>
<row id="configure-enable-cpu-level">
<entry>--enable-cpu-level={<option>3,4,5,6</option>}</entry>
<entry>5</entry>
<entry>6</entry>
<entry>
Select which CPU level to emulate. Choices are 3,4,5,6 which mean to
target 386, 486, Pentium, or Pentium Pro and later emulation.
@ -2079,18 +2079,6 @@ turn it off.
<entry>no</entry>
<entry>support for 1G page extensions in x86-64 long mode</entry>
</row>
<row>
<entry>--enable-xapic</entry>
<entry>no</entry>
<entry>support for XAPIC extensions</entry>
</row>
<row>
<entry>--enable-mmx</entry>
<entry>no (yes for <link linkend="configure-enable-cpu-level">CPU</link> >= 5)</entry>
<entry>
Add support for MMX instructions, written by Stanislav Shwartsman.
</entry>
</row>
<row>
<entry>--enable-vmx</entry>
<entry>no</entry>

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: main.cc,v 1.415 2010-02-28 14:52:16 sshwarts Exp $
// $Id: main.cc,v 1.416 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001-2009 The Bochs Project
@ -992,10 +992,15 @@ void bx_init_hardware()
io->set_log_prefix(SIM->get_param_string(BXPN_LOG_PREFIX)->getptr());
#if BX_CPU_LEVEL >= 5
bx_bool mmx_enabled = SIM->get_param_bool(BXPN_CPUID_MMX)->get();
#endif
#if BX_CPU_LEVEL >= 6
bx_bool aes_enabled = SIM->get_param_bool(BXPN_CPUID_AES)->get();
bx_bool movbe_enabled = SIM->get_param_bool(BXPN_CPUID_MOVBE)->get();
bx_bool sep_enabled = SIM->get_param_bool(BXPN_CPUID_SEP)->get();
bx_bool xsave_enabled = SIM->get_param_bool(BXPN_CPUID_XSAVE)->get();
#endif
// Output to the log file the cpu and device settings
// This will by handy for bug reports
@ -1019,19 +1024,23 @@ void bx_init_hardware()
#endif
BX_INFO((" APIC support: %s",BX_SUPPORT_APIC?"yes":"no"));
BX_INFO((" FPU support: %s",BX_SUPPORT_FPU?"yes":"no"));
BX_INFO((" MMX support: %s",BX_SUPPORT_MMX?"yes":"no"));
BX_INFO((" SSE support: %s", SIM->get_param_enum(BXPN_CPUID_SSE)->get_selected()));
#if BX_CPU_LEVEL >= 5
BX_INFO((" MMX support: %s",mmx_enabled?"yes":"no"));
BX_INFO((" 3dnow! support: %s",BX_SUPPORT_3DNOW?"yes":"no"));
#endif
#if BX_CPU_LEVEL >= 6
BX_INFO((" SEP support: %s",sep_enabled?"yes":"no"));
BX_INFO((" SSE support: %s", SIM->get_param_enum(BXPN_CPUID_SSE)->get_selected()));
BX_INFO((" XSAVE support: %s",xsave_enabled?"yes":"no"));
BX_INFO((" AES support: %s",aes_enabled?"yes":"no"));
BX_INFO((" MOVBE support: %s",movbe_enabled?"yes":"no"));
#if BX_SUPPORT_X86_64
BX_INFO((" 1G paging support: %s",BX_SUPPORT_1G_PAGES?"yes":"no"));
#endif
BX_INFO((" x86-64 support: %s",BX_SUPPORT_X86_64?"yes":"no"));
BX_INFO((" SEP support: %s",sep_enabled?"yes":"no"));
BX_INFO((" MWAIT support: %s",BX_SUPPORT_MONITOR_MWAIT?"yes":"no"));
BX_INFO((" XSAVE support: %s",xsave_enabled?"yes":"no"));
BX_INFO((" AES support: %s",aes_enabled?"yes":"no"));
BX_INFO((" MOVBE support: %s",movbe_enabled?"yes":"no"));
BX_INFO((" VMX support: %s",BX_SUPPORT_VMX?"yes":"no"));
#endif
BX_INFO(("Optimization configuration"));
BX_INFO((" RepeatSpeedups support: %s",BX_SupportRepeatSpeedups?"yes":"no"));
BX_INFO((" Trace cache support: %s",BX_SUPPORT_TRACE_CACHE?"yes":"no"));

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: param_names.h,v 1.3 2010-02-28 14:52:16 sshwarts Exp $
// $Id: param_names.h,v 1.4 2010-03-01 18:53:53 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2009 The Bochs Project
@ -43,6 +43,7 @@
#define BXPN_VENDOR_STRING "cpuid.vendor_string"
#define BXPN_BRAND_STRING "cpuid.brand_string"
#define BXPN_CPUID_LIMIT_WINNT "cpuid.cpuid_limit_winnt"
#define BXPN_CPUID_MMX "cpuid.mmx"
#define BXPN_CPUID_SSE "cpuid.sse"
#define BXPN_CPUID_AES "cpuid.aes"
#define BXPN_CPUID_MOVBE "cpuid.movbe"