implemented SVM emulation support for Bochs (incomplete yet)
I am merging the code in order to start making shortcuts between VMX emulation and SVM emulation. Of course SVM emulation is incomplete, completely untested and not expected to work. But someone could already take a look one the code and give some suggestions. Also looking for anybody with existing SVM kernels - as simple as possible - for testing. Status: - exceptions intercept is not implemented yet - IO intercept is not implemented yet - MSR intercept is not implemented yet - virtual interrupts are not implemented yet - CPUID is not implemented yet No advanced SVM featurez planned - I am implementing the very basic 'Pacifica' document from 2005 using QEMU code as reference.
This commit is contained in:
parent
aad2d89c83
commit
75bda1d5cd
@ -16,6 +16,7 @@
|
||||
--enable-alignment-check \
|
||||
--enable-3dnow \
|
||||
--enable-monitor-mwait \
|
||||
--enable-svm \
|
||||
--enable-vmx \
|
||||
--enable-avx \
|
||||
--enable-x86-debugger \
|
||||
|
@ -41,6 +41,7 @@ cpuid
|
||||
movbe
|
||||
xsave
|
||||
xsaveopt
|
||||
svm
|
||||
vmx
|
||||
avx
|
||||
avx_f16c
|
||||
|
@ -364,7 +364,7 @@ void bx_init_options()
|
||||
|
||||
// cpuid subtree
|
||||
#if BX_CPU_LEVEL >= 4
|
||||
bx_list_c *cpuid_param = new bx_list_c(root_param, "cpuid", "CPUID Options", 29);
|
||||
bx_list_c *cpuid_param = new bx_list_c(root_param, "cpuid", "CPUID Options", 30);
|
||||
|
||||
new bx_param_string_c(cpuid_param,
|
||||
"vendor_string",
|
||||
@ -527,7 +527,13 @@ void bx_init_options()
|
||||
0, BX_SUPPORT_VMX,
|
||||
1);
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
new bx_param_bool_c(cpuid_param,
|
||||
"svm", "Secure Virtual Machine (SVM) emulation support",
|
||||
"Secure Virtual Machine (SVM) emulation support",
|
||||
0);
|
||||
#endif
|
||||
#endif // CPU_LEVEL >= 6
|
||||
|
||||
cpuid_param->set_options(menu->SHOW_PARENT);
|
||||
|
||||
@ -2770,6 +2776,12 @@ static int parse_line_formatted(const char *context, int num_params, char *param
|
||||
} else if (!strncmp(params[i], "vmx=", 4)) {
|
||||
SIM->get_param_num(BXPN_CPUID_VMX)->set(atol(¶ms[i][4]));
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
} else if (!strncmp(params[i], "svm=", 4)) {
|
||||
if (parse_param_bool(params[i], 4, BXPN_CPUID_SVM) < 0) {
|
||||
PARSE_ERR(("%s: cpuid directive malformed.", context));
|
||||
}
|
||||
#endif
|
||||
#if BX_SUPPORT_X86_64
|
||||
} else if (!strncmp(params[i], "x86_64=", 7)) {
|
||||
if (parse_param_bool(params[i], 7, BXPN_CPUID_X86_64) < 0) {
|
||||
@ -4071,6 +4083,9 @@ int bx_write_configuration(const char *rc, int overwrite)
|
||||
#if BX_SUPPORT_VMX
|
||||
fprintf(fp, ", vmx=%d", SIM->get_param_num(BXPN_CPUID_VMX)->get());
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
fprintf(fp, ", svm=%d", SIM->get_param_num(BXPN_CPUID_SVM)->get());
|
||||
#endif
|
||||
#if BX_SUPPORT_X86_64
|
||||
fprintf(fp, ", x86_64=%d, 1g_pages=%d, pcid=%d, fsgsbase=%d",
|
||||
SIM->get_param_bool(BXPN_CPUID_X86_64)->get(),
|
||||
|
@ -654,9 +654,14 @@ typedef
|
||||
#define BX_SUPPORT_3DNOW 0
|
||||
#define BX_SUPPORT_MISALIGNED_SSE 0
|
||||
#define BX_SUPPORT_MONITOR_MWAIT 0
|
||||
#define BX_SUPPORT_SVM 0
|
||||
#define BX_SUPPORT_VMX 0
|
||||
#define BX_SUPPORT_AVX 0
|
||||
|
||||
#if BX_SUPPORT_SVM && BX_SUPPORT_X86_64 == 0
|
||||
#error "SVM require x86-64 support"
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_VMX >= 2 && BX_SUPPORT_X86_64 == 0
|
||||
#error "VMXx2 require x86-64 support"
|
||||
#endif
|
||||
|
1176
bochs/configure
vendored
1176
bochs/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -1469,6 +1469,33 @@ if test "$support_vmx" -gt 1 -a "$use_x86_64" = 0; then
|
||||
AC_MSG_ERROR([VMXx2 support require x86-64 enabled])
|
||||
fi
|
||||
|
||||
support_svm=0
|
||||
AC_MSG_CHECKING(for SVM support)
|
||||
AC_ARG_ENABLE(vmx,
|
||||
[ --enable-svm SVM (AMD: secure virtual machine) emulation],
|
||||
[if test "$enableval" = yes; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(BX_SUPPORT_SVM, 1)
|
||||
support_svm=1
|
||||
elif test "$enableval" = no; then
|
||||
AC_MSG_RESULT(no)
|
||||
AC_DEFINE(BX_SUPPORT_SVM, 0)
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
AC_DEFINE(BX_SUPPORT_SVM, 0)
|
||||
]
|
||||
)
|
||||
|
||||
if test "$support_svm" -gt 0 -a "$bx_cpu_level" -lt 6; then
|
||||
AC_MSG_ERROR([for SVM support the CPU level must be set to 6])
|
||||
fi
|
||||
|
||||
if test "$support_svm" -gt 1 -a "$use_x86_64" = 0; then
|
||||
AC_MSG_ERROR([SVM support require x86-64 enabled])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(for 3DNow! support)
|
||||
AC_ARG_ENABLE(3dnow,
|
||||
[ --enable-3dnow 3DNow! support (incomplete)],
|
||||
|
@ -132,7 +132,8 @@ OBJS64 = \
|
||||
bmi64.o \
|
||||
tbm32.o \
|
||||
tbm64.o \
|
||||
xop.o
|
||||
xop.o \
|
||||
svm.o
|
||||
|
||||
BX_INCLUDES = ../bochs.h ../config.h
|
||||
|
||||
@ -169,42 +170,42 @@ dist-clean: clean
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
access.o: access.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
access32.o: access32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
access64.o: access64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
aes.o: aes.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
apic.o: apic.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../iodev/iodev.h ../plugin.h ../extplugin.h \
|
||||
xmm.h vmx.h svm.h stack.h ../iodev/iodev.h ../plugin.h ../extplugin.h \
|
||||
../param_names.h
|
||||
arith16.o: arith16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -212,63 +213,56 @@ arith16.o: arith16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
arith32.o: arith32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
arith64.o: arith64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
arith8.o: arith8.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
avx.o: avx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h simd_int.h
|
||||
xmm.h vmx.h svm.h stack.h simd_int.h
|
||||
avx2.o: avx2.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h simd_int.h simd_compare.h
|
||||
xmm.h vmx.h svm.h stack.h simd_int.h simd_compare.h
|
||||
gather.o: gather.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xop.o: xop.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h simd_int.h simd_compare.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
avx_pfp.o: avx_pfp.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../fpu/softfloat-compare.h ../fpu/softfloat.h \
|
||||
xmm.h vmx.h svm.h stack.h ../fpu/softfloat-compare.h ../fpu/softfloat.h \
|
||||
simd_pfp.h
|
||||
avx_fma.o: avx_fma.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -276,85 +270,99 @@ avx_fma.o: avx_fma.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../fpu/softfloat-compare.h ../fpu/softfloat.h \
|
||||
xmm.h vmx.h svm.h stack.h ../fpu/softfloat-compare.h ../fpu/softfloat.h \
|
||||
simd_pfp.h
|
||||
xop.o: xop.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h svm.h stack.h simd_int.h simd_compare.h
|
||||
svm.o: svm.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h svm.h stack.h simd_int.h simd_compare.h
|
||||
bcd.o: bcd.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
bit.o: bit.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
bit16.o: bit16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
bit32.o: bit32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
bit64.o: bit64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
bmi32.o: bmi32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
bmi64.o: bmi64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
tbm32.o: tbm32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
tbm64.o: tbm64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
call_far.o: call_far.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
cpu.o: cpu.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../iodev/iodev.h ../plugin.h ../extplugin.h \
|
||||
xmm.h vmx.h svm.h stack.h ../iodev/iodev.h ../plugin.h ../extplugin.h \
|
||||
../param_names.h
|
||||
crc32.o: crc32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
@ -362,84 +370,84 @@ crc32.o: crc32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
crregs.o: crregs.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
ctrl_xfer16.o: ctrl_xfer16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
ctrl_xfer32.o: ctrl_xfer32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
ctrl_xfer64.o: ctrl_xfer64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
ctrl_xfer_pro.o: ctrl_xfer_pro.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
data_xfer16.o: data_xfer16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
data_xfer32.o: data_xfer32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
data_xfer64.o: data_xfer64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
data_xfer8.o: data_xfer8.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
debugstuff.o: debugstuff.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../disasm/disasm.h
|
||||
xmm.h vmx.h svm.h stack.h ../disasm/disasm.h
|
||||
exception.o: exception.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../param_names.h ../iodev/iodev.h ../plugin.h \
|
||||
xmm.h vmx.h svm.h stack.h ../param_names.h ../iodev/iodev.h ../plugin.h \
|
||||
../extplugin.h
|
||||
fetchdecode.o: fetchdecode.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -447,7 +455,7 @@ fetchdecode.o: fetchdecode.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h fetchdecode.h fetchdecode_x87.h fetchdecode_sse.h \
|
||||
xmm.h vmx.h svm.h stack.h fetchdecode.h fetchdecode_x87.h fetchdecode_sse.h \
|
||||
fetchdecode_avx.h fetchdecode_xop.h
|
||||
fetchdecode64.o: fetchdecode64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -455,7 +463,7 @@ fetchdecode64.o: fetchdecode64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h fetchdecode.h fetchdecode_x87.h fetchdecode_sse.h \
|
||||
xmm.h vmx.h svm.h stack.h fetchdecode.h fetchdecode_x87.h fetchdecode_sse.h \
|
||||
fetchdecode_avx.h fetchdecode_xop.h
|
||||
flag_ctrl.o: flag_ctrl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -463,49 +471,49 @@ flag_ctrl.o: flag_ctrl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
flag_ctrl_pro.o: flag_ctrl_pro.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
fpu_emu.o: fpu_emu.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
generic_cpuid.o: generic_cpuid.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h ../param_names.h generic_cpuid.h ../cpu/cpuid.h
|
||||
xmm.h vmx.h svm.h ../param_names.h generic_cpuid.h ../cpu/cpuid.h
|
||||
icache.o: icache.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
init.o: init.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../param_names.h generic_cpuid.h ../cpu/cpuid.h
|
||||
xmm.h vmx.h svm.h stack.h ../param_names.h generic_cpuid.h ../cpu/cpuid.h
|
||||
io.o: io.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../iodev/iodev.h ../plugin.h ../extplugin.h \
|
||||
xmm.h vmx.h svm.h stack.h ../iodev/iodev.h ../plugin.h ../extplugin.h \
|
||||
../param_names.h
|
||||
iret.o: iret.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
@ -513,203 +521,203 @@ iret.o: iret.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
jmp_far.o: jmp_far.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
load.o: load.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
logical16.o: logical16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
logical32.o: logical32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
logical64.o: logical64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
logical8.o: logical8.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
mmx.o: mmx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
msr.o: msr.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
mult16.o: mult16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
mult32.o: mult32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
mult64.o: mult64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
mult8.o: mult8.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
paging.o: paging.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
proc_ctrl.o: proc_ctrl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h ../param_names.h cpu.h \
|
||||
cpuid.h crregs.h descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h \
|
||||
apic.h i387.h ../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h \
|
||||
../fpu/control_w.h xmm.h vmx.h stack.h
|
||||
../fpu/control_w.h xmm.h vmx.h svm.h stack.h
|
||||
protect_ctrl.o: protect_ctrl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
resolver.o: resolver.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
ret_far.o: ret_far.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
segment_ctrl.o: segment_ctrl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
segment_ctrl_pro.o: segment_ctrl_pro.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
shift16.o: shift16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
shift32.o: shift32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
shift64.o: shift64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
shift8.o: shift8.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
smm.o: smm.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h smm.h
|
||||
xmm.h vmx.h svm.h stack.h smm.h
|
||||
soft_int.o: soft_int.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
sse.o: sse.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h simd_int.h simd_compare.h
|
||||
xmm.h vmx.h svm.h stack.h simd_int.h simd_compare.h
|
||||
sse_move.o: sse_move.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h simd_int.h
|
||||
xmm.h vmx.h svm.h stack.h simd_int.h
|
||||
sse_pfp.o: sse_pfp.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../fpu/softfloat-compare.h ../fpu/softfloat.h \
|
||||
xmm.h vmx.h svm.h stack.h ../fpu/softfloat-compare.h ../fpu/softfloat.h \
|
||||
simd_pfp.h
|
||||
sse_rcp.o: sse_rcp.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -717,77 +725,77 @@ sse_rcp.o: sse_rcp.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../fpu/softfloat-specialize.h ../fpu/softfloat.h
|
||||
xmm.h vmx.h svm.h stack.h ../fpu/softfloat-specialize.h ../fpu/softfloat.h
|
||||
sse_string.o: sse_string.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
stack16.o: stack16.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
stack32.o: stack32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
stack64.o: stack64.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
string.o: string.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
tasking.o: tasking.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
../cpudb.h ../gui/paramtree.h ../memory/memory.h ../pc_system.h \
|
||||
../gui/gui.h ../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h \
|
||||
descriptor.h instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
vm8086.o: vm8086.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
vmcs.o: vmcs.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
vmexit.o: vmexit.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
vmx.o: vmx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h ../iodev/iodev.h ../plugin.h ../extplugin.h \
|
||||
xmm.h vmx.h svm.h stack.h ../iodev/iodev.h ../plugin.h ../extplugin.h \
|
||||
../param_names.h
|
||||
vmfunc.o: vmfunc.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
@ -795,11 +803,11 @@ vmfunc.o: vmfunc.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debu
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
xsave.o: xsave.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../config.h ../osdep.h ../gui/siminterface.h ../cpudb.h \
|
||||
../gui/paramtree.h ../memory/memory.h ../pc_system.h ../gui/gui.h \
|
||||
../instrument/stubs/instrument.h cpu.h cpuid.h crregs.h descriptor.h \
|
||||
instr.h ia_opcodes.h lazy_flags.h icache.h apic.h i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
xmm.h vmx.h stack.h
|
||||
xmm.h vmx.h svm.h stack.h
|
||||
|
@ -826,6 +826,10 @@ typedef struct {
|
||||
#include "vmx.h"
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
#include "svm.h"
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_MONITOR_MWAIT
|
||||
struct monitor_addr_t {
|
||||
|
||||
@ -859,6 +863,9 @@ public: // for now...
|
||||
#if BX_SUPPORT_VMX
|
||||
Bit32u vmx_extensions_bitmask;
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
Bit32u svm_extensions_bitmask;
|
||||
#endif
|
||||
|
||||
#define BX_CPUID_SUPPORT_ISA_EXTENSION(feature) \
|
||||
(BX_CPU_THIS_PTR isa_extensions_bitmask & (feature))
|
||||
@ -869,6 +876,9 @@ public: // for now...
|
||||
#define BX_SUPPORT_VMX_EXTENSION(feature) \
|
||||
(BX_CPU_THIS_PTR vmx_extensions_bitmask & (feature))
|
||||
|
||||
#define BX_SUPPORT_SVM_EXTENSION(feature) \
|
||||
(BX_CPU_THIS_PTR svm_extensions_bitmask & (feature))
|
||||
|
||||
// General register set
|
||||
// rax: accumulator
|
||||
// rbx: base
|
||||
@ -1004,6 +1014,14 @@ public: // for now...
|
||||
VMX_CAP vmx_cap;
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
bx_bool in_svm;
|
||||
bx_bool in_svm_guest;
|
||||
bx_bool svm_gif; /* global interrupt enable flag, when zero all external interrupt disabled */
|
||||
bx_phy_address vmcbptr;
|
||||
VMCB_CACHE vmcb;
|
||||
#endif
|
||||
|
||||
bx_bool EXT; /* 1 if processing external interrupt or exception
|
||||
* or if not related to current instruction,
|
||||
* 0 if current CS:IP caused exception */
|
||||
@ -2541,6 +2559,17 @@ public: // for now...
|
||||
BX_SMF BX_INSF_TYPE VMFUNC(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
/* VMX instructions */
|
||||
|
||||
/* SVM instructions */
|
||||
BX_SMF BX_INSF_TYPE VMRUN(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
BX_SMF BX_INSF_TYPE VMMCALL(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
BX_SMF BX_INSF_TYPE VMLOAD(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
BX_SMF BX_INSF_TYPE VMSAVE(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
BX_SMF BX_INSF_TYPE SKINIT(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
BX_SMF BX_INSF_TYPE CLGI(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
BX_SMF BX_INSF_TYPE STGI(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
BX_SMF BX_INSF_TYPE INVLPGA(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
/* SVM instructions */
|
||||
|
||||
/* SMX instructions */
|
||||
BX_SMF BX_INSF_TYPE GETSEC(bxInstruction_c *) BX_CPP_AttrRegparmN(1);
|
||||
/* SMX instructions */
|
||||
@ -4021,6 +4050,7 @@ public: // for now...
|
||||
BX_SMF BX_CPP_INLINE int bx_cpuid_support_x2apic(void);
|
||||
BX_SMF BX_CPP_INLINE int bx_cpuid_support_smx(void);
|
||||
BX_SMF BX_CPP_INLINE int bx_cpuid_support_vmx(void);
|
||||
BX_SMF BX_CPP_INLINE int bx_cpuid_support_svm(void);
|
||||
BX_SMF BX_CPP_INLINE int bx_cpuid_support_rdtscp(void);
|
||||
BX_SMF BX_CPP_INLINE int bx_cpuid_support_tsc_deadline(void);
|
||||
|
||||
@ -4214,6 +4244,30 @@ public: // for now...
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
BX_SMF void SvmEnterSaveHostState(SVM_HOST_STATE *host);
|
||||
BX_SMF bx_bool SvmEnterLoadCheckControls(bx_phy_address vmcb_addr, SVM_CONTROLS *ctrls);
|
||||
BX_SMF bx_bool SvmEnterLoadCheckGuestState(bx_phy_address vmcb_addr);
|
||||
BX_SMF void Svm_Vmexit(int reason);
|
||||
BX_SMF void SvmExitLoadHostState(SVM_HOST_STATE *host);
|
||||
BX_SMF Bit8u vmcb_read8(bx_phy_address vmcb_addr, unsigned offset);
|
||||
BX_SMF Bit16u vmcb_read16(bx_phy_address vmcb_addr, unsigned offset);
|
||||
BX_SMF Bit32u vmcb_read32(bx_phy_address vmcb_addr, unsigned offset);
|
||||
BX_SMF Bit64u vmcb_read64(bx_phy_address vmcb_addr, unsigned offset);
|
||||
BX_SMF void vmcb_write8(bx_phy_address vmcb_addr, unsigned offset, Bit8u val_8);
|
||||
BX_SMF void vmcb_write16(bx_phy_address vmcb_addr, unsigned offset, Bit16u val_16);
|
||||
BX_SMF void vmcb_write32(bx_phy_address vmcb_addr, unsigned offset, Bit32u val_32);
|
||||
BX_SMF void vmcb_write64(bx_phy_address vmcb_addr, unsigned offset, Bit64u val_64);
|
||||
BX_SMF void svm_segment_read(bx_phy_address vmcbaddr, bx_segment_reg_t *seg, unsigned offset);
|
||||
BX_SMF void svm_segment_write(bx_phy_address vmcbaddr, bx_segment_reg_t *seg, unsigned offset);
|
||||
BX_SMF void SvmInjectEvents(bx_phy_address vmcbaddr);
|
||||
BX_SMF void SvmInterceptException(bxInstruction_c *i, unsigned vector,
|
||||
Bit16u errcode, bx_bool errcode_valid, Bit64u qualification = 0);
|
||||
BX_SMF void SvmInterceptIO(bxInstruction_c *i, unsigned op, Bit32u msr);
|
||||
BX_SMF void SvmInterceptMSR(bxInstruction_c *i, unsigned port, unsigned len);
|
||||
BX_SMF void register_svm_state(bx_param_c *parent);
|
||||
#endif
|
||||
|
||||
#if BX_CONFIGURE_MSRS
|
||||
int load_MSRs(const char *file);
|
||||
#endif
|
||||
@ -4461,6 +4515,11 @@ BX_CPP_INLINE bx_bool BX_CPU_C::alignment_check(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
BX_CPP_INLINE int BX_CPU_C::bx_cpuid_support_svm(void)
|
||||
{
|
||||
return (BX_CPU_THIS_PTR isa_extensions_bitmask & BX_ISA_SVM);
|
||||
}
|
||||
|
||||
BX_CPP_INLINE int BX_CPU_C::bx_cpuid_support_smx(void)
|
||||
{
|
||||
return (BX_CPU_THIS_PTR isa_extensions_bitmask & BX_ISA_SMX);
|
||||
|
@ -82,7 +82,7 @@ athlon64_clawhammer.o: athlon64_clawhammer.@CPP_SUFFIX@ ../../bochs.h \
|
||||
../../gui/gui.h ../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h \
|
||||
../crregs.h ../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h \
|
||||
../icache.h ../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
athlon64_clawhammer.h ../../cpu/cpuid.h
|
||||
atom_n270.o: atom_n270.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep.h \
|
||||
../../bx_debug/debug.h ../../config.h ../../osdep.h \
|
||||
@ -91,7 +91,7 @@ atom_n270.o: atom_n270.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep.h \
|
||||
../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h ../crregs.h \
|
||||
../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h ../icache.h \
|
||||
../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
../../param_names.h atom_n270.h
|
||||
core2_penryn_t9600.o: core2_penryn_t9600.@CPP_SUFFIX@ ../../bochs.h ../../config.h \
|
||||
../../osdep.h ../../bx_debug/debug.h ../../config.h ../../osdep.h \
|
||||
@ -100,7 +100,7 @@ core2_penryn_t9600.o: core2_penryn_t9600.@CPP_SUFFIX@ ../../bochs.h ../../config
|
||||
../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h ../crregs.h \
|
||||
../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h ../icache.h \
|
||||
../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
../../param_names.h core2_penryn_t9600.h ../../cpu/cpuid.h
|
||||
core_duo_t2400_yonah.o: core_duo_t2400_yonah.@CPP_SUFFIX@ ../../bochs.h \
|
||||
../../config.h ../../osdep.h ../../bx_debug/debug.h ../../config.h \
|
||||
@ -109,7 +109,7 @@ core_duo_t2400_yonah.o: core_duo_t2400_yonah.@CPP_SUFFIX@ ../../bochs.h \
|
||||
../../gui/gui.h ../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h \
|
||||
../crregs.h ../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h \
|
||||
../icache.h ../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
../../param_names.h core_duo_t2400_yonah.h
|
||||
corei7_sandy_bridge_2600K.o: corei7_sandy_bridge_2600K.@CPP_SUFFIX@ ../../bochs.h \
|
||||
../../config.h ../../osdep.h ../../bx_debug/debug.h ../../config.h \
|
||||
@ -118,7 +118,7 @@ corei7_sandy_bridge_2600K.o: corei7_sandy_bridge_2600K.@CPP_SUFFIX@ ../../bochs.
|
||||
../../gui/gui.h ../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h \
|
||||
../crregs.h ../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h \
|
||||
../icache.h ../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
../../param_names.h corei7_sandy_bridge_2600K.h ../../cpu/cpuid.h
|
||||
corei5_arrandale_m520.o: corei5_arrandale_m520.@CPP_SUFFIX@ ../../bochs.h \
|
||||
../../config.h ../../osdep.h ../../bx_debug/debug.h ../../config.h \
|
||||
@ -127,7 +127,7 @@ corei5_arrandale_m520.o: corei5_arrandale_m520.@CPP_SUFFIX@ ../../bochs.h \
|
||||
../../gui/gui.h ../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h \
|
||||
../crregs.h ../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h \
|
||||
../icache.h ../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
../../param_names.h corei5_arrandale_m520.h ../../cpu/cpuid.h
|
||||
p2_klamath.o: p2_klamath.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep.h \
|
||||
../../bx_debug/debug.h ../../config.h ../../osdep.h \
|
||||
@ -136,7 +136,7 @@ p2_klamath.o: p2_klamath.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep.h
|
||||
../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h ../crregs.h \
|
||||
../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h ../icache.h \
|
||||
../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
p2_klamath.h
|
||||
p3_katmai.o: p3_katmai.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep.h \
|
||||
../../bx_debug/debug.h ../../config.h ../../osdep.h \
|
||||
@ -145,7 +145,7 @@ p3_katmai.o: p3_katmai.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep.h \
|
||||
../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h ../crregs.h \
|
||||
../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h ../icache.h \
|
||||
../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h p3_katmai.h
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h p3_katmai.h
|
||||
p4_prescott_celeron_336.o: p4_prescott_celeron_336.@CPP_SUFFIX@ ../../bochs.h \
|
||||
../../config.h ../../osdep.h ../../bx_debug/debug.h ../../config.h \
|
||||
../../osdep.h ../../gui/siminterface.h ../../cpudb.h \
|
||||
@ -153,7 +153,7 @@ p4_prescott_celeron_336.o: p4_prescott_celeron_336.@CPP_SUFFIX@ ../../bochs.h \
|
||||
../../gui/gui.h ../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h \
|
||||
../crregs.h ../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h \
|
||||
../icache.h ../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
../../param_names.h p4_prescott_celeron_336.h ../../cpu/cpuid.h
|
||||
p4_willamette.o: p4_willamette.@CPP_SUFFIX@ ../../bochs.h ../../config.h \
|
||||
../../osdep.h ../../bx_debug/debug.h ../../config.h ../../osdep.h \
|
||||
@ -162,7 +162,7 @@ p4_willamette.o: p4_willamette.@CPP_SUFFIX@ ../../bochs.h ../../config.h \
|
||||
../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h ../crregs.h \
|
||||
../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h ../icache.h \
|
||||
../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
../../param_names.h p4_willamette.h
|
||||
pentium_mmx.o: pentium_mmx.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep.h \
|
||||
../../bx_debug/debug.h ../../config.h ../../osdep.h \
|
||||
@ -171,7 +171,7 @@ pentium_mmx.o: pentium_mmx.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep
|
||||
../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h ../crregs.h \
|
||||
../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h ../icache.h \
|
||||
../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
pentium_mmx.h
|
||||
amd_k6_2_chomper.o: amd_k6_2_chomper.@CPP_SUFFIX@ ../../bochs.h ../../config.h ../../osdep.h \
|
||||
../../bx_debug/debug.h ../../config.h ../../osdep.h \
|
||||
@ -180,5 +180,5 @@ amd_k6_2_chomper.o: amd_k6_2_chomper.@CPP_SUFFIX@ ../../bochs.h ../../config.h .
|
||||
../../instrument/stubs/instrument.h ../cpu.h ../cpuid.h ../crregs.h \
|
||||
../descriptor.h ../instr.h ../ia_opcodes.h ../lazy_flags.h ../icache.h \
|
||||
../apic.h ../i387.h ../../fpu/softfloat.h ../../fpu/tag_w.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h \
|
||||
../../fpu/status_w.h ../../fpu/control_w.h ../xmm.h ../vmx.h ../svm.h \
|
||||
amd_k6_2_chomper.h
|
||||
|
@ -44,6 +44,9 @@ public:
|
||||
#if BX_SUPPORT_VMX
|
||||
virtual Bit32u get_vmx_extensions_bitmask(void) const { return 0; }
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
virtual Bit32u get_svm_extensions_bitmask(void) const { return 0; }
|
||||
#endif
|
||||
|
||||
virtual void get_cpuid_leaf(Bit32u function, Bit32u subfunction, cpuid_function_t *leaf) const = 0;
|
||||
|
||||
@ -106,6 +109,7 @@ typedef bx_cpuid_t* (*bx_create_cpuid_method)(BX_CPU_C *cpu);
|
||||
#define BX_ISA_FMA4 (BX_CONST64(1) << 34) /* FMA4 instruction (AMD) */
|
||||
#define BX_ISA_XOP (BX_CONST64(1) << 35) /* XOP instruction (AMD) */
|
||||
#define BX_ISA_TBM (BX_CONST64(1) << 36) /* TBM instruction (AMD) */
|
||||
#define BX_ISA_SVM (BX_CONST64(1) << 37) /* SVM instruction (AMD) */
|
||||
|
||||
// cpuid non-ISA features
|
||||
#define BX_CPU_DEBUG_EXTENSIONS (1 << 0) /* Debug Extensions support */
|
||||
|
@ -56,6 +56,10 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::MOV_DdRd(bxInstruction_c *i)
|
||||
exception(BX_GP_EXCEPTION, 0);
|
||||
}
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (SVM_DR_WRITE_INTERCEPTED(i->nnn())) Svm_Vmexit(SVM_VMEXIT_DR0_WRITE + i->nnn());
|
||||
#endif
|
||||
|
||||
invalidate_prefetch_q();
|
||||
|
||||
/* This instruction is always treated as a register-to-register,
|
||||
@ -161,6 +165,10 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::MOV_RdDd(bxInstruction_c *i)
|
||||
exception(BX_GP_EXCEPTION, 0);
|
||||
}
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (SVM_DR_READ_INTERCEPTED(i->nnn())) Svm_Vmexit(SVM_VMEXIT_DR0_READ + i->nnn());
|
||||
#endif
|
||||
|
||||
/* This instruction is always treated as a register-to-register,
|
||||
* regardless of the encoding of the MOD field in the MODRM byte.
|
||||
*/
|
||||
@ -233,6 +241,10 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::MOV_DqRq(bxInstruction_c *i)
|
||||
exception(BX_GP_EXCEPTION, 0);
|
||||
}
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (SVM_DR_WRITE_INTERCEPTED(i->nnn())) Svm_Vmexit(SVM_VMEXIT_DR0_WRITE + i->nnn());
|
||||
#endif
|
||||
|
||||
invalidate_prefetch_q();
|
||||
|
||||
/* This instruction is always treated as a register-to-register,
|
||||
@ -339,6 +351,10 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::MOV_RqDq(bxInstruction_c *i)
|
||||
exception(BX_GP_EXCEPTION, 0);
|
||||
}
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (SVM_DR_READ_INTERCEPTED(i->nnn())) Svm_Vmexit(SVM_VMEXIT_DR0_READ + i->nnn());
|
||||
#endif
|
||||
|
||||
/* This instruction is always treated as a register-to-register,
|
||||
* regardless of the encoding of the MOD field in the MODRM byte.
|
||||
*/
|
||||
|
@ -202,9 +202,9 @@ struct bx_efer_t {
|
||||
IMPLEMENT_CRREG_ACCESSORS(LMA, 10);
|
||||
#endif
|
||||
IMPLEMENT_CRREG_ACCESSORS(NXE, 11);
|
||||
#if BX_SUPPORT_X86_64
|
||||
IMPLEMENT_CRREG_ACCESSORS(SVME, 12); /* AMD Secure Virtual Machine */
|
||||
IMPLEMENT_CRREG_ACCESSORS(LMSLE, 13); /* AMD Long Mode Segment Limit */
|
||||
#if BX_SUPPORT_X86_64
|
||||
IMPLEMENT_CRREG_ACCESSORS(FFXSR, 14);
|
||||
#endif
|
||||
|
||||
|
@ -411,14 +411,14 @@ static const BxOpcodeInfo_t BxOpcodeInfoG7[64+8] = {
|
||||
/* 0F 01 D5 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D6 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D7 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D8 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D9 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DA */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DB */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DC */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DD */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DE */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DF */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D8 */ { 0, BX_IA_VMRUN },
|
||||
/* 0F 01 D9 */ { 0, BX_IA_VMMCALL },
|
||||
/* 0F 01 DA */ { 0, BX_IA_VMLOAD },
|
||||
/* 0F 01 DB */ { 0, BX_IA_VMSAVE },
|
||||
/* 0F 01 DC */ { 0, BX_IA_STGI },
|
||||
/* 0F 01 DD */ { 0, BX_IA_CLGI },
|
||||
/* 0F 01 DE */ { 0, BX_IA_SKINIT },
|
||||
/* 0F 01 DF */ { 0, BX_IA_INVLPGA },
|
||||
/* 0F 01 E0 */ { 0, BX_IA_SMSW_Ew },
|
||||
/* 0F 01 E1 */ { 0, BX_IA_SMSW_Ew },
|
||||
/* 0F 01 E2 */ { 0, BX_IA_SMSW_Ew },
|
||||
@ -490,14 +490,14 @@ static const BxOpcodeInfo_t BxOpcodeInfoG7q[64+8] = {
|
||||
/* 0F 01 D5 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D6 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D7 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D8 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D9 */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DA */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DB */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DC */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DD */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DE */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 DF */ { 0, BX_IA_ERROR },
|
||||
/* 0F 01 D8 */ { 0, BX_IA_VMRUN },
|
||||
/* 0F 01 D9 */ { 0, BX_IA_VMMCALL },
|
||||
/* 0F 01 DA */ { 0, BX_IA_VMLOAD },
|
||||
/* 0F 01 DB */ { 0, BX_IA_VMSAVE },
|
||||
/* 0F 01 DC */ { 0, BX_IA_STGI },
|
||||
/* 0F 01 DD */ { 0, BX_IA_CLGI },
|
||||
/* 0F 01 DE */ { 0, BX_IA_SKINIT },
|
||||
/* 0F 01 DF */ { 0, BX_IA_INVLPGA },
|
||||
/* 0F 01 E0 */ { 0, BX_IA_SMSW_Ew },
|
||||
/* 0F 01 E1 */ { 0, BX_IA_SMSW_Ew },
|
||||
/* 0F 01 E2 */ { 0, BX_IA_SMSW_Ew },
|
||||
|
@ -171,6 +171,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::CMC(bxInstruction_c *i)
|
||||
|
||||
BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::PUSHF_Fw(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_PUSHF)) Svm_Vmexit(SVM_VMEXIT_PUSHF);
|
||||
}
|
||||
#endif
|
||||
|
||||
Bit16u flags = (Bit16u) read_eflags();
|
||||
|
||||
if (v8086_mode()) {
|
||||
@ -199,6 +205,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::PUSHF_Fw(bxInstruction_c *i)
|
||||
|
||||
BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::POPF_Fw(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_POPF)) Svm_Vmexit(SVM_VMEXIT_POPF);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Build a mask of the following bits:
|
||||
// x,NT,IOPL,OF,DF,IF,TF,SF,ZF,x,AF,x,PF,x,CF
|
||||
Bit32u changeMask = EFlagsOSZAPCMask | EFlagsTFMask | EFlagsDFMask | EFlagsNTMask;
|
||||
@ -257,6 +269,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::POPF_Fw(bxInstruction_c *i)
|
||||
|
||||
BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::PUSHF_Fd(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_PUSHF)) Svm_Vmexit(SVM_VMEXIT_PUSHF);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (v8086_mode() && (BX_CPU_THIS_PTR get_IOPL()<3)) {
|
||||
BX_DEBUG(("PUSHFD: #GP(0) in v8086 mode"));
|
||||
exception(BX_GP_EXCEPTION, 0);
|
||||
@ -270,6 +288,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::PUSHF_Fd(bxInstruction_c *i)
|
||||
|
||||
BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::POPF_Fd(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_POPF)) Svm_Vmexit(SVM_VMEXIT_POPF);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Build a mask of the following bits:
|
||||
// ID,VIP,VIF,AC,VM,RF,x,NT,IOPL,OF,DF,IF,TF,SF,ZF,x,AF,x,PF,x,CF
|
||||
Bit32u changeMask = EFlagsOSZAPCMask | EFlagsTFMask |
|
||||
@ -314,6 +338,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::POPF_Fd(bxInstruction_c *i)
|
||||
#if BX_SUPPORT_X86_64
|
||||
BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::PUSHF_Fq(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_PUSHF)) Svm_Vmexit(SVM_VMEXIT_PUSHF);
|
||||
}
|
||||
#endif
|
||||
|
||||
// VM & RF flags cleared in image stored on the stack
|
||||
push_64(read_eflags() & 0x00fcffff);
|
||||
|
||||
@ -322,6 +352,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::PUSHF_Fq(bxInstruction_c *i)
|
||||
|
||||
BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::POPF_Fq(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_POPF)) Svm_Vmexit(SVM_VMEXIT_POPF);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Build a mask of the following bits:
|
||||
// ID,VIP,VIF,AC,VM,RF,x,NT,IOPL,OF,DF,IF,TF,SF,ZF,x,AF,x,PF,x,CF
|
||||
Bit32u changeMask = EFlagsOSZAPCMask | EFlagsTFMask | EFlagsDFMask
|
||||
|
@ -864,6 +864,25 @@ void bx_generic_cpuid_t::init_isa_extensions_bitmask(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
static unsigned svm_enabled = SIM->get_param_num(BXPN_CPUID_SVM)->get();
|
||||
if (svm_enabled) {
|
||||
features_bitmask |= BX_ISA_SVM;
|
||||
|
||||
if (! x86_64_enabled) {
|
||||
BX_PANIC(("PANIC: SVM emulation requires x86-64 support !"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_VMX && BX_SUPPORT_SVM
|
||||
if (vmx_enabled && svm_enabled) {
|
||||
BX_PANIC(("PANIC: VMX and SVM emulation cannot be enabled together in same configuration !"));
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // CPU_LEVEL >= 6
|
||||
|
||||
#endif // CPU_LEVEL >= 5
|
||||
@ -976,6 +995,22 @@ void bx_generic_cpuid_t::init_vmx_extensions_bitmask(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
void bx_generic_cpuid_t::init_svm_extensions_bitmask(void)
|
||||
{
|
||||
Bit32u features_bitmask = 0;
|
||||
|
||||
/*
|
||||
static bx_bool svm_enabled = SIM->get_param_bool(BXPN_CPUID_SVM)->get();
|
||||
if (svm_enabled) {
|
||||
// do smth
|
||||
}
|
||||
*/
|
||||
|
||||
this->svm_extensions_bitmask = features_bitmask;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Get CPU version information:
|
||||
*
|
||||
|
@ -41,6 +41,9 @@ public:
|
||||
#if BX_SUPPORT_VMX
|
||||
virtual Bit32u get_vmx_extensions_bitmask(void) const { return vmx_extensions_bitmask; }
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
virtual Bit32u get_svm_extensions_bitmask(void) const { return svm_extensions_bitmask; }
|
||||
#endif
|
||||
|
||||
virtual void get_cpuid_leaf(Bit32u function, Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
|
||||
@ -52,12 +55,18 @@ private:
|
||||
#if BX_SUPPORT_VMX
|
||||
void init_vmx_extensions_bitmask(void);
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
void init_svm_extensions_bitmask(void);
|
||||
#endif
|
||||
|
||||
Bit64u isa_extensions_bitmask;
|
||||
Bit32u cpu_extensions_bitmask;
|
||||
#if BX_SUPPORT_VMX
|
||||
Bit32u vmx_extensions_bitmask;
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
Bit32u svm_extensions_bitmask;
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SMP
|
||||
unsigned nprocessors;
|
||||
|
@ -1366,13 +1366,24 @@ bx_define_opcode(BX_IA_VMWRITE_GqEq, &BX_CPU_C::VMWRITE, &BX_CPU_C::VMWRITE, BX_
|
||||
bx_define_opcode(BX_IA_INVEPT, &BX_CPU_C::INVEPT, &BX_CPU_C::BxError, BX_ISA_VMX, 0)
|
||||
bx_define_opcode(BX_IA_INVVPID, &BX_CPU_C::INVVPID, &BX_CPU_C::BxError, BX_ISA_VMX, 0)
|
||||
#endif
|
||||
bx_define_opcode(BX_IA_VMFUNC, &BX_CPU_C::VMFUNC, &BX_CPU_C::VMFUNC, BX_ISA_VMX, 0)
|
||||
bx_define_opcode(BX_IA_VMFUNC, &BX_CPU_C::BxError, &BX_CPU_C::VMFUNC, BX_ISA_VMX, 0)
|
||||
// VMX
|
||||
|
||||
// SMX
|
||||
bx_define_opcode(BX_IA_GETSEC, &BX_CPU_C::GETSEC, &BX_CPU_C::GETSEC, BX_ISA_SMX, 0)
|
||||
// SMX
|
||||
|
||||
// SVM
|
||||
bx_define_opcode(BX_IA_VMRUN, &BX_CPU_C::BxError, &BX_CPU_C::VMRUN, BX_ISA_SVM, 0)
|
||||
bx_define_opcode(BX_IA_VMMCALL, &BX_CPU_C::BxError, &BX_CPU_C::VMMCALL, BX_ISA_SVM, 0)
|
||||
bx_define_opcode(BX_IA_VMLOAD, &BX_CPU_C::BxError, &BX_CPU_C::VMLOAD, BX_ISA_SVM, 0)
|
||||
bx_define_opcode(BX_IA_VMSAVE, &BX_CPU_C::BxError, &BX_CPU_C::VMSAVE, BX_ISA_SVM, 0)
|
||||
bx_define_opcode(BX_IA_STGI, &BX_CPU_C::BxError, &BX_CPU_C::STGI, BX_ISA_SVM, 0)
|
||||
bx_define_opcode(BX_IA_CLGI, &BX_CPU_C::BxError, &BX_CPU_C::CLGI, BX_ISA_SVM, 0)
|
||||
bx_define_opcode(BX_IA_SKINIT, &BX_CPU_C::BxError, &BX_CPU_C::SKINIT, BX_ISA_SVM, 0)
|
||||
bx_define_opcode(BX_IA_INVLPGA, &BX_CPU_C::BxError, &BX_CPU_C::INVLPGA, BX_ISA_SVM, 0)
|
||||
// SVM
|
||||
|
||||
#if BX_CPU_LEVEL >= 6
|
||||
bx_define_opcode(BX_IA_INVPCID, &BX_CPU_C::INVPCID, &BX_CPU_C::BxError, BX_ISA_INVPCID, 0)
|
||||
#endif
|
||||
|
@ -607,6 +607,10 @@ void BX_CPU_C::register_state(void)
|
||||
register_vmx_state(cpu);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_VMX
|
||||
register_svm_state(cpu);
|
||||
#endif
|
||||
|
||||
BXRS_HEX_PARAM_SIMPLE32(cpu, async_event);
|
||||
BXRS_PARAM_BOOL(cpu, INTR, INTR);
|
||||
|
||||
@ -980,6 +984,8 @@ void BX_CPU_C::reset(unsigned source)
|
||||
BX_CPU_THIS_PTR efer_suppmask |= (BX_EFER_SCE_MASK | BX_EFER_LME_MASK | BX_EFER_LMA_MASK);
|
||||
if (BX_CPUID_SUPPORT_CPU_EXTENSION(BX_CPU_FFXSR))
|
||||
BX_CPU_THIS_PTR efer_suppmask |= BX_EFER_FFXSR_MASK;
|
||||
if (BX_CPUID_SUPPORT_CPU_EXTENSION(BX_ISA_SVM))
|
||||
BX_CPU_THIS_PTR efer_suppmask |= BX_EFER_SVME_MASK;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1099,6 +1105,11 @@ void BX_CPU_C::reset(unsigned source)
|
||||
/*BX_IA32_FEATURE_CONTROL_LOCK_BIT | */BX_IA32_FEATURE_CONTROL_VMX_ENABLE_BIT;
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
BX_CPU_THIS_PTR in_svm = BX_CPU_THIS_PTR in_svm_guest = 0;
|
||||
BX_CPU_THIS_PTR svm_gif = 1;
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SMP
|
||||
// notice if I'm the bootstrap processor. If not, do the equivalent of
|
||||
// a HALT instruction.
|
||||
|
@ -478,6 +478,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::INVLPG(bxInstruction_c* i)
|
||||
VMexit_INVLPG(i, laddr);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_INVLPG)) Svm_Vmexit(SVM_VMEXIT_INVLPG);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_X86_64
|
||||
if (IsCanonical(laddr))
|
||||
#endif
|
||||
|
@ -48,6 +48,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::PAUSE(bxInstruction_c *i)
|
||||
VMexit_PAUSE(i);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_PAUSE)) Svm_Vmexit(SVM_VMEXIT_PAUSE);
|
||||
}
|
||||
#endif
|
||||
|
||||
BX_NEXT_INSTR(i);
|
||||
}
|
||||
|
||||
@ -72,6 +78,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::CPUID(bxInstruction_c *i)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_CPUID)) Svm_Vmexit(SVM_VMEXIT_CPUID);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct cpuid_function_t leaf;
|
||||
BX_CPU_THIS_PTR cpuid->get_cpuid_leaf(EAX, ECX, &leaf);
|
||||
|
||||
@ -135,6 +147,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::HLT(bxInstruction_c *i)
|
||||
VMexit_HLT(i);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_HLT)) Svm_Vmexit(SVM_VMEXIT_HLT);
|
||||
}
|
||||
#endif
|
||||
|
||||
// stops instruction execution and places the processor in a
|
||||
// HALT state. An enabled interrupt, NMI, or reset will resume
|
||||
// execution. If interrupt (including NMI) is used to resume
|
||||
@ -177,6 +195,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::INVD(bxInstruction_c *i)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_INVD)) Svm_Vmexit(SVM_VMEXIT_INVD);
|
||||
}
|
||||
#endif
|
||||
|
||||
invalidate_prefetch_q();
|
||||
|
||||
BX_DEBUG(("INVD: Flush internal caches !"));
|
||||
@ -403,10 +427,16 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::RDPMC(bxInstruction_c *i)
|
||||
if (BX_CPU_THIS_PTR cr4.get_PCE() || CPL==0 || real_mode()) {
|
||||
|
||||
#if BX_SUPPORT_VMX
|
||||
if (BX_CPU_THIS_PTR in_vmx_guest)
|
||||
if (BX_CPU_THIS_PTR in_vmx_guest)
|
||||
VMexit_RDPMC(i);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_RDPMC)) Svm_Vmexit(SVM_VMEXIT_RDPMC);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* According to manual, Pentium 4 has 18 counters,
|
||||
* previous versions have two. And the P4 also can do
|
||||
* short read-out (EDX always 0). Otherwise it is
|
||||
@ -449,6 +479,10 @@ Bit64u BX_CPU_C::get_TSC(void)
|
||||
#if BX_SUPPORT_VMX
|
||||
if (BX_CPU_THIS_PTR in_vmx_guest)
|
||||
tsc += VMX_TSC_Offset();
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest)
|
||||
tsc += BX_CPU_THIS_PTR vmcb.ctrls.tsc_offset;
|
||||
#endif
|
||||
return tsc;
|
||||
}
|
||||
@ -467,25 +501,28 @@ void BX_CPU_C::set_TSC(Bit64u newval)
|
||||
BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::RDTSC(bxInstruction_c *i)
|
||||
{
|
||||
#if BX_CPU_LEVEL >= 5
|
||||
if (! BX_CPU_THIS_PTR cr4.get_TSD() || CPL==0) {
|
||||
|
||||
#if BX_SUPPORT_VMX
|
||||
if (BX_CPU_THIS_PTR in_vmx_guest)
|
||||
VMexit_RDTSC(i);
|
||||
#endif
|
||||
|
||||
// return ticks
|
||||
Bit64u ticks = BX_CPU_THIS_PTR get_TSC();
|
||||
|
||||
RAX = GET32L(ticks);
|
||||
RDX = GET32H(ticks);
|
||||
|
||||
BX_DEBUG(("RDTSC: ticks 0x%08x:%08x", EDX, EAX));
|
||||
|
||||
} else {
|
||||
if (BX_CPU_THIS_PTR cr4.get_TSD() && CPL != 0) {
|
||||
BX_ERROR(("RDTSC: not allowed to use instruction !"));
|
||||
exception(BX_GP_EXCEPTION, 0);
|
||||
}
|
||||
|
||||
#if BX_SUPPORT_VMX
|
||||
if (BX_CPU_THIS_PTR in_vmx_guest)
|
||||
VMexit_RDTSC(i);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest)
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_RDTSC)) Svm_Vmexit(SVM_VMEXIT_RDTSC);
|
||||
#endif
|
||||
|
||||
// return ticks
|
||||
Bit64u ticks = BX_CPU_THIS_PTR get_TSC();
|
||||
|
||||
RAX = GET32L(ticks);
|
||||
RDX = GET32H(ticks);
|
||||
|
||||
BX_DEBUG(("RDTSC: ticks 0x%08x:%08x", EDX, EAX));
|
||||
#endif
|
||||
|
||||
BX_NEXT_INSTR(i);
|
||||
@ -505,24 +542,28 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::RDTSCP(bxInstruction_c *i)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (! BX_CPU_THIS_PTR cr4.get_TSD() || CPL==0) {
|
||||
|
||||
#if BX_SUPPORT_VMX
|
||||
if (BX_CPU_THIS_PTR in_vmx_guest)
|
||||
VMexit_RDTSC(i);
|
||||
#endif
|
||||
|
||||
// return ticks
|
||||
Bit64u ticks = BX_CPU_THIS_PTR get_TSC();
|
||||
|
||||
RAX = GET32L(ticks);
|
||||
RDX = GET32H(ticks);
|
||||
RCX = MSR_TSC_AUX;
|
||||
|
||||
} else {
|
||||
if (BX_CPU_THIS_PTR cr4.get_TSD() && CPL != 0) {
|
||||
BX_ERROR(("RDTSCP: not allowed to use instruction !"));
|
||||
exception(BX_GP_EXCEPTION, 0);
|
||||
}
|
||||
|
||||
#if BX_SUPPORT_VMX
|
||||
if (BX_CPU_THIS_PTR in_vmx_guest)
|
||||
VMexit_RDTSC(i);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest)
|
||||
if (SVM_INTERCEPT(1, SVM_INTERCEPT1_RDTSCP)) Svm_Vmexit(SVM_VMEXIT_RDTSCP);
|
||||
#endif
|
||||
|
||||
// return ticks
|
||||
Bit64u ticks = BX_CPU_THIS_PTR get_TSC();
|
||||
|
||||
RAX = GET32L(ticks);
|
||||
RDX = GET32H(ticks);
|
||||
RCX = MSR_TSC_AUX;
|
||||
|
||||
#endif
|
||||
|
||||
BX_NEXT_INSTR(i);
|
||||
|
@ -728,6 +728,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::SGDT_Ms(bxInstruction_c *i)
|
||||
VMexit_Instruction(i, VMX_VMEXIT_GDTR_IDTR_ACCESS);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_GDTR_READ)) Svm_Vmexit(SVM_VMEXIT_GDTR_READ);
|
||||
}
|
||||
#endif
|
||||
|
||||
Bit16u limit_16 = BX_CPU_THIS_PTR gdtr.limit;
|
||||
Bit32u base_32 = (Bit32u) BX_CPU_THIS_PTR gdtr.base;
|
||||
|
||||
@ -749,6 +755,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::SIDT_Ms(bxInstruction_c *i)
|
||||
VMexit_Instruction(i, VMX_VMEXIT_GDTR_IDTR_ACCESS);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_IDTR_READ)) Svm_Vmexit(SVM_VMEXIT_IDTR_READ);
|
||||
}
|
||||
#endif
|
||||
|
||||
Bit16u limit_16 = BX_CPU_THIS_PTR idtr.limit;
|
||||
Bit32u base_32 = (Bit32u) BX_CPU_THIS_PTR idtr.base;
|
||||
|
||||
@ -776,6 +788,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::LGDT_Ms(bxInstruction_c *i)
|
||||
VMexit_Instruction(i, VMX_VMEXIT_GDTR_IDTR_ACCESS);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_GDTR_WRITE)) Svm_Vmexit(SVM_VMEXIT_GDTR_WRITE);
|
||||
}
|
||||
#endif
|
||||
|
||||
Bit32u eaddr = (Bit32u) BX_CPU_CALL_METHODR(i->ResolveModrm, (i));
|
||||
|
||||
Bit16u limit_16 = read_virtual_word_32(i->seg(), eaddr);
|
||||
@ -805,6 +823,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::LIDT_Ms(bxInstruction_c *i)
|
||||
VMexit_Instruction(i, VMX_VMEXIT_GDTR_IDTR_ACCESS);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_IDTR_WRITE)) Svm_Vmexit(SVM_VMEXIT_IDTR_WRITE);
|
||||
}
|
||||
#endif
|
||||
|
||||
Bit32u eaddr = (Bit32u) BX_CPU_CALL_METHODR(i->ResolveModrm, (i));
|
||||
|
||||
Bit16u limit_16 = read_virtual_word_32(i->seg(), eaddr);
|
||||
@ -830,6 +854,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::SGDT64_Ms(bxInstruction_c *i)
|
||||
VMexit_Instruction(i, VMX_VMEXIT_GDTR_IDTR_ACCESS);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_GDTR_READ)) Svm_Vmexit(SVM_VMEXIT_GDTR_READ);
|
||||
}
|
||||
#endif
|
||||
|
||||
Bit16u limit_16 = BX_CPU_THIS_PTR gdtr.limit;
|
||||
Bit64u base_64 = BX_CPU_THIS_PTR gdtr.base;
|
||||
|
||||
@ -851,6 +881,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::SIDT64_Ms(bxInstruction_c *i)
|
||||
VMexit_Instruction(i, VMX_VMEXIT_GDTR_IDTR_ACCESS);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_IDTR_READ)) Svm_Vmexit(SVM_VMEXIT_IDTR_READ);
|
||||
}
|
||||
#endif
|
||||
|
||||
Bit16u limit_16 = BX_CPU_THIS_PTR idtr.limit;
|
||||
Bit64u base_64 = BX_CPU_THIS_PTR idtr.base;
|
||||
|
||||
@ -877,6 +913,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::LGDT64_Ms(bxInstruction_c *i)
|
||||
VMexit_Instruction(i, VMX_VMEXIT_GDTR_IDTR_ACCESS);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_GDTR_WRITE)) Svm_Vmexit(SVM_VMEXIT_GDTR_WRITE);
|
||||
}
|
||||
#endif
|
||||
|
||||
bx_address eaddr = BX_CPU_CALL_METHODR(i->ResolveModrm, (i));
|
||||
|
||||
Bit64u base_64 = read_virtual_qword_64(i->seg(), (eaddr + 2) & i->asize_mask());
|
||||
@ -907,6 +949,12 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::LIDT64_Ms(bxInstruction_c *i)
|
||||
VMexit_Instruction(i, VMX_VMEXIT_GDTR_IDTR_ACCESS);
|
||||
#endif
|
||||
|
||||
#if BX_SUPPORT_SVM
|
||||
if (BX_CPU_THIS_PTR in_svm_guest) {
|
||||
if (SVM_INTERCEPT(0, SVM_INTERCEPT0_IDTR_WRITE)) Svm_Vmexit(SVM_VMEXIT_IDTR_WRITE);
|
||||
}
|
||||
#endif
|
||||
|
||||
bx_address eaddr = BX_CPU_CALL_METHODR(i->ResolveModrm, (i));
|
||||
|
||||
Bit64u base_64 = read_virtual_qword_64(i->seg(), (eaddr + 2) & i->asize_mask());
|
||||
|
@ -47,6 +47,10 @@ TODO (know issues in CPU model):
|
||||
- Dual-monitor treatment of SMIs and SMM not implemented yet
|
||||
- VMENTER to not-active state not supported yet
|
||||
|
||||
[!] SMX, SVM (AMD)
|
||||
[!] SVM:
|
||||
|
||||
- Nested paging support not implemented yet
|
||||
- More?
|
||||
|
||||
|
||||
[!] TODO: Convert CPUDB to plugins and search for them in runtime
|
||||
|
@ -3140,6 +3140,8 @@ BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::GETSEC(bxInstruction_c *i)
|
||||
#if BX_SUPPORT_VMX
|
||||
void BX_CPU_C::register_vmx_state(bx_param_c *parent)
|
||||
{
|
||||
if (! bx_cpuid_support_vmx()) return;
|
||||
|
||||
// register VMX state for save/restore param tree
|
||||
bx_list_c *vmx = new bx_list_c(parent, "VMX", 9);
|
||||
|
||||
|
@ -68,6 +68,11 @@ void disassembler::RAX_Reg(const x86_insn *insn)
|
||||
dis_sprintf("%s", general_64bit_regname[rAX_REG]);
|
||||
}
|
||||
|
||||
void disassembler::RCX_Reg(const x86_insn *insn)
|
||||
{
|
||||
dis_sprintf("%s", general_64bit_regname[rCX_REG]);
|
||||
}
|
||||
|
||||
// segment registers
|
||||
void disassembler::CS(const x86_insn *insn) { dis_sprintf("%s", segment_name[CS_REG]); }
|
||||
void disassembler::DS(const x86_insn *insn) { dis_sprintf("%s", segment_name[DS_REG]); }
|
||||
|
@ -65,6 +65,7 @@
|
||||
|
||||
#define EAX_Reg &disassembler::EAX_Reg
|
||||
#define RAX_Reg &disassembler::RAX_Reg
|
||||
#define RCX_Reg &disassembler::RCX_Reg
|
||||
|
||||
#define CS &disassembler::CS
|
||||
#define DS &disassembler::DS
|
||||
|
@ -425,11 +425,22 @@ static BxDisasmOpcodeTable_t BxDisasmGroupRmXSETGET[8] = {
|
||||
/* 7 */ { 0, &Ia_Invalid }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasmGroupRmG7SVM[8] = {
|
||||
/* 0 */ { 0, &Ia_vmrun },
|
||||
/* 1 */ { 0, &Ia_vmmcall },
|
||||
/* 2 */ { 0, &Ia_vmload },
|
||||
/* 3 */ { 0, &Ia_vmsave },
|
||||
/* 4 */ { 0, &Ia_stgi },
|
||||
/* 5 */ { 0, &Ia_clgi },
|
||||
/* 6 */ { 0, &Ia_skinit },
|
||||
/* 7 */ { 0, &Ia_invlpga }
|
||||
};
|
||||
|
||||
static BxDisasmOpcodeTable_t BxDisasmGroupG7R[8] = {
|
||||
/* 0 */ { GRPSSE(G7VMX) }, // VMX
|
||||
/* 1 */ { GRPRM(MONITOR) },
|
||||
/* 2 */ { GRPRM(XSETGET) },
|
||||
/* 3 */ { 0, &Ia_Invalid },
|
||||
/* 3 */ { GRPRM(G7SVM) }, // SVM
|
||||
/* 4 */ { 0, &Ia_smsw_Ew },
|
||||
/* 5 */ { 0, &Ia_Invalid },
|
||||
/* 6 */ { 0, &Ia_lmsw_Ew },
|
||||
|
@ -76,6 +76,7 @@
|
||||
#define IA_FMA4 (BX_CONST64(1) << 34) /* FMA4 instruction (AMD) */
|
||||
#define IA_XOP (BX_CONST64(1) << 35) /* XOP instruction (AMD) */
|
||||
#define IA_TBM (BX_CONST64(1) << 36) /* TBM instruction (AMD) */
|
||||
#define IA_SVM (BX_CONST64(1) << 37) /* SVM instruction (AMD) */
|
||||
|
||||
/* general purpose bit register */
|
||||
enum {
|
||||
@ -429,6 +430,7 @@ public:
|
||||
|
||||
// 64-bit general purpose registers
|
||||
void RAX_Reg(const x86_insn *insn);
|
||||
void RCX_Reg(const x86_insn *insn);
|
||||
|
||||
// segment registers
|
||||
void CS(const x86_insn *insn);
|
||||
|
@ -162,6 +162,7 @@ Ia_cdqe = { "cdqe", "cltq", XX, XX, XX, XX, 0 },
|
||||
Ia_cflush = { "cflush", "cflush", Mb, XX, XX, XX, IA_CLFLUSH },
|
||||
Ia_clc = { "clc", "clc", XX, XX, XX, XX, 0 },
|
||||
Ia_cld = { "cld", "cld", XX, XX, XX, XX, 0 },
|
||||
Ia_clgi = { "clgi", "clgi", XX, XX, XX, XX, IA_SVM },
|
||||
Ia_cli = { "cli", "cli", XX, XX, XX, XX, 0 },
|
||||
Ia_clts = { "clts", "clts", XX, XX, XX, XX, 0 },
|
||||
Ia_cmc = { "cmc", "cmc", XX, XX, XX, XX, 0 },
|
||||
@ -493,6 +494,7 @@ Ia_Invalid = { "(invalid)", "(invalid)", XX, XX, XX, XX, 0 },
|
||||
Ia_invd = { "invd", "invd", XX, XX, XX, XX, IA_486 },
|
||||
Ia_invept_Gy_Mdq = { "invept", "invept", Gy, Mdq, XX, XX, IA_VMX },
|
||||
Ia_invlpg = { "invlpg", "invlpg", Mx, XX, XX, XX, IA_486 },
|
||||
Ia_invlpga = { "invlpga", "invlpga", RAX_Reg, RCX_Reg, XX, XX, IA_SVM },
|
||||
Ia_invpcid_Gy_Mdq = { "invpcid", "invpcid", Gy, Mdq, XX, XX, IA_INVPCID },
|
||||
Ia_invvpid_Gy_Mdq = { "invvpid", "invvpid", Gy, Mdq, XX, XX, IA_VMX },
|
||||
Ia_inw_AX_DX = { "in", "inw", AX_Reg, DX_Reg, XX, XX, 0 },
|
||||
@ -1260,6 +1262,7 @@ Ia_shrx_Gy_Ey_By = { "shrx", "shrx", Gy, Ey, By, XX, IA_BMI2 },
|
||||
Ia_shufpd_Vpd_Wpd_Ib = { "shufpd", "shufpd", Vpd, Wpd, Ib, XX, IA_SSE2 },
|
||||
Ia_shufps_Vps_Wps_Ib = { "shufps", "shufps", Vps, Wps, Ib, XX, IA_SSE },
|
||||
Ia_sidt = { "sidt", "sidt", Ms, XX, XX, XX, 0 },
|
||||
Ia_skinit = { "skinit", "skinit", RAX_Reg, XX, XX, XX, IA_SVM },
|
||||
Ia_sldt = { "sldt", "sldt", Ew, XX, XX, XX, 0 },
|
||||
Ia_smsw_Ew = { "smsw", "smsw", Ew, XX, XX, XX, 0 },
|
||||
Ia_sqrtpd_Vpd_Wpd = { "sqrtpd", "sqrtpd", Vpd, Wpd, XX, XX, IA_SSE2 },
|
||||
@ -1268,6 +1271,7 @@ Ia_sqrtsd_Vsd_Wsd = { "sqrtsd", "sqrtsd", Vsd, Wsd, XX, XX, IA_SSE2 },
|
||||
Ia_sqrtss_Vss_Wss = { "sqrtss", "sqrtss", Vss, Wss, XX, XX, IA_SSE },
|
||||
Ia_stc = { "stc", "stc", XX, XX, XX, XX, 0 },
|
||||
Ia_std = { "std", "std", XX, XX, XX, XX, 0 },
|
||||
Ia_stgi = { "stgi", "stgi", XX, XX, XX, XX, IA_SVM },
|
||||
Ia_sti = { "sti", "sti", XX, XX, XX, XX, 0 },
|
||||
Ia_stmxcsr = { "stmxcsr", "stmxcsr", Md, XX, XX, XX, IA_SSE },
|
||||
Ia_stosb_Yb_AL = { "stosb", "stosb", Yb, AL_Reg, XX, XX, 0 },
|
||||
@ -1525,6 +1529,8 @@ Ia_vminps_Vps_Hps_Wps = { "vminps", "vminps", Vps, Hps, Wps, XX, IA_AVX },
|
||||
Ia_vminsd_Vsd_Hpd_Wsd = { "vminsd", "vminsd", Vsd, Hpd, Wsd, XX, IA_AVX },
|
||||
Ia_vminss_Vss_Hps_Wss = { "vminss", "vminss", Vss, Hps, Wss, XX, IA_AVX },
|
||||
Ia_vmlaunch = { "vmlaunch", "vmlaunch", XX, XX, XX, XX, IA_VMX },
|
||||
Ia_vmload = { "vmload", "vmload", RAX_Reg, XX, XX, XX, IA_SVM },
|
||||
Ia_vmmcall = { "vmmcall", "vmmcall", XX, XX, XX, XX, IA_SVM },
|
||||
Ia_vmovapd_Vpd_Wpd = { "vmovapd", "vmovapd", Vpd, Wpd, XX, XX, IA_AVX },
|
||||
Ia_vmovapd_Wpd_Vpd = { "vmovapd", "vmovapd", Wpd, Vpd, XX, XX, IA_AVX },
|
||||
Ia_vmovaps_Vps_Wps = { "vmovaps", "vmovaps", Vps, Wps, XX, XX, IA_AVX },
|
||||
@ -1574,6 +1580,8 @@ Ia_vmptrst_Mq = { "vmptrst", "vmptrst", Mq, XX, XX, XX, IA_VMX },
|
||||
Ia_vmread_Ed_Gd = { "vmread", "vmread", Ed, Gd, XX, XX, IA_VMX },
|
||||
Ia_vmread_Eq_Gq = { "vmread", "vmread", Eq, Gq, XX, XX, IA_VMX },
|
||||
Ia_vmresume = { "vmresume", "vmresume", XX, XX, XX, XX, IA_VMX },
|
||||
Ia_vmrun = { "vmrun", "vmrun", RAX_Reg, XX, XX, XX, IA_SVM },
|
||||
Ia_vmsave = { "vmsave", "vmsave", RAX_Reg, XX, XX, XX, IA_SVM },
|
||||
Ia_vmulpd_Vpd_Hpd_Wpd = { "vmulpd", "vmulpd", Vpd, Hpd, Wpd, XX, IA_AVX },
|
||||
Ia_vmulps_Vps_Hps_Wps = { "vmulps", "vmulps", Vps, Hps, Wps, XX, IA_AVX },
|
||||
Ia_vmulsd_Vsd_Hpd_Wsd = { "vmulsd", "vmulsd", Vsd, Hpd, Wsd, XX, IA_AVX },
|
||||
|
@ -81,7 +81,7 @@ ferr.o: ferr.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h
|
||||
../cpu/crregs.h ../cpu/descriptor.h ../cpu/instr.h ../cpu/ia_opcodes.h \
|
||||
../cpu/lazy_flags.h ../cpu/icache.h ../cpu/apic.h ../cpu/i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
../cpu/xmm.h ../cpu/vmx.h ../cpu/stack.h softfloat-specialize.h \
|
||||
../cpu/xmm.h ../cpu/vmx.h ../cpu/svm.h ../cpu/stack.h softfloat-specialize.h \
|
||||
softfloat.h
|
||||
fpatan.o: fpatan.@CPP_SUFFIX@ softfloatx80.h softfloat.h ../config.h \
|
||||
softfloat-specialize.h softfloat-macros.h softfloat-round-pack.h \
|
||||
@ -95,7 +95,7 @@ fpu.o: fpu.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
|
||||
../cpu/crregs.h ../cpu/descriptor.h ../cpu/instr.h ../cpu/ia_opcodes.h \
|
||||
../cpu/lazy_flags.h ../cpu/icache.h ../cpu/apic.h ../cpu/i387.h \
|
||||
../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h ../fpu/control_w.h \
|
||||
../cpu/xmm.h ../cpu/vmx.h ../cpu/stack.h ../iodev/iodev.h ../plugin.h \
|
||||
../cpu/xmm.h ../cpu/vmx.h ../cpu/svm.h ../cpu/stack.h ../iodev/iodev.h ../plugin.h \
|
||||
../extplugin.h ../param_names.h softfloatx80.h softfloat.h \
|
||||
softfloat-specialize.h
|
||||
fpu_arith.o: fpu_arith.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
@ -105,7 +105,7 @@ fpu_arith.o: fpu_arith.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../cpu/cpuid.h ../cpu/crregs.h ../cpu/descriptor.h ../cpu/instr.h \
|
||||
../cpu/ia_opcodes.h ../cpu/lazy_flags.h ../cpu/icache.h ../cpu/apic.h \
|
||||
../cpu/i387.h ../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/stack.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/svm.h ../cpu/stack.h \
|
||||
softfloatx80.h softfloat.h softfloat-specialize.h
|
||||
fpu_compare.o: fpu_compare.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -114,7 +114,7 @@ fpu_compare.o: fpu_compare.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../cpu/cpuid.h ../cpu/crregs.h ../cpu/descriptor.h ../cpu/instr.h \
|
||||
../cpu/ia_opcodes.h ../cpu/lazy_flags.h ../cpu/icache.h ../cpu/apic.h \
|
||||
../cpu/i387.h ../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/stack.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/svm.h ../cpu/stack.h \
|
||||
softfloatx80.h softfloat.h softfloat-specialize.h
|
||||
fpu_const.o: fpu_const.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -123,7 +123,7 @@ fpu_const.o: fpu_const.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../cpu/cpuid.h ../cpu/crregs.h ../cpu/descriptor.h ../cpu/instr.h \
|
||||
../cpu/ia_opcodes.h ../cpu/lazy_flags.h ../cpu/icache.h ../cpu/apic.h \
|
||||
../cpu/i387.h ../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/stack.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/svm.h ../cpu/stack.h \
|
||||
softfloatx80.h softfloat.h softfloat-specialize.h
|
||||
fpu_load_store.o: fpu_load_store.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -132,7 +132,7 @@ fpu_load_store.o: fpu_load_store.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h
|
||||
../cpu/cpuid.h ../cpu/crregs.h ../cpu/descriptor.h ../cpu/instr.h \
|
||||
../cpu/ia_opcodes.h ../cpu/lazy_flags.h ../cpu/icache.h ../cpu/apic.h \
|
||||
../cpu/i387.h ../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/stack.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/svm.h ../cpu/stack.h \
|
||||
softfloatx80.h softfloat.h softfloat-specialize.h
|
||||
fpu_misc.o: fpu_misc.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../bx_debug/debug.h ../config.h ../osdep.h ../gui/siminterface.h \
|
||||
@ -141,7 +141,7 @@ fpu_misc.o: fpu_misc.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../cpu/cpuid.h ../cpu/crregs.h ../cpu/descriptor.h ../cpu/instr.h \
|
||||
../cpu/ia_opcodes.h ../cpu/lazy_flags.h ../cpu/icache.h ../cpu/apic.h \
|
||||
../cpu/i387.h ../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/stack.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/svm.h ../cpu/stack.h \
|
||||
softfloatx80.h softfloat.h softfloat-specialize.h
|
||||
fpu_tags.o: fpu_tags.@CPP_SUFFIX@ ../config.h softfloat.h softfloat-specialize.h \
|
||||
../cpu/i387.h ../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h \
|
||||
@ -153,7 +153,7 @@ fpu_trans.o: fpu_trans.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
|
||||
../cpu/cpuid.h ../cpu/crregs.h ../cpu/descriptor.h ../cpu/instr.h \
|
||||
../cpu/ia_opcodes.h ../cpu/lazy_flags.h ../cpu/icache.h ../cpu/apic.h \
|
||||
../cpu/i387.h ../fpu/softfloat.h ../fpu/tag_w.h ../fpu/status_w.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/stack.h \
|
||||
../fpu/control_w.h ../cpu/xmm.h ../cpu/vmx.h ../cpu/svm.h ../cpu/stack.h \
|
||||
softfloatx80.h softfloat.h softfloat-specialize.h
|
||||
fsincos.o: fsincos.@CPP_SUFFIX@ softfloatx80.h softfloat.h ../config.h \
|
||||
softfloat-specialize.h softfloat-macros.h softfloat-round-pack.h \
|
||||
|
@ -1087,8 +1087,8 @@ void bx_init_hardware()
|
||||
#if BX_SUPPORT_X86_64
|
||||
bx_bool x86_64_enabled = SIM->get_param_bool(BXPN_CPUID_X86_64)->get();
|
||||
BX_INFO((" x86-64 support: %s", x86_64_enabled?"yes":"no"));
|
||||
bx_bool xlarge_pages_enabled = SIM->get_param_bool(BXPN_CPUID_1G_PAGES)->get();
|
||||
BX_INFO((" 1G paging support: %s", xlarge_pages_enabled?"yes":"no"));
|
||||
bx_bool xlarge_enabled = SIM->get_param_bool(BXPN_CPUID_1G_PAGES)->get();
|
||||
BX_INFO((" 1G paging support: %s", xlarge_enabled?"yes":"no"));
|
||||
#else
|
||||
BX_INFO((" x86-64 support: no"));
|
||||
#endif
|
||||
@ -1115,6 +1115,10 @@ void bx_init_hardware()
|
||||
BX_INFO((" VMX support: no"));
|
||||
}
|
||||
#endif
|
||||
#if BX_SUPPORT_SVM
|
||||
bx_bool svm_enabled = SIM->get_param_bool(BXPN_CPUID_SVM)->get();
|
||||
BX_INFO((" SVM support: %s", svm_enabled?"yes":"no"));
|
||||
#endif
|
||||
#endif // BX_CPU_LEVEL >= 6
|
||||
}
|
||||
else {
|
||||
|
@ -56,6 +56,7 @@
|
||||
#define BXPN_CPUID_SEP "cpuid.sep"
|
||||
#define BXPN_CPUID_XSAVE "cpuid.xsave"
|
||||
#define BXPN_CPUID_XSAVEOPT "cpuid.xsaveopt"
|
||||
#define BXPN_CPUID_SVM "cpuid.svm"
|
||||
#define BXPN_CPUID_VMX "cpuid.vmx"
|
||||
#define BXPN_CPUID_AVX "cpuid.avx"
|
||||
#define BXPN_CPUID_AVX_F16CVT "cpuid.avx_f16c"
|
||||
|
Loading…
Reference in New Issue
Block a user