diff --git a/bochs/CHANGES b/bochs/CHANGES index a9381dad2..1916f19ed 100644 --- a/bochs/CHANGES +++ b/bochs/CHANGES @@ -1,3 +1,41 @@ +Changes in 2.6.7 (not yet released): + +- CPU / CPUDB + - Implemented AVX-512BW/AVX-512DQ/AVX-512VL extensions emulation. + - implemented AVX512-IFMA532 instructions emulation. + - implemented AVX512-VBMI instructions emulation. + - Bugfixes for CPU emulation correctness (critical fixes for AVX-512, CMPXCHG16B and VMX) + - Fixed Bochs segmentation fault crash with Handlers Chaining Speedups enabled when + compiling with gcc, especially with low optimization levels. + - Reverted removal of reporting Architectural Perfmon support in pre-defined CPUID modules. + Windows 8 and Windows 10 require Performance Monitoring to be reported to boot. + To workaround possible Windows 7 64-bit installation issues: use bx_generic CPUID module, + which doesn't report Performance Monitoring in CPUID. + +- GUI and display libraries + - Added native SDL2 GUI support to Bochs. To enable configure with --with-sdl2. + - Added new user shortcut "scrlck" (SDL/SDL2 using "Scroll Lock" for fullscreen toggle). + - Write enhanced gui debugger settings to file on exit and restore on initialization. + +- I/O Devices + - USB + - Updated xHCI model to match the latest spec version 1.10 (patch by Ben Lunt) + - Added USB port specific option 'size' for VVFAT disks (range 128M ... 128G). + If the size is not specified or invalid, it defaults to 504M. + - Hard drive / HD image + - Fixed crash when using a "fixed" type VPC image. + +- ROM BIOS + - Fixed int74_function() for 4-byte (wheel mouse) packets. + +- LGPL'd VGABIOS updated from CVS (fixed building VBE modes list) + +- Misc + - Visual Studio workspace files updated to VS2013Ex format. + - Documentation fixes and updates. + - bximage/bxcommit: removed old obsolete versions of bximage and bxcommit tools. + +------------------------------------------------------------------------- Changes in 2.6.6 (June 15, 2014): - CPU / CPUDB diff --git a/bochs/cpu/generic_cpuid.cc b/bochs/cpu/generic_cpuid.cc index 2030d0174..d63b9e363 100644 --- a/bochs/cpu/generic_cpuid.cc +++ b/bochs/cpu/generic_cpuid.cc @@ -349,6 +349,8 @@ void bx_generic_cpuid_t::get_std_cpuid_leaf_A(cpuid_function_t *leaf) const leaf->ebx = 0; leaf->ecx = 0; leaf->edx = 0; + + BX_INFO(("WARNING: Architectural Performance Monitoring is not implemented")); } BX_CPP_INLINE static Bit32u ilog2(Bit32u x) diff --git a/bochs/cpu/msr.cc b/bochs/cpu/msr.cc index a481f23e0..5ed3b22ef 100644 --- a/bochs/cpu/msr.cc +++ b/bochs/cpu/msr.cc @@ -493,6 +493,17 @@ bx_bool BX_CPP_AttrRegparmN(2) BX_CPU_C::wrmsr(Bit32u index, Bit64u val_64) switch(index) { + case BX_MSR_PERFEVTSEL0: + case BX_MSR_PERFEVTSEL1: + case BX_MSR_PERFEVTSEL2: + case BX_MSR_PERFEVTSEL3: + case BX_MSR_PERFEVTSEL4: + case BX_MSR_PERFEVTSEL5: + case BX_MSR_PERFEVTSEL6: + case BX_MSR_PERFEVTSEL7: + BX_INFO(("WRMSR: write into IA32_PERFEVTSEL%d MSR: %08x:%08x", index - BX_MSR_PERFEVTSEL0, val32_hi, val32_lo)); + return handle_unknown_wrmsr(index, val_64); + #if BX_CPU_LEVEL >= 6 case BX_MSR_SYSENTER_CS: if (! is_cpu_extension_supported(BX_ISA_SYSENTER_SYSEXIT)) {