Stanislav Shwartsman
eb348992c2
optimize POPCNT implementation
2012-09-21 14:56:56 +00:00
Stanislav Shwartsman
74f5bb1934
WBINVD not necessary havw to flush ICACHE
2012-09-21 08:55:10 +00:00
Stanislav Shwartsman
f419798ca5
fixed reset value for mtrr
2012-09-15 19:52:11 +00:00
Stanislav Shwartsman
4f6557697b
small comments updates in vmx code
2012-09-13 05:33:05 +00:00
Volker Ruppert
c2560a8d44
- fpu directory is now a subdirectory in 'cpu'
2012-09-12 21:08:40 +00:00
Stanislav Shwartsman
2c5165bc06
fix check of error_code feild on event injection
2012-09-12 04:12:58 +00:00
Stanislav Shwartsman
2f3c7ff8e4
implemented SMAP (Supervisor Mode Access Protection) from [Intel Architecture Instruction Set Extensions Programming Reference] rev14
...
fixed enabling of ADX extensions in generic CPUID when enabled through .bochsrc
Small code cleanups on the way to implementation of APIC Registers Virtualization features disclosed in recent Intel SDM rev043
2012-09-10 15:22:26 +00:00
Stanislav Shwartsman
0386f49e03
fixed comments for SHLD/SHRD instructrions and make code a little more clear
2012-09-09 17:44:42 +00:00
Stanislav Shwartsman
7e48b30b5d
fixed random freeze issues caused by commit rev11402
2012-09-06 19:51:33 +00:00
Stanislav Shwartsman
bff3ba1535
small optimization in lazy flags code
2012-09-06 19:49:14 +00:00
Stanislav Shwartsman
f1fd44b2cf
preparations for apic regs virtualization feature described in SDM rev044
2012-09-06 15:21:08 +00:00
Stanislav Shwartsman
8044a2bda6
rename i->execute field in the instruction
...
move victim cache lookup into cache lookup so traces could be linked with victim cache hits directly
2012-09-04 15:45:05 +00:00
Stanislav Shwartsman
295e3ab8db
fixed compilation warning
2012-09-02 18:38:04 +00:00
Stanislav Shwartsman
d1879b839e
increase icache size
2012-09-01 19:13:01 +00:00
Stanislav Shwartsman
86a06ff9f6
more new vmx defines
2012-08-31 15:38:28 +00:00
Stanislav Shwartsman
2a459fb9be
add more disclosed VMCS fields and vmexit codes to enums (from rev44 published today)
2012-08-31 09:25:13 +00:00
Stanislav Shwartsman
40a9992aa6
small cleanups
2012-08-28 16:05:39 +00:00
Stanislav Shwartsman
e17cffab57
simplify generated code
2012-08-26 15:49:30 +00:00
Stanislav Shwartsman
c41cbe6d56
Link traces over taken branch optimization which makes handlers chaining even more efficient.
...
I observed 5% speedup in all disk images over 2.6pre1.
The change is safe (passed all regressions) and I will be glad to make it into Bochs 2.6!
2012-08-21 19:58:41 +00:00
Stanislav Shwartsman
399168e37d
small cleanup
2012-08-19 18:44:08 +00:00
Stanislav Shwartsman
dd7b968404
SSE cvt instructions: transition from FPU to MMX state has higher priority than SSE exception (#XF/#UD)
2012-08-11 07:41:13 +00:00
Stanislav Shwartsman
df90b80352
set of small cpu fixes
2012-08-09 13:11:25 +00:00
Stanislav Shwartsman
0c11901d6b
fixed segment limit check for AVX mem access - same fix for stores
2012-08-08 20:43:07 +00:00
Stanislav Shwartsman
af9e072ad6
fixed segment limit check for AVX mem access
2012-08-08 20:39:36 +00:00
Stanislav Shwartsman
be76f38b46
correct MOVBE decoding with prefix 0x66, also correct ADX decoding
2012-08-08 20:11:27 +00:00
Stanislav Shwartsman
fee1000ba2
split PINSRB instruction to /r and /m form
2012-08-07 14:38:43 +00:00
Stanislav Shwartsman
cac261553d
Fixed stupid typo which caused incorrect VMX instr info on LDTR/TR instruction VMEXIT
2012-08-06 20:41:16 +00:00
Stanislav Shwartsman
cc694377b9
Standartization of Bochs instruction handlers.
...
Bochs instruction emulation handlers won't refer to direct fields of instructions like MODRM.NNN or MODRM.RM anymore.
Use generic source/destination indications like SRC1, SRC2 and DST.
All handlers are modified to support new notation. In addition fetchDecode module was modified to assign sources to instructions properly.
Immediate benefits:
- Removal of several duplicated handlers (FMA3 duplicated with FMA4 is a trivial example)
- Simpler to understand fetch-decode code
Future benefits:
- Integration of disassembler into Bochs CPU module, ability to disasm bx_instruction_c instance (planned)
Huge patch. Almost all source files wre modified.
2012-08-05 13:52:40 +00:00
Stanislav Shwartsman
4d03b57291
Allow larger quantum value for SMP simulations (up to 32)
...
Update CHANGES
2012-08-02 20:48:27 +00:00
Stanislav Shwartsman
d5c5c8e9e1
fixed bug produced by SVN commit rev11299 - missed case to clean
2012-08-02 20:43:14 +00:00
Stanislav Shwartsman
2e0f79d499
fixed compilation with AVX OFF but x86-64 on
2012-08-02 12:13:21 +00:00
Stanislav Shwartsman
b43ac7358e
fixed typo-like bug in smm.cc
2012-08-01 14:56:51 +00:00
Stanislav Shwartsman
a1ebdc41ac
Fixed SF bug [3548109] VMX State Not Restored After Entering SMM on 32-bit Systems
...
Fixed .conf.nothing configure script
Fixed copyright for some files
2012-07-27 08:13:39 +00:00
Stanislav Shwartsman
e0729e32b8
fixed bug 3548108 VMEXIT instruction length Not always getting updated
2012-07-26 16:03:26 +00:00
Stanislav Shwartsman
d9998269ef
added branch_eip into near branch instructiontation callbacks
2012-07-24 15:32:55 +00:00
Stanislav Shwartsman
b225c158a9
fixed link error with no x86-64
2012-07-14 08:45:43 +00:00
Volker Ruppert
61292eb45b
- missing SHELL fixes
2012-07-14 07:13:56 +00:00
Volker Ruppert
53438e92c6
- fixes based on Debian patches by Guillem Jover
...
- set SHELL variable with configure script
- add '--tag CXX' argument to libtool calls
2012-07-14 07:01:43 +00:00
Stanislav Shwartsman
5d66e8450e
implemented ADCX/ADOX instructions from rev013 of arch extensions published by Intel
2012-07-12 14:51:54 +00:00
Stanislav Shwartsman
bafde35c9c
Intel Architecture
...
Instruction Set Extensions
Programming Reference
rev013
was published including RDSEED and ADCX/ADOX instructions
add CPUID bits and VMX controls mentioned in the document
2012-07-11 18:58:00 +00:00
Stanislav Shwartsman
ec06475dbf
improve x86 hw breakpoint handling
2012-07-11 15:07:54 +00:00
Stanislav Shwartsman
58dde88887
VME is for CPU_LEVEL>=5 only
2012-07-08 18:16:25 +00:00
Stanislav Shwartsman
1964ef679a
fixed compilation with x86-64 disabled
2012-07-01 14:46:27 +00:00
Stanislav Shwartsman
874ba7388d
coding style change
2012-06-30 19:33:49 +00:00
Stanislav Shwartsman
39f3051ce5
fixed opcode primitive used for AVX instructions reading only half register (8byte) from the memory
2012-06-30 19:31:32 +00:00
Stanislav Shwartsman
16ecab5644
trying to guess real HW behavior for (V)DPPS/(V)DPPD instructions
2012-06-30 18:19:22 +00:00
Stanislav Shwartsman
f12396566c
added CR8 to control registers print in debugger
2012-06-28 18:27:26 +00:00
Stanislav Shwartsman
3415f7bb0f
add XD bit to page attributes print
2012-06-28 10:59:30 +00:00
Stanislav Shwartsman
79628a2f4f
fixed VME corner case
2012-06-27 15:09:10 +00:00
Stanislav Shwartsman
4c38969ef0
fixed uninitialized variables
2012-06-24 17:52:45 +00:00
Stanislav Shwartsman
48ae41a2fd
fixed MASKMOVDQU SSE instruction to match hardware
2012-06-23 16:25:52 +00:00
Stanislav Shwartsman
515d8b5c25
add new instrumentation callbacks for physical memory access from CPU
2012-06-18 11:41:26 +00:00
Stanislav Shwartsman
720a9b2fb7
fixed 64-bit segment print from internal debugger
2012-06-14 18:56:47 +00:00
Stanislav Shwartsman
171d400bd8
GATHER: update gather mask handling to match latest Intel SDM definition
...
Fixes in x86 HW breakpoint handling
2012-06-06 14:01:45 +00:00
Stanislav Shwartsman
6782efde05
correctly initialize lazy flags on reset
2012-06-05 20:53:22 +00:00
Stanislav Shwartsman
832d3a09a3
compile fix for SMP disable
2012-06-05 11:42:07 +00:00
Stanislav Shwartsman
a604818ecf
fixed another valgrind issue
2012-06-05 11:40:59 +00:00
Stanislav Shwartsman
efcca3e9d4
fixup VCVTPH2PS instruction implementation to match published Intel SDM
2012-06-05 11:36:50 +00:00
Stanislav Shwartsman
37e193d49c
clean one more valgrind issue
2012-06-04 19:21:23 +00:00
Stanislav Shwartsman
5192d09655
fixed some more valgrind issues
2012-06-04 18:46:07 +00:00
Stanislav Shwartsman
7bae496840
fixed valgrind issues in apic initialization and generic cpuid reported in SF bug report
2012-06-04 14:27:34 +00:00
Stanislav Shwartsman
bd6330d480
small optimization for debugger
2012-06-03 18:46:20 +00:00
Stanislav Shwartsman
2ee3386c37
cpu bugfixes
2012-05-31 14:25:49 +00:00
Stanislav Shwartsman
f528290652
fixed bug EPT Access Dirty support
2012-05-27 19:17:13 +00:00
Stanislav Shwartsman
8e7f582bc3
correct init.cc fix - copy/paste issue
2012-05-20 19:02:29 +00:00
Stanislav Shwartsman
3f32517201
small fix for save/restore
2012-05-20 18:58:57 +00:00
Stanislav Shwartsman
f9540f1c24
- Improved CPU status restore after restoring from Bochs saved image
...
- Changed many BX_ERROR messages about VMX VMEXIT takesn to BX_DEBUG
2012-05-19 20:36:40 +00:00
Stanislav Shwartsman
2644ef5f63
another had_vex/had_xop fix
2012-05-19 19:46:10 +00:00
Stanislav Shwartsman
59eb1318d5
small fix
2012-05-19 19:38:57 +00:00
Stanislav Shwartsman
ffc5e4bf2d
optimize x2apic reg write
2012-05-12 19:07:18 +00:00
Stanislav Shwartsman
08d4655886
X2APIC: incorrect write to self IPI X2APIC register (with reserved bits set) should not trigger the self IPI
2012-05-12 12:49:05 +00:00
Stanislav Shwartsman
03162d86f5
LAPIC: fixed timer interrupts after reloading of LAPIC Timer Divide Configuration register
2012-05-12 11:52:29 +00:00
Stanislav Shwartsman
9ea0987396
fixed send_ipi case in x2apic
2012-05-12 08:07:30 +00:00
Stanislav Shwartsman
6180a0a733
remove unused leafs from generic_cpuid
2012-05-11 06:51:04 +00:00
Stanislav Shwartsman
b5c5082ff2
Completely remove b1() field from bxInstruction structure and resuse it for AVX instructions flags.
...
the iaOpcode field has no masking anymore.
fixed bug during the code reorganization:
+ XOP: Fixed instructions with operands order depending on VEX.W (fixed VEX.W read from instruction object)
2012-05-11 06:35:16 +00:00
Volker Ruppert
53e1a5d204
- fixed typo (file names are case sensitive on Linux and others)
2012-05-08 18:33:26 +00:00
Stanislav Shwartsman
f01e5f3e11
removed b1() from shift methods in CPU - lead to removal of b1() field from bxInstruction_c
2012-05-08 16:42:15 +00:00
Stanislav Shwartsman
708fc666c8
Added Corei7 ivyBridge configuration to CPUDB
2012-05-07 12:31:22 +00:00
Stanislav Shwartsman
9d802e2762
very small cleanup
2012-05-05 18:40:37 +00:00
Stanislav Shwartsman
2188322ab3
fixed CR8 SVM intercepts
2012-05-03 16:12:58 +00:00
Stanislav Shwartsman
39c14ef0d1
Implemented EPT A/D extensions support.
...
Bochs is fully aligned with the latest published revision of
Intel Architecture Manual (revision 043) now.
2012-05-02 18:11:39 +00:00
Stanislav Shwartsman
e12494bf7b
fixed segfault when setting ESP/EIP in GUI debugger
2012-04-16 19:18:23 +00:00
Stanislav Shwartsman
c7c431f88e
bx_instr_mem_data_access became completely obsolete with new stack optimization merged into SVN.
...
It already had limited usability before. With stack direct access optimization the callback won't be called for stack accesses as well.
See note by Brian Slechta:
=== Cut Hete ===
While using Bochs as a reference model for simulations, the simulator needs
information about what loads/stores are taking place with each instruction.
Presumably, that is what the BX_INSTR_MEM_DATA() instrumentation macros
cover (which is the place where our simulator hooks up).
The RETnear_xxx() functions call access_linear() directly, rather than call
read_virtual_xxx() functions. This is a problem for code making use of the
BX_INSTR_MEM_DATA() hook because it does not get called for these
instructions. Should this be changed along with some other instructions
that exhibit this?
=== Cut Hete ===
For Bryan's usage bx_instr_lin_access and bx_instr_phy_read/bx_instr_phy_write callbacks should be used.
2012-04-11 19:01:25 +00:00
Stanislav Shwartsman
59e13d5299
fixed compilation error with 386/486 and internal dbger enabled
2012-04-11 18:11:14 +00:00
Stanislav Shwartsman
a68ad9a7f6
small code optimization
2012-04-06 09:41:58 +00:00
Stanislav Shwartsman
a6f0ca70ff
more robust SVM fix
2012-04-04 19:55:36 +00:00
Stanislav Shwartsman
72a00ce9dd
improved debug prints in MOV to/from CR
...
SVM bugfix
remove redundant TLB flush call from SVM and VMX code
2012-04-04 19:31:02 +00:00
Stanislav Shwartsman
279c61dc67
updated + fixed instrumentation example for instr histogram, code cleanup in the cpu
2012-03-28 21:11:19 +00:00
Stanislav Shwartsman
90fc12d9e4
switching between compatibility and long64 mode also affect SS.BASE which is always zero in long64 mode
2012-03-27 15:21:40 +00:00
Stanislav Shwartsman
e7a4a1bec8
surprisingly, opensuse 12.1 requre alignment check support in hardware so I can't disable it by default for all configurations.
...
but in case you want a few %% of extra emulation performance - it is still possible to disable it with configure option.
most guests I saw do not use it !
2012-03-26 19:33:38 +00:00
Stanislav Shwartsman
8b78f6ca2c
fixed prev commit
2012-03-26 19:24:20 +00:00
Stanislav Shwartsman
97a6d0ad46
missed ;
2012-03-26 19:08:28 +00:00
Stanislav Shwartsman
547678e8bd
fixed compilation error in 386 config. also fixed bugs in tasking code found by new assertion added in stack.cc new code
2012-03-26 19:05:58 +00:00
Stanislav Shwartsman
bfca96f8ce
added TLB contents to param tree for debugger purposes. Nopw the TLB could be browsed through param-tree in debugger and GUI debugger as well
2012-03-25 20:56:18 +00:00
Stanislav Shwartsman
d4688e8b95
- Do not compile support for alignment check (#AC exception) by default
...
for CPU emulation performance reasons, the alignment check compilation
still can be enabled using configure option --enable-alignment-check.
There is no software in the world which enable #AC exception checking, this
x86 feature is completely legacy but its emulation support costs up to 3-5%
emulation speed.
The checking for #AC exception enable still will be done, if
CPL == 3, EFLAGS.AC = 1 and CR0.AM = 1
but the alignment check is not compiled in, the Bochs will PANIC with corresponding message.
You can press 'always continue' and ignore the PANIC, the simulation will continue as if alignment checking is not enabled.
2012-03-25 19:07:17 +00:00
Stanislav Shwartsman
3ca29cbdf3
stack direct access optimization - 5% emu speedup to all 32-bit guests, for 64-bit guests speedup is less because they have less stack accesses
2012-03-25 11:54:32 +00:00
Stanislav Shwartsman
b5a33e82ac
fixed a lot of code duplication in debugging/instrumentation of mem access
2012-03-20 18:26:04 +00:00
Stanislav Shwartsman
e1506e3e29
some cleanup in CPU code + patch SVM SS.DPL instead of failing VMRUN
2012-03-19 19:24:15 +00:00
Stanislav Shwartsman
a8565cdfc3
added missed line in MSR fix
2012-03-17 12:07:27 +00:00
Stanislav Shwartsman
bd4aa017fe
Lazy flags improvement patch by Darek Mihocka - measured 5% speedup everywhere accross the board
...
The problem with Parity is it is generally referenced very rarely so the current lazy flags code is not efficient to updated Parify flag only (because it updates low 8 bits of .result value the existing Zero Flag has to be shadowed in .auxbits.
So I flipped it around, to make Parity be shadowed in auxbits. .result now is only needed to derive Zero Flag, and both Sign and Parify are derived from .result + .auxbits (as Zero Flag is now). For the 90% of the conditional jumps that are JZ or JNZ, this is a speedup.
Parity is now derived from 8 bits in .result and 8 bits in .auxbits, and Sign is derived from one flag in .result and 1 bit in .auxbits by XOR-ing them all together. It makes the code sequences for SAHF and POPF simpler too.
2012-03-17 08:51:52 +00:00
Stanislav Shwartsman
5a33b1be84
mvoed MWAIT_IS_NOP option from CPUID to CPU - it has meaning even if CPUID tree is not used because CPU is configured with CPUDB pre-defined configuration
2012-03-15 19:46:57 +00:00
Stanislav Shwartsman
9d5d33632c
VMX: Fixed reading of VMX MSR-HI (0xC0000000 <= index <= 0xC0001FFF) bitmaps / Fixed memory overflow
2012-03-14 19:42:06 +00:00
Stanislav Shwartsman
a9d03340d6
correctly handle EFER.LMA and EFER.LME with unrestricted guests
2012-03-14 19:17:27 +00:00
Stanislav Shwartsman
a668ff9908
small code optimization
2012-03-13 19:41:10 +00:00
Stanislav Shwartsman
25ffaeeea8
fixed VMX issue + small code reorg
2012-03-13 15:18:21 +00:00
Stanislav Shwartsman
9c27d279b9
removed incorrect BX_INFO msg
2012-03-07 20:07:57 +00:00
Stanislav Shwartsman
562c8c91d1
fixed FMA4 instructions sources
2012-03-06 15:18:35 +00:00
Stanislav Shwartsman
bde2f4d829
correctly handle #UD because of XOP.VVV
2012-03-05 19:48:55 +00:00
Stanislav Shwartsman
95e4191cd1
any vex instruction must use VEX.VVV or #UD
2012-03-04 17:56:22 +00:00
Stanislav Shwartsman
c52d97cb7f
fixed comments in paging.cc
2012-02-28 22:39:33 +00:00
Stanislav Shwartsman
1f14c171ed
rename some SSE handlers
2012-02-28 18:53:58 +00:00
Stanislav Shwartsman
d4541f1a88
removed dedicated handler for MOVNTI - can be replaced with existing handlers
2012-02-27 15:50:43 +00:00
Stanislav Shwartsman
959ab435cf
fixed compilation err with SVM
2012-02-24 21:31:31 +00:00
Stanislav Shwartsman
86c7033a63
name cpu log functions in lower case
2012-02-23 19:31:02 +00:00
Stanislav Shwartsman
1599031869
changed BX_INFO back to BX_DEBUG
2012-02-19 20:16:10 +00:00
Stanislav Shwartsman
f48317affc
SVM: Added EXITINFO2 write on VMEXIT (missed in prev commit)
...
Added phenom_8650_toliman <AMD Phenom X3 8650 (Toliman)> comment into .bochsrc example with all other supported CPU configs.
Added missed SVM definitions into Toliman CPUDB module
2012-02-19 20:15:23 +00:00
Stanislav Shwartsman
92376fb693
svm updates
2012-02-19 12:16:58 +00:00
Stanislav Shwartsman
c70a42c5d7
merged patch ftom SF bug 3459998 Bochs cannot be compiled outside the source tree
2012-02-19 12:16:14 +00:00
Stanislav Shwartsman
c2670b40d5
small cleanup in paging code
2012-02-15 19:49:35 +00:00
Stanislav Shwartsman
2f7e5ab3a3
fixed bugs in toliman configuration
2012-02-14 22:01:50 +00:00
Stanislav Shwartsman
5c02e7cebd
do not need to load PAE PDPTRs if going to nested paging mode
2012-02-14 12:36:39 +00:00
Stanislav Shwartsman
bb7a648d91
Major commit !
...
------------
Implemented SVN nested paging support - the Virtual Box boots perfectly with Nested Paging guest !
A lot of code duplication was added for now - major cleanup will follow later.
! Added AMD Phenom X3 8650 (Toliman) configuration to the CPUDB - this configuration has Nested Paging enabled.
Some CPUID modules rework done to enable Toliman configuration.
Ckean up 'executable' attribute from all CPU source files.
2012-02-13 23:29:01 +00:00
Stanislav Shwartsman
deaf58b130
read from CPUDB svm extensions
2012-02-13 21:55:27 +00:00
Stanislav Shwartsman
813fe4e6b9
reduce code duplication - continue preparing for nested paging implementation
2012-02-13 20:06:04 +00:00
Stanislav Shwartsman
4d0a5c1b07
- VMX: EPT misconfiguration should always take priority above EPT permissions violation (translate_guest_physical corner case bug)
...
- VMX: EPT reserved bits set should cause EPT misconfiguration and not EPT violation
- VMX: EPT walk for guest CR3 address should be considered as 'page walk'
2012-02-12 21:30:22 +00:00
Stanislav Shwartsman
0b5f798af1
re-commit changes from SVN rev11026 which were accidentially undo'ed by last Volker's commit
2012-02-12 19:13:57 +00:00
Volker Ruppert
de94b08a1a
- class bx_list_c now contains a chained list of parameters. Removed the now
...
obsolete maxsize parameter from all lists.
2012-02-12 18:43:20 +00:00
Stanislav Shwartsman
855d2adece
cleanups in paging code
2012-02-12 16:09:35 +00:00
Stanislav Shwartsman
fa182e96b5
for future nested paging: under NP PDPTR CACHE will contain NP PDPTR entries
2012-02-10 20:39:46 +00:00
Stanislav Shwartsman
b497077b70
intel disclosed more cpuid bits
2012-02-08 19:54:22 +00:00
Stanislav Shwartsman
9bebe91826
eliminate duplicated cpu methods by adding extra param to opcodes with no modrm
2012-02-03 10:24:59 +00:00
Stanislav Shwartsman
14ec87768e
expand FCMOV function to 8 different functions - each one is much simpler to implement and understand
2012-02-01 12:07:53 +00:00
Stanislav Shwartsman
2e44613032
dos2unix for avx_pfp.cc
2012-01-30 15:29:22 +00:00
Stanislav Shwartsman
457c56c822
fixup for EPT paging
2012-01-22 18:39:15 +00:00
Stanislav Shwartsman
fc6712e3a3
undo part of prev paging commit
2012-01-19 20:01:32 +00:00
Stanislav Shwartsman
12afed23a1
small fix and cleanups in paging code
2012-01-19 06:38:22 +00:00
Stanislav Shwartsman
9461797886
added extra param to debugger phy access callback + cleanup in vmexit functions
2012-01-17 21:50:15 +00:00
Stanislav Shwartsman
f4b49633d4
paging code rework (cont)
2012-01-17 18:20:55 +00:00
Stanislav Shwartsman
0d64a6cb92
fixed paging bug in previous commit
2012-01-16 15:26:25 +00:00
Stanislav Shwartsman
7d641450ec
remove param from check_entry_PAE function - it is always the same for all calls
2012-01-15 20:25:39 +00:00
Stanislav Shwartsman
c7cb99787e
rework in paging code before nested paging implementation for SVM - step 2
...
optimize TLB flush code
2012-01-15 19:38:00 +00:00
Stanislav Shwartsman
4db23355cd
rework in paging code before nested paging implementation for SVM - step 1
2012-01-15 17:54:13 +00:00
Stanislav Shwartsman
f5d55f5eb6
- Implemented Task Switch intercept in SVM, cleanup in task switch handling code
...
- Changed (c) year in several cpu files
- Cleanup and indent fixes in VMX code
2012-01-11 20:21:29 +00:00
Stanislav Shwartsman
cb366e00c5
fixed code duplication in exceptions
2012-01-11 06:27:35 +00:00
Stanislav Shwartsman
ba7887f31c
fixed code duplication with v86 interrupt redirection
2012-01-10 08:13:34 +00:00
Stanislav Shwartsman
8d698c7087
fixed compilation err ith cpu-level=5 and cleanups
2012-01-09 20:52:15 +00:00
Stanislav Shwartsman
87b1c31495
fixed SVM VmEXIT on #PF error code
2012-01-09 20:24:23 +00:00
Stanislav Shwartsman
f64c38dfaf
fix in SVM event injection
2012-01-09 20:15:15 +00:00
Stanislav Shwartsman
2900956327
Split back some frequently used arithmetic and logic opcodes (which were done as Load+Op before).
2012-01-09 13:09:59 +00:00
Stanislav Shwartsman
35bfe11c3d
SVM: forgot to save RFLAGS in guest state
2012-01-08 19:46:38 +00:00
Stanislav Shwartsman
a531f8081c
fixed compilation with cpu-level=5
2012-01-08 16:58:14 +00:00
Stanislav Shwartsman
76ee7b499b
svm updates
2012-01-08 14:09:51 +00:00
Stanislav Shwartsman
9261b2fa14
removed param_names.h include where not needed anymore
2012-01-07 17:54:19 +00:00
Stanislav Shwartsman
7defa74261
cleaned up code duplication in CPUDB classes
2012-01-07 17:06:03 +00:00
Stanislav Shwartsman
a804adac46
fixed compilation err with SMP enabled
2012-01-07 16:45:25 +00:00
Stanislav Shwartsman
edfff5bf44
fixed VMX+EPT VirtualBox failures
2012-01-06 10:30:07 +00:00
Stanislav Shwartsman
e2ff4bc6d4
clear exitinfo1/2 fields in SVM on VMENTER
2012-01-05 22:23:05 +00:00
Stanislav Shwartsman
665d4568ee
convert most popular svn/vmx msgs to bx_debug - can be used together with enabling log options per device from .bochsrc
2012-01-05 19:42:58 +00:00
Stanislav Shwartsman
fddccfb498
code cleanup + copy/paste removal
2012-01-04 21:36:39 +00:00
Stanislav Shwartsman
0e17f8f195
implemented AMD APIC extensions for SVM support
2012-01-04 16:06:37 +00:00
Stanislav Shwartsman
8c8fa8ec25
vmx cleanups
2012-01-03 20:27:40 +00:00
Stanislav Shwartsman
c857488ed9
Added Corei5 750 (Lynnfield) configuration to the CPUDB
2012-01-02 20:59:02 +00:00
Stanislav Shwartsman
3b98634045
show EFER in debug print outside long mode too
2012-01-02 20:06:03 +00:00
Stanislav Shwartsman
5847e772a6
set async_event when injecting virq to SVM guest
2012-01-01 21:22:56 +00:00
Stanislav Shwartsman
269d5e3443
more SVM fixes
2012-01-01 20:26:23 +00:00
Stanislav Shwartsman
810aa1b67c
fixes for SVN. also turion64_tyler supports RDTSCP - include it in CPUID
2012-01-01 17:54:41 +00:00
Stanislav Shwartsman
30d90c1dc1
more SVM fixes
2011-12-31 20:10:11 +00:00
Stanislav Shwartsman
b97a108d93
SVM: allow entering vm8086 and also paged real mode
2011-12-31 16:33:36 +00:00
Stanislav Shwartsman
a0b5ff48ec
more SVM fixes
2011-12-31 14:22:51 +00:00
Stanislav Shwartsman
3c0d712146
SVM fixes
2011-12-31 13:58:55 +00:00
Stanislav Shwartsman
fe6741d84d
fixed SVM bug
2011-12-31 13:26:55 +00:00
Stanislav Shwartsman
fe6328d18c
correctly enable SVM support in internal CPU features list
2011-12-31 12:58:20 +00:00
Stanislav Shwartsman
46d8a5894e
removed bad RDMSR/WRMSR check which disabled access to AMD extended MSRs
2011-12-31 12:37:35 +00:00
Stanislav Shwartsman
560e3ca254
compilation fix for smp=0
2011-12-30 18:55:19 +00:00
Stanislav Shwartsman
cee8a3b9ef
AMD's core has special 0x80000008.ecx value
2011-12-30 18:53:41 +00:00
Stanislav Shwartsman
088ab4832f
turion64 tyler supports cmpxchg16b
2011-12-30 18:46:46 +00:00
Stanislav Shwartsman
2a0d989755
fixed compilation err with SVm w/o VMX
2011-12-30 12:24:22 +00:00
Stanislav Shwartsman
93523a657d
remove patch that always kept IF set after HLT - not needed anymore
2011-12-30 08:50:01 +00:00
Stanislav Shwartsman
abda3a967c
added two AMD CPUs to CPUDB
2011-12-29 14:23:22 +00:00
Stanislav Shwartsman
5da69a6fb4
fixed typo - invalid CPUID leaf should go to max std leaf
2011-12-28 21:59:39 +00:00
Stanislav Shwartsman
2b854cb101
added basic (very basic) SVM CPUID into generic_cpuid module
2011-12-28 21:54:51 +00:00
Stanislav Shwartsman
0a14f08f16
completing SVM coding, missed - CPUID, extended APIC
2011-12-28 16:12:28 +00:00
Stanislav Shwartsman
864ea23b5b
take events handling logic from cpu.cc to new file event.cc
2011-12-28 12:26:45 +00:00
Stanislav Shwartsman
2b8371f2b6
implemented SVM_GIF handling
2011-12-27 20:46:15 +00:00
Stanislav Shwartsman
7f5f917a34
more SVM implementation
2011-12-27 19:42:11 +00:00
Stanislav Shwartsman
c32eaa5d05
added more svm intercepts
2011-12-26 20:51:57 +00:00
Stanislav Shwartsman
6ae86a059b
firt cleanup in SVM code. added intercept check for MSR and IO
2011-12-26 19:57:39 +00:00
Stanislav Shwartsman
8b4a2c2034
implemented some more intercepts.
...
fixed compilation without SVM
2011-12-26 16:33:13 +00:00
Stanislav Shwartsman
bfcbb81602
SVM:
...
- IO intercept is not implemented yet
- MSR intercept is not implemented yet
VMX:
Fixed Bochs PANIC crash when doing I/O access crossing VMX I/O permission bitmaps.
This can happen because access_physical_read and access_physical_write cannot access memory cross 4K boundary.
2011-12-25 22:09:31 +00:00
Stanislav Shwartsman
ea6dfe3dc0
added svm files
2011-12-25 20:01:48 +00:00
Stanislav Shwartsman
01080243d4
complation fix
2011-12-25 19:58:21 +00:00
Stanislav Shwartsman
a44c1b8e1e
SVM and VMX share tsc offset code
2011-12-25 19:53:23 +00:00
Stanislav Shwartsman
75bda1d5cd
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.
2011-12-25 19:35:29 +00:00
Stanislav Shwartsman
2dee4b12be
added VMX .bochsrc option to ctoggle VMX ON/OFF on runtime
2011-12-21 09:11:51 +00:00
Stanislav Shwartsman
e7ed8aca5c
move inhibit interrrupts functionality to icount interface
2011-12-21 06:17:45 +00:00
Stanislav Shwartsman
7cdeecf198
VMX: fixed VirtualBox VMX guest Guru Meditation - FS.BASE get corrupted after saving/restoring unusable selector
2011-12-19 16:06:53 +00:00
Stanislav Shwartsman
6cc03432d9
improve VMX debug print
2011-12-18 21:04:30 +00:00
Stanislav Shwartsman
f6203dae7d
instrumentation: added special indication for indirect call/jump
2011-12-18 18:11:56 +00:00
Stanislav Shwartsman
9763643106
VMX: Fixed VMFUNC instruction behavior to align with Intel SDM revision 041
2011-12-17 14:06:23 +00:00
Stanislav Shwartsman
cbbd8bfd46
fixed some warnings after compilation with msvcpp 2010
2011-12-10 18:58:25 +00:00
Stanislav Shwartsman
ac0ebc9728
added debug prints about vmcs initialization
2011-12-09 19:57:40 +00:00
Stanislav Shwartsman
f496e78326
fixed compilation warning
2011-12-02 19:40:31 +00:00
Stanislav Shwartsman
1e3e6ff2af
BMI: fixed EFLAGS after BMI instructions (set EFLAGS while preserving PF was not implemented properly in 2.5 release)
2011-11-29 19:50:26 +00:00
Stanislav Shwartsman
b8f2d91b9a
fixed compilation err
2011-11-28 21:16:40 +00:00
Stanislav Shwartsman
99bec5155e
fixed compilation err in instrumentation module
2011-11-28 10:08:03 +00:00
Stanislav Shwartsman
8cb359fab5
fixed flags handling for BMI instructions
2011-11-27 13:23:26 +00:00
Stanislav Shwartsman
100622e958
fix ULL suffix for 64bit int, use BX_CONST64 instead
2011-11-26 19:01:53 +00:00
Stanislav Shwartsman
f09bdf353a
RDMSR can also read TSC so make it end-of-trace as well (same as RDTSC)
2011-11-24 16:03:51 +00:00
Stanislav Shwartsman
f660d3dc68
implemented missed XOP instructions FRCZPS/PD/SS/SD + update CHANGES with fixed bugs
2011-11-24 11:34:26 +00:00
Stanislav Shwartsman
c74f590077
implemented TSC-Deadline APIC timer mode
2011-11-21 12:51:50 +00:00
Stanislav Shwartsman
e4bd200119
do not report TSC Deadline for Sandy Bridge CPUID - not implemented yet
2011-11-20 18:25:39 +00:00
Stanislav Shwartsman
9be8552b80
- Implemented VM Functions support and EPTP-Switching VM Functions
...
- Added VMEXIT conditions for INVPCID instruction
Now Bochs is fully aligned with latest pulished Intel's SDM rev040.
2011-11-05 07:31:51 +00:00
Stanislav Shwartsman
42a0a178eb
disasm for XOP instructions
2011-10-30 08:58:49 +00:00
Stanislav Shwartsman
ad9bdbe550
fixed compilation failure
2011-10-21 08:06:55 +00:00
Stanislav Shwartsman
b1a6b34616
implemented PERMIL2PS/PERMIL2PD XOP instructions
2011-10-20 17:37:57 +00:00
Stanislav Shwartsman
ddecc0234a
fixed (c) info
2011-10-20 14:06:12 +00:00
Stanislav Shwartsman
3035fcd0af
implemented XOP FMADCSWD/FMADCSSWD instructions
2011-10-20 13:55:26 +00:00
Stanislav Shwartsman
5d9bbae71c
bugfix: cant use ib2 it is overlap with disp32
2011-10-19 21:28:36 +00:00
Stanislav Shwartsman
5cc04b9955
Implemented AMDs Buldozer XOP and TBM extensions.
...
XOP: few instructions are still missing, coming soon
BX_PANIC(("VPERMILPS_VpsHpsWpsVIbR: not implemented yet"));
BX_PANIC(("VPERMILPD_VpdHpdWpdVIbR: not implemented yet"));
BX_PANIC(("VPMADCSSWD_VdqHdqWdqVIbR: not implemented yet"));
BX_PANIC(("VPMADCSWD_VdqHdqWdqVIbR: not implemented yet"));
BX_PANIC(("VFRCZPS_VpsWpsR: not implemented yet"));
BX_PANIC(("VFRCZPD_VpdWpdR: not implemented yet"));
BX_PANIC(("VFRCZSS_VssWssR: not implemented yet"));
BX_PANIC(("VFRCZSD_VsdWsdR: not implemented yet"));
2011-10-19 20:54:04 +00:00
Stanislav Shwartsman
314171bb56
fixed compilation w/o AVX
2011-10-09 13:56:39 +00:00
Stanislav Shwartsman
71cbff104b
fixing xsave/xrstor flows with AVX
2011-10-09 09:19:49 +00:00
Stanislav Shwartsman
8ada4ce5e4
added to cpudb: Intel(R) Core(TM) i5 M 520 (Arrandale) - based on Westmere arch
2011-10-07 19:32:44 +00:00
Stanislav Shwartsman
2580d8c46d
added FMA4 AMD instructions support, fixed mem access length for Intel scalar FMA instructions
2011-10-07 14:09:35 +00:00
Stanislav Shwartsman
aad57310c2
disasm for FMA4, better dbg print SSE rounding control with MXCSR
2011-10-06 20:33:10 +00:00
Stanislav Shwartsman
8a9b8f4622
MXCSR.FUZ is ignoired for F16 instructions
2011-10-03 15:08:22 +00:00
Stanislav Shwartsman
e282b5e88d
Move DAZ handling into softfloat library (for float16, float32 and float64 only) and cleanup SSE and AVX code
...
Fix decoding of opcodes with VEX.W=1 in 32-bit mode (AVX2, FMA)
2011-10-01 15:40:36 +00:00
Stanislav Shwartsman
f425400af5
fixed warnings from compilation with mingw-gcc 4.6.1
2011-09-30 20:38:18 +00:00
Stanislav Shwartsman
e5d0540365
commit new added files
2011-09-29 22:38:38 +00:00
Stanislav Shwartsman
6751af5d8e
added AVX FMA extensions support. The implementation is based on QEMU patch by Peter Maydell (fixed)
2011-09-29 22:20:56 +00:00
Stanislav Shwartsman
275194fb32
#GP on reading VMX_EPT_VPID_CAP MSR when EPT and VPID disabled
2011-09-26 20:36:26 +00:00
Stanislav Shwartsman
f0d9f8fab7
added some comments
2011-09-26 20:10:15 +00:00
Stanislav Shwartsman
0547c8823e
compilation w/o x86-64
2011-09-26 19:48:58 +00:00
Stanislav Shwartsman
12ad45395b
enable Penryn VMX capabilities with VMX=1, VMX=2 is required for EPT and heavier stuff
2011-09-26 19:36:20 +00:00
Stanislav Shwartsman
54d1d8aa55
added new assertion to generic cpuid
2011-09-26 18:47:47 +00:00
Stanislav Shwartsman
aa96ecd98a
compilation fix
2011-09-26 18:18:10 +00:00
Stanislav Shwartsman
0aadf88c07
more polishing for vmx configurability
2011-09-26 18:08:31 +00:00
Stanislav Shwartsman
c28c7f6a06
Supply real VMX capabilities together with the CPU MODEL .bochsrc option.
...
So now the same single option will choose not only the CPUID flags but also VMX capabilities matching real HW machine.
Removed cpuid of core2_extreme_x9770 from the cpudb. I don't remember its VMX capabilities anyway.
There is another Penryn model in the cpudb - core2_penryn_t9600.
2011-09-26 12:31:40 +00:00
Stanislav Shwartsman
8d95830562
first step to configuration of VMX through cpuid_t class
2011-09-25 19:04:55 +00:00
Stanislav Shwartsman
b66feecc86
move common instrumentation constants (valid for all stubs) to cpu.h
2011-09-25 17:38:54 +00:00
Stanislav Shwartsman
62d0c8abf7
- Now you could disable x86-64 from .bochsrc so now it is possible to emulate
...
32-bit CPU using Bochs binary compiled with x86-64 support.
The commit also fixes some init.cc issues with initialization of SYSCALL/SYSRET MSR in AMD hosts and also includes code reorg.
2011-09-25 17:36:20 +00:00
Stanislav Shwartsman
2b7894de7b
fixed dbg print mentioned in SF bug 3029271
2011-09-22 22:08:18 +00:00
Stanislav Shwartsman
1b9f286945
- New way of CPUs scheduling in SMP mode brings up to 50% speedup to the
...
SMP emulation. New implementation uses dynamic CPU quantum value and takes
full advantage of the trace cache. Each emulated processor will execute
the whole trace before switching to the next processor.
* It is also safe to use large (up to 16 instructions) quantum values for
the SMP emulation now and improve performance even further.
The same merge also completely fixes SF bug :
[3312237] stepN command might be not working properly
Handlers chaining speedups are also supported with SMP emulation now.
2011-09-22 19:38:52 +00:00
Stanislav Shwartsman
f81589c5d6
Don't allow traces longer than cpu_loop can execute
2011-09-21 20:28:29 +00:00
Stanislav Shwartsman
c6d07ae1b5
store modrm() for x87 in Ib() byte because x87 have no Ib()
2011-09-20 06:02:27 +00:00
Stanislav Shwartsman
2583f8549a
small code duplication fix
2011-09-19 20:47:59 +00:00
Stanislav Shwartsman
d489ba3d37
generic cpuid: automatically enable lzcnt of bmi is enabled; sse4a support in cpuid
2011-09-18 18:17:34 +00:00
Stanislav Shwartsman
6fb673b9fa
change BX_PANIC to BX_ERROR
2011-09-18 17:36:54 +00:00
Stanislav Shwartsman
50207eeb90
- Added support for AMD SSE4A emulation, the instructions can be enabled
...
using .bochsrc CPUID option.
2011-09-18 16:18:22 +00:00
Stanislav Shwartsman
efc588cf1e
rename avx2_gather.cc -> gather.cc
2011-09-16 20:59:57 +00:00
Stanislav Shwartsman
ea54f40361
keep global pages when needed in INVPCID/INVVPID
2011-09-16 20:52:38 +00:00