Stanislav Shwartsman
5d2c2879a7
IA32_FEATURE_CONTROL_MSR is implemented
2010-03-06 16:59:05 +00:00
Stanislav Shwartsman
189553d702
bugfix
2010-03-05 08:54:07 +00:00
Stanislav Shwartsman
01cfbdccbc
Move MMX to be runtime option
2010-03-01 18:53:53 +00:00
Stanislav Shwartsman
160d4bbded
Fixed typo
2010-03-01 17:35:49 +00:00
Stanislav Shwartsman
5b6a14656d
Make XSAVE as runtime option
2010-02-26 22:53:43 +00:00
Stanislav Shwartsman
927c3594d6
enable compilation with CPU_LEVEL <= 6
...
converted SEP to runtime option as well
2010-02-26 11:44:50 +00:00
Stanislav Shwartsman
033a20b3b2
allow to configure CPU features at runtime - implemened on example of SSE/AES/MOVBE/POPCNT
2010-02-25 22:04:31 +00:00
Stanislav Shwartsman
70dc124b3a
1st step of moving CPU options to runtime
2010-02-24 19:27:51 +00:00
Stanislav Shwartsman
5f89b554aa
split few more opcodes
2010-02-10 17:21:15 +00:00
Stanislav Shwartsman
c841eaa953
fixes and cleanups in disasm and decoder
2010-02-09 19:44:25 +00:00
Stanislav Shwartsman
dc02d836ce
Fix POPCNT decode tables
2010-01-29 10:16:28 +00:00
Stanislav Shwartsman
7d7f18b585
cleanup
2010-01-19 14:43:47 +00:00
Stanislav Shwartsman
e59ff3d779
cleanup
2009-12-28 09:26:22 +00:00
Stanislav Shwartsman
6f8f69e5bb
set/get_ar_byte not need to be CPU members
2009-12-27 16:53:35 +00:00
Stanislav Shwartsman
d779842da3
added ability to modify sregs from bochs debugger
2009-12-27 16:38:09 +00:00
Stanislav Shwartsman
5579bdfc55
removed unused param
2009-12-22 12:11:09 +00:00
Stanislav Shwartsman
33ad9296ff
bugfix
2009-12-22 11:58:26 +00:00
Stanislav Shwartsman
30c9eef6f9
small optimization
2009-12-21 13:38:06 +00:00
Stanislav Shwartsman
c403090327
! Implemented PCLMULQDQ AES instruction
2009-12-20 09:00:40 +00:00
Stanislav Shwartsman
edaf19f0a1
Split MOVQ_PqQq opcode
2009-12-14 11:55:42 +00:00
Stanislav Shwartsman
bd60e0264c
change Copyright to Bochs Project
2009-12-04 16:53:12 +00:00
Stanislav Shwartsman
604e7aa7ac
typo fix
2009-11-29 21:05:59 +00:00
Stanislav Shwartsman
2defc78bac
cleanups
2009-11-29 21:01:26 +00:00
Stanislav Shwartsman
553ca8af01
split more SSE ops
2009-11-25 20:49:47 +00:00
Stanislav Shwartsman
6819ab4eb7
split sse opcodes
2009-11-23 18:21:23 +00:00
Stanislav Shwartsman
5bfbc9df5f
RETF bug fuxed
2009-11-19 20:00:35 +00:00
Stanislav Shwartsman
71bb10f98c
move ignore-bad-msrs to runtime option in ,bochsrc
2009-11-13 15:55:46 +00:00
Stanislav Shwartsman
3e3cfc610f
cleanup
2009-10-31 19:16:09 +00:00
Stanislav Shwartsman
6f0db17b08
fixed #DB on rpeat instructions
2009-10-30 09:13:19 +00:00
Stanislav Shwartsman
98b51805d5
updates for Bochs debugger
2009-10-29 15:49:50 +00:00
Stanislav Shwartsman
78e4b3d616
split SSE move instructions
2009-10-24 11:17:51 +00:00
Stanislav Shwartsman
b80249dfcb
added PANIC for unsupported VMX feature
2009-10-22 13:33:13 +00:00
Stanislav Shwartsman
da4722e257
optimize sr params
2009-10-16 18:29:45 +00:00
Stanislav Shwartsman
5909ef1494
loading of null segment with RPL != 0
2009-10-12 20:50:14 +00:00
Stanislav Shwartsman
6d6bf4a65e
code optimization for future
2009-10-08 18:07:50 +00:00
Stanislav Shwartsman
d9f701ddb0
LSL/LAR fixed in 64-bit mode
2009-10-02 16:09:08 +00:00
Stanislav Shwartsman
85f1004ce0
implemented TPR shadow feature for VMX
2009-09-30 05:57:21 +00:00
Stanislav Shwartsman
d273ae14b0
rework in paging.cc
2009-09-26 06:06:35 +00:00
Stanislav Shwartsman
8e3276cf14
split opcodes by ModC0
2009-08-22 11:47:42 +00:00
Stanislav Shwartsman
8a95120e12
deprecate --enable-vme option, now it will be supported iff CPU_LEVEL >= 5 (like in real life)
2009-08-10 15:44:50 +00:00
Stanislav Shwartsman
66c4654418
segment desriptor 'A' bit handling fixes
2009-07-27 05:52:28 +00:00
Stanislav Shwartsman
f2d84e1604
Fixed VMREAD/VMWRITE of 16-bit vmx fields
2009-07-21 11:56:26 +00:00
Stanislav Shwartsman
733491871d
copy/paste typo fix
2009-06-15 15:10:05 +00:00
Stanislav Shwartsman
cd445195dd
cleanup configure options. All paging related stuff is now automatically set/unset according to cpu-level option.
...
Related configure options (--enable-pae, --enable-mtrr, --enable-global-pages, --enable-large-pages) are deprecated.
Less configure options - less configure problems :)
2009-06-15 09:30:56 +00:00
Stanislav Shwartsman
716465fb16
bugfix: Half-baked VMX Link Pointer state checking.
2009-06-06 10:21:49 +00:00
Stanislav Shwartsman
03ba2ec988
implement pdptr checks in legacy PAE mode
2009-05-31 07:49:04 +00:00
Stanislav Shwartsman
222129db4b
Rewritten long mode page walk - large code cleanup and few bugfixes
2009-05-30 15:09:38 +00:00
Stanislav Shwartsman
3d7bbf4356
fixed VMXON pointer concept
2009-05-28 08:26:17 +00:00
Stanislav Shwartsman
847179fd13
mtrr reverved bits check
2009-05-21 13:25:30 +00:00
Stanislav Shwartsman
efc413d2b4
VMX fixes
2009-05-21 10:39:40 +00:00
Stanislav Shwartsman
aac70fdf25
faster vmenter/vmexit
2009-05-03 13:02:14 +00:00
Stanislav Shwartsman
78418c6a74
removed cr1 from cpu
2009-05-01 09:32:46 +00:00
Stanislav Shwartsman
89f057ae7b
x87 fix
2009-04-27 14:00:55 +00:00
Stanislav Shwartsman
012b3a2e89
Eliminate code duplication
2009-04-14 13:43:21 +00:00
Stanislav Shwartsman
e0833381d5
Fixed priority between #NP and #GP
2009-04-14 09:23:36 +00:00
Stanislav Shwartsman
4fc66aab31
Fixes for compilation by Visual Studio 2008
2009-04-07 16:12:19 +00:00
Stanislav Shwartsman
9d4c24b6a3
Split instruction 32/64
2009-04-06 18:44:28 +00:00
Stanislav Shwartsman
153f86b1a8
save/restore mwait status correctly
2009-04-05 19:38:44 +00:00
Stanislav Shwartsman
fcb51dc168
oops, this break max_instr_count feature
2009-03-26 10:24:10 +00:00
Stanislav Shwartsman
043be27c2c
M$ comilerr can't optimize very good functions with long_jmp inside
2009-03-26 09:28:49 +00:00
Stanislav Shwartsman
e5be60be64
Fixed lazy flags bug I added in one of my prev merges
...
ICACHE code reorganization
2009-03-22 21:12:35 +00:00
Stanislav Shwartsman
c3392488b5
reorganize cpu debugger support, less function, faster code
2009-03-17 19:40:26 +00:00
Stanislav Shwartsman
4470c6a1c8
make ICACHE always enabled option and deprecate it in the configure script
...
Trace cache still can be turned off
2009-03-13 18:48:08 +00:00
Stanislav Shwartsman
10c8d8ea33
improve lazy flags after ADD instruction
2009-03-13 18:26:10 +00:00
Stanislav Shwartsman
9417cbee63
- cpu optimizations 9remove redundant, add new)
2009-03-13 18:02:33 +00:00
Stanislav Shwartsman
9e723a044f
- Added configure option to enable/disable A20 pin support. Disabling the
...
A20 pin support slightly speeds up the emulation.
- small code cleanup
2009-03-10 16:28:01 +00:00
Stanislav Shwartsman
6fe0b40b44
move a20 handling into getHostAddr method of BX_MEM
2009-03-08 21:23:40 +00:00
Stanislav Shwartsman
6dac964b27
Two more prefix66 opcodes
2009-02-28 09:28:18 +00:00
Stanislav Shwartsman
b9de22961c
minimize SSE tables, minor speedup in SSE code
2009-02-26 21:57:01 +00:00
Stanislav Shwartsman
2304f2abf1
reduce dependencies from CPU/APIC.H
2009-02-20 22:00:42 +00:00
Stanislav Shwartsman
78590cc6f2
remove redundant cpu->name variable
2009-02-20 17:05:03 +00:00
Stanislav Shwartsman
d01725b1e9
Fixed compilation error on MAC
2009-02-20 08:12:51 +00:00
Stanislav Shwartsman
1b72e66bb3
support for apic global disable
...
separate between I/O apic and local apic
2009-02-18 22:25:04 +00:00
Stanislav Shwartsman
87b705d036
Changes in lapicbase msr
2009-02-17 19:44:02 +00:00
Stanislav Shwartsman
3a1852ea23
take local APIC read/write access into CPU class from BX_MEM (needed for APIC virtualization later)
2009-02-17 19:20:47 +00:00
Stanislav Shwartsman
e8e699245f
fix code duplication in cpu.h for eflags accessors
2009-02-13 20:09:56 +00:00
Stanislav Shwartsman
6003f52704
Fixed compilation error + x86-64 correctness fix
2009-02-09 19:46:34 +00:00
Stanislav Shwartsman
26fda0626d
Added missed CR0 reserved bits #GP in long mode
2009-02-03 21:11:31 +00:00
Stanislav Shwartsman
592484408f
Initial NMI virtualization for VMX, clean out CPU pins set/clear code
2009-02-03 19:17:15 +00:00
Stanislav Shwartsman
f6cb9e529f
Fixes for VMX emulation
2009-02-02 18:59:44 +00:00
Stanislav Shwartsman
2378d31998
Fixes for DR6 handling
2009-02-01 20:47:06 +00:00
Stanislav Shwartsman
f8185a6bc6
Added Intel VMX emulation to Bochs CPU
2009-01-31 10:43:24 +00:00
Stanislav Shwartsman
a1c11c788b
sepatate activity state from debug trap
2009-01-29 20:27:57 +00:00
Stanislav Shwartsman
aa982c27d8
move startup_SIPI code to CPU
2009-01-27 21:13:38 +00:00
Stanislav Shwartsman
0325c120b2
Separate PAUSE instruction from regular NOP
2009-01-27 20:29:05 +00:00
Stanislav Shwartsman
62005d4fd9
Minimize diff with VMX support branch
2009-01-23 09:26:24 +00:00
Stanislav Shwartsman
29a252b26e
final version of exceptions cleanups/interface changes
2009-01-21 22:09:59 +00:00
Stanislav Shwartsman
e7ac62ac82
extensions for exception type for future
2009-01-20 21:28:43 +00:00
Stanislav Shwartsman
74b885d74b
Updated instrumentation
...
Simplified exception code
2009-01-20 19:34:16 +00:00
Stanislav Shwartsman
c93d13d37b
small cleanups
2009-01-20 18:15:25 +00:00
Stanislav Shwartsman
db098a1205
Fix dependencies of CPU code from disasm library
...
Regent Makefile.in for CPU
2009-01-19 19:01:03 +00:00
Stanislav Shwartsman
ef5df7c4a8
make functions from rdmsr and wrmsr - they will be reused in VMX
2009-01-19 18:08:38 +00:00
Stanislav Shwartsman
a396c8a1ce
Rework SMM mess
2009-01-17 22:35:45 +00:00
Stanislav Shwartsman
cd367becd7
remove duplicate function
2009-01-17 18:56:25 +00:00
Stanislav Shwartsman
9929e6ed78
- updated FSF address
2009-01-16 18:18:59 +00:00
Stanislav Shwartsman
e540ee75ca
cleared external debugger configure stuff from configure script and makefile
2009-01-15 21:52:52 +00:00
Stanislav Shwartsman
0836545037
Merge io.cc and io_pro.cc (required for future VMX use)
2009-01-15 16:53:08 +00:00
Stanislav Shwartsman
836e9649d8
modify set cr0 functionality
2009-01-10 10:07:57 +00:00
Stanislav Shwartsman
6ea14b747c
Fixed SEGFAULT with configurable MSRS
...
fixed osdep issue in win32 enhanced debugger module
2009-01-08 18:07:44 +00:00
Stanislav Shwartsman
69153fc532
added enum for memory types
2009-01-03 20:04:03 +00:00
Stanislav Shwartsman
3cd5ab1041
added phy addr check
2009-01-02 13:21:48 +00:00
Stanislav Shwartsman
e182e74a4d
Added ability to define user MSRs spec for emulated CPU
2008-12-28 20:30:48 +00:00
Stanislav Shwartsman
a794bef607
optimize invlpg for split large pages
2008-12-19 16:03:25 +00:00
Stanislav Shwartsman
a2e07ff971
- Removed --enable-guest2hos-tlb configure option. The option will be
...
always enabled for any Bochs configuration.
2008-12-11 21:19:38 +00:00
Stanislav Shwartsman
35487c3ebd
get/set_segment_ar_data prepared for future reuse in other than SMM mode
2008-12-06 18:52:02 +00:00
Stanislav Shwartsman
15fa42963f
get/set_segment_ar_data prepared for future reuse in other than SMM mode
2008-12-06 18:01:00 +00:00
Stanislav Shwartsman
d7fa44d270
optimize code access detection
2008-12-05 22:34:42 +00:00
Stanislav Shwartsman
098308dd9f
some variable renames + comp warn fix
2008-12-01 19:06:14 +00:00
Stanislav Shwartsman
f69ac41e59
added infrastructure for init disable
2008-12-01 18:54:24 +00:00
Stanislav Shwartsman
e402062499
-Fixes for INVLPG
2008-11-29 19:28:10 +00:00
Stanislav Shwartsman
cde9595e86
implement cluster addressing model in local apic
...
deliver INIT IPI through local apic
2008-11-20 18:44:15 +00:00
Stanislav Shwartsman
577c8c7969
another way to do the same optimization
2008-10-08 20:40:26 +00:00
Stanislav Shwartsman
17040303f7
Optimization of repeat string
2008-10-08 20:15:37 +00:00
Stanislav Shwartsman
ab716f62aa
inline prepareMMX method
2008-10-08 11:14:35 +00:00
Stanislav Shwartsman
67fae3ab41
Fixed compilation
2008-10-06 20:06:30 +00:00
Stanislav Shwartsman
2066d8b594
Fixed compilation issues
2008-10-06 17:50:06 +00:00
Stanislav Shwartsman
fb71c07b15
Fixes for MONITOR/MWAIT - the feature is still EXPERIMENTAL ONLY !
2008-10-03 16:53:08 +00:00
Stanislav Shwartsman
c009e87a81
Remove external debugger interface:
...
- it is closed source (!!!)
- we have very nice replacement now
2008-10-01 09:44:40 +00:00
Stanislav Shwartsman
bc381e51da
very small cleanups
2008-09-19 19:18:57 +00:00
Stanislav Shwartsman
db664c4012
more optimizations after fetchdecode
2008-09-16 20:57:16 +00:00
Stanislav Shwartsman
a9c77eb75d
Try to optimize individual instructions after fetchdecode
2008-09-16 19:20:03 +00:00
Stanislav Shwartsman
7566faf948
A bit simplify FPU decoding
2008-09-16 18:28:53 +00:00
Stanislav Shwartsman
d57a211df9
Fixed handling of prefixes for EMMS
...
Small FPU optimization
2008-09-12 20:59:31 +00:00
Stanislav Shwartsman
f5ba90da55
Misaligned check small optimization
2008-09-08 15:45:57 +00:00
Stanislav Shwartsman
c1306f7d75
small non-significant speedups
2008-09-06 21:10:40 +00:00
Stanislav Shwartsman
b3b2f77675
Reduce size of Bochs static tables by changing from bx_bool (which is 32bit) to Bit8u
2008-09-06 18:21:29 +00:00
Stanislav Shwartsman
7145d240f4
Optimize system read using Guest2Host TLB
2008-09-06 17:44:02 +00:00
Stanislav Shwartsman
7a57ccd435
- Partially fixed x87 Underflow/Overflow (#P) unmasked responce
2008-09-02 19:46:55 +00:00
Stanislav Shwartsman
bdf25fa3ca
Inexact Result (#P) unmasked responce
...
CVS ----------------------------------------------------------------------
2008-09-02 05:38:36 +00:00
Stanislav Shwartsman
398f80a214
- Fixed CALL FAR between legacy and 64-bit modes
2008-08-31 06:04:14 +00:00
Stanislav Shwartsman
79eb5efffa
- Preliminary implementation of X86 IO breakpoints
2008-08-30 08:14:46 +00:00
Stanislav Shwartsman
b96f78dc0a
Some kind of big change in fetchdecode tables invented in order to compress the tables for better host data cache utilization
2008-08-29 19:23:03 +00:00
Stanislav Shwartsman
a5a01c4b42
optimize LEAVE operation
2008-08-27 21:57:40 +00:00
Stanislav Shwartsman
d029823fb5
Fixed compilation error under --enable-smp
2008-08-24 17:29:17 +00:00
Stanislav Shwartsman
d0803ebd10
branch_16 optimizations
2008-08-23 22:27:58 +00:00
Stanislav Shwartsman
5e92a1642d
Fixed compilation errors, added BX_ASSERT in paging.cc
2008-08-18 05:20:23 +00:00
Stanislav Shwartsman
56504e4a67
Add some missed eflags accessors and pay more attention for special ones
2008-08-16 21:06:56 +00:00
Stanislav Shwartsman
e2fa98b629
- Fixed TLB flush on CR3 change - flush all pages is CR4.PGE is OFF
2008-08-16 15:35:35 +00:00
Stanislav Shwartsman
dcb82ec4bf
Optimize TLB flush methods
2008-08-13 21:51:54 +00:00
Stanislav Shwartsman
8ecea83f02
Fixed compilation error
2008-08-12 05:03:51 +00:00
Stanislav Shwartsman
70c7c5ceca
Use LOAD_Eb approach to remove duplicated GbEb methods
2008-08-11 20:34:05 +00:00
Stanislav Shwartsman
a8adb36dc2
Implemented MOVBE Intel Atom(R) instruction
2008-08-11 18:53:24 +00:00
Stanislav Shwartsman
b61017e5b6
Split more opcodes using new LOAD technique
2008-08-10 21:16:12 +00:00
Stanislav Shwartsman
1da5943f1a
More use of LOAD_Ex method
2008-08-10 19:34:28 +00:00
Stanislav Shwartsman
0d90ab0478
Completely new way to handle LD+OP cases - allows to significantly reduce number of BX_CPU_C methods
2008-08-09 21:05:07 +00:00
Stanislav Shwartsman
5dd02b26e3
Make even more efficient RmAddr calculation - good optimizing compiler could make more efficient code than it was before
2008-08-08 09:22:49 +00:00
Stanislav Shwartsman
bbf02a8bc5
More clean rewrite of the TLB access bits
2008-08-07 22:14:38 +00:00
Stanislav Shwartsman
6398ebb1d4
First step of access bits cleanup and optimization - no perf gain yet
2008-08-03 19:53:09 +00:00
Stanislav Shwartsman
2e8bc558d1
Speedup SSE by introducing read/write_virtual_dqword_aligned methods
2008-08-02 10:16:47 +00:00
Stanislav Shwartsman
67f302352c
Implement PDPE cache to support faster PAE paging tranlsation
2008-08-01 13:28:44 +00:00
Stanislav Shwartsman
59514dcbfb
Fixed compilation err typo
2008-07-26 20:50:20 +00:00
Stanislav Shwartsman
c388f48fff
- Fixed memory bug in tripple fault detection
...
- Implement 16-byte memory accessor for SSEx - speedup SSE code emulation by >20%
2008-07-26 14:19:06 +00:00
Stanislav Shwartsman
85686db212
Removed unused methods
2008-07-13 14:22:43 +00:00
Stanislav Shwartsman
3f5efb6475
Remove more duplicated methods
2008-07-13 10:06:07 +00:00
Stanislav Shwartsman
0127415ba6
Clear some duplicated arithmetic opcodes - difference only in operands order
2008-07-13 09:59:59 +00:00
Stanislav Shwartsman
c1f308d80d
Push error code if segment violation occurs when pushing arguments into a new stack
2008-06-25 02:28:31 +00:00
Stanislav Shwartsman
a6fda9a971
Instrumentation code updated, some PANIC messages fixed
2008-06-23 02:56:31 +00:00
Stanislav Shwartsman
678ac970aa
Reorganize ctrl_xfer8.cc code, allows to inline branch32 method
2008-06-22 03:45:55 +00:00
Stanislav Shwartsman
98581c44d3
Fixed compilation when use64 is disabled
2008-06-13 08:17:52 +00:00
Stanislav Shwartsman
1a355e270e
split io repeat methods by address size
2008-06-12 20:12:25 +00:00
Stanislav Shwartsman
92568f7525
Faster 32-bit emulation wwith 64-bit enabled mode.
...
~10% speedup byu optimization of 32-bit mem access
2008-06-12 19:14:40 +00:00
Stanislav Shwartsman
607900dd4d
very small cleeanup
2008-06-12 16:40:53 +00:00
Stanislav Shwartsman
424f316e07
Fixed comment
2008-06-02 20:11:03 +00:00
Stanislav Shwartsman
7494b8823b
- Support of AES CPU extensions, to enable configure with
...
--enable-aes option
2008-05-30 20:35:08 +00:00
Stanislav Shwartsman
d295371450
- Correctly handle segment a byte in BIG real mode
2008-05-26 21:46:39 +00:00
Stanislav Shwartsman
77fbc2c187
Fixed LAR/LSL in 64-bit mode, compilation error fixes
2008-05-25 15:53:29 +00:00
Stanislav Shwartsman
3619c0f6b4
Some changes to make x86-debugger feature working back
2008-05-23 17:49:46 +00:00
Stanislav Shwartsman
4e5d10d02e
Code reorganization + small bug fixes in translate linear code
2008-05-19 18:10:32 +00:00
Stanislav Shwartsman
76fc10e3d4
Added ability to override exception class to TRAP (#DB)
2008-05-15 20:10:00 +00:00
Stanislav Shwartsman
d934190370
Fixed data type for cr3_masked
2008-05-11 19:58:41 +00:00
Stanislav Shwartsman
4a76bd2169
Fixed setting of reserved bits in CR3 register
2008-05-11 19:36:06 +00:00
Stanislav Shwartsman
d3528cccd6
Style fixes - name convention for push to new stack methods
2008-05-10 20:35:03 +00:00
Stanislav Shwartsman
ec1ff39a5f
Splitted memory access methods for 32 and 64-bit code.
...
The 64-bit code got >10% speedup, the 32-bit code also got about 2% because laddr cacluation optimization
2008-05-10 18:10:53 +00:00
Stanislav Shwartsman
3634c6f892
Compress FPU tag word
2008-05-10 13:34:47 +00:00
Stanislav Shwartsman
8e7cf2bf3a
- Fixed CPUID
...
- Merged jmp_call_gate16 and jmp_call_gate32 to single function
2008-05-09 18:09:04 +00:00
Stanislav Shwartsman
5da460b6dc
Clear segment descriptor cache when loading null selector
2008-05-06 19:45:17 +00:00
Stanislav Shwartsman
f642b57a54
Lazy falgs optimizations by Darek Mihocka
2008-05-04 15:07:08 +00:00
Stanislav Shwartsman
ed4be45a8b
Split shift/rotate opcodes in 32-bit mode and 64-bit mode
2008-05-02 22:47:07 +00:00
Stanislav Shwartsman
f5780a5f5c
Hide some BX_MEM_C variables
...
Optimize resolve16 methods - by reducing their amount again - reduce chance for misspredictin
2008-05-01 20:08:37 +00:00
Stanislav Shwartsman
81deffd65d
More fetchdecode fixes
2008-04-30 21:32:33 +00:00
Stanislav Shwartsman
06c6ac0060
- Fixed effective address wrap in 64-bit mode with 32-bit address size
...
- Fixed SMSW instruction in 32-bit and 64-bit modes
2008-04-28 18:18:08 +00:00
Stanislav Shwartsman
67e534832b
Remove from CPU reference to MEM object - it is only one and could be static
2008-04-27 19:49:02 +00:00
Stanislav Shwartsman
e86102eea5
Fixed 2nd dword of 64-bit descriptor check
2008-04-26 19:41:28 +00:00
Stanislav Shwartsman
9047c9be96
Support for reserved bits checking in paging
...
Check for page is in DTLB before invalidating by INVLPG
2008-04-25 20:08:23 +00:00
Stanislav Shwartsman
64f2489afb
Correctly implement opcode group G11 i.e. instructions C6 and C7 should @UD when modrm nnn field != 0 (1st instr in the group
2008-04-24 21:52:28 +00:00
Stanislav Shwartsman
d24a274909
Eliminate can_pop function - with bugfix in retf
2008-04-23 17:25:21 +00:00
Stanislav Shwartsman
d9bf2b8453
Small emulation speed optimization
2008-04-19 22:29:44 +00:00
Stanislav Shwartsman
bdaef81603
Added debugger memory trace functionality. Enable by 'trace-mem on' command
2008-04-19 13:21:23 +00:00
Stanislav Shwartsman
cacec881cf
Fixed param type for set_TSC
2008-04-18 18:37:29 +00:00
Stanislav Shwartsman
15e9dca062
- support 64-bit write to MSR_TSC using WRMSR instruction
...
- fixed save/restore param type for async_event
- fixed setting of reserved bits in upper part of CR4 in 64-bit mode
2008-04-18 18:32:40 +00:00
Stanislav Shwartsman
892fa99c6f
- prefetch hint should be NOP when use in register mode
...
- #GP when trying to set reserved bits of CR4_HI in 64-bit mode
- #GP when trying to set reserved bits of EFER MSR
- clear upper part of RSI/RDI when executing rep instructions with 32-bit asize
even if no repeat iterations were executed (because of RCX=0 for example)
- write SYSENTER_EIP_MSR and SYSENTER_ESP_MSR as 64-bit when x86_64 supported
- set MSR_FMASK reset value
- MSR_FMASK should be 32-bit only
- check for fetch permissions when doing ITLB lookup
- #GP when trying to write non-canonical address to MSR_CSTAR or MSR_LSTAR
- correct repeat instructions timing
- mark TSS busy in TR after it is loaded
2008-04-16 16:44:06 +00:00
Stanislav Shwartsman
4c26043969
Fixed 3rd fault detection (shutdown condition)
2008-04-15 17:22:11 +00:00
Stanislav Shwartsman
fab4042cad
SYSENTER/SYSEXIT in long mode
2008-04-15 14:41:50 +00:00
Stanislav Shwartsman
a98cd9f781
small cpu code reorganization
2008-04-08 17:58:56 +00:00
Stanislav Shwartsman
a33d8c6008
Make get_laddr and get_segment_base BX_SMF
2008-04-08 05:36:30 +00:00
Stanislav Shwartsman
a851cfd8f0
Re-implemented modebp debugger function in simple and more clean way
2008-04-07 19:59:53 +00:00
Stanislav Shwartsman
fea49bb270
Fixed linear address wrap in legacy (not long64) mode
2008-04-07 18:39:17 +00:00
Stanislav Shwartsman
77d91d59aa
Inline prepare_SSE and prepare_XSAVE functions
2008-04-06 18:00:20 +00:00
Stanislav Shwartsman
90f1973bef
Removed BX_USE_TLB - TLB is always used, only Guest2HostTLB is optional feature
...
Use Guest2HostTLB in prefetch code for IFETCHES - speedup above 3%
2008-04-05 20:41:00 +00:00
Stanislav Shwartsman
1bdddc1f78
Split SHRD/SHLD instructions
2008-04-05 19:08:01 +00:00
Stanislav Shwartsman
5826e2843a
Inline pop/push functions
...
Store only single byte of opcode in b1() - speedup shift instructions
Code cleanups
2008-04-05 17:51:55 +00:00
Stanislav Shwartsman
2aaafa76a2
Reorganize fetchdecode tables with another level of redirection - a leap toward future improvements
...
Currently no speedup and no slowdown - about the same results on my Bochs benchmarking
A lot of code reorganization in fetchdecode
2008-04-04 22:39:45 +00:00
Stanislav Shwartsman
62e3728591
preparations for future optimizations - not necessary speedupo now
2008-04-03 17:56:59 +00:00
Stanislav Shwartsman
e91409704f
Convert EFER to val32 register, similar to other control registers
2008-03-31 20:56:27 +00:00
Stanislav Shwartsman
3f2487a0af
Enabled tracing cross repeated instructions
2008-03-31 18:53:08 +00:00
Stanislav Shwartsman
08f958f458
Fixed pageWriteStampTable to handle BIOS code as well - increased the table to all 4G instead of allocated memory size
...
Avoid checking of pageWriteStamp in the heart of cpu loop with trace cache - now decWriteStamp will post stopTraceExecution event if it hits code page
2008-03-29 21:01:25 +00:00
Stanislav Shwartsman
7aef2d5892
Inline get_ZF/SF/PF lazy flags functions - gcc didn't get them inline before
2008-03-29 18:44:13 +00:00
Stanislav Shwartsman
f3a91710e4
Split access_linear to access_read_linear and access_write_linear
2008-03-29 18:18:08 +00:00
Stanislav Shwartsman
e48b398bee
Add NIL register and simplify more BxResolve work
2008-03-29 09:34:35 +00:00
Stanislav Shwartsman
94f30955be
Fixed compilation error
2008-03-25 16:46:39 +00:00
Stanislav Shwartsman
9fcbf28cea
Removed can_push method - normal memory accesses will be used instead.
...
Fixed reset value of TR.TYPE
2008-03-24 22:13:04 +00:00
Stanislav Shwartsman
167c7075fb
Use fastcall gcc attribute for all cpu execution functions - this pure "compiler helper" optimization brings additional 2% speedup to Bochs code
2008-03-22 21:29:41 +00:00
Stanislav Shwartsman
7e490699d4
Removing hooks for not-implemented SSE4A from the Bochs code.
2008-03-21 20:04:42 +00:00
Stanislav Shwartsman
64bfbb32b5
Inline icache lookup code - speedup of 3% according to my measurements
2008-03-06 20:22:24 +00:00
Stanislav Shwartsman
65df050a21
Fixed compilation warning
2008-03-03 15:34:03 +00:00
Stanislav Shwartsman
946b7a369d
Added const to fetchPtr in cpu functions
2008-03-03 15:16:46 +00:00
Stanislav Shwartsman
2172e96654
small trace/iacache cleanups, always allow speculative tracing for trace cache
2008-03-03 14:35:36 +00:00
Stanislav Shwartsman
405fcfd75d
Reorganize 3-byte opcode tables - bigger tables but easier to maintain them
2008-02-29 03:02:03 +00:00
Stanislav Shwartsman
a459a64f3e
whispace, tab2space, indent, dos2unix and other cleanups
2008-02-15 22:05:43 +00:00
Stanislav Shwartsman
cdcd7522aa
Added RIP to the GPR register file as lst register
...
This allowed to optimize (read - remove) two more BxResolve methods in 64-bit mode
+ Some white space cleanup
2008-02-15 19:03:54 +00:00
Stanislav Shwartsman
4fc0df26e8
a bit optimize and simplify x87 decoding
2008-02-14 18:59:41 +00:00
Stanislav Shwartsman
ae86ad28a0
Finalize XSAVE/XRSTOR instructions
2008-02-13 22:25:24 +00:00
Stanislav Shwartsman
457152334e
step2 in XSAVE implementation
2008-02-13 16:45:21 +00:00
Stanislav Shwartsman
8615022962
Added first stubs for XSAVE/XRESTOR implementation
...
Disassemble XSAVE/XRSTOR instructions (4 instructions)
Update CHANGES - a bit speculatively
2008-02-12 22:41:39 +00:00
Stanislav Shwartsman
8d7410a852
Canonical check have higher priority than #AC check
2008-02-11 20:52:10 +00:00
Stanislav Shwartsman
063d896226
Optimization in 16-bit resolve functions
...
Fixes for hosts which can't support misaligned memory access
2008-02-07 20:43:13 +00:00
Stanislav Shwartsman
a2897933a3
white space cleanup
2008-02-02 21:46:54 +00:00
Stanislav Shwartsman
1a55fce072
remove staruct for eflags and use single 32-bit variable
2008-01-29 22:26:29 +00:00
Stanislav Shwartsman
37fbb82baa
Cleanups. Move bxInstruction_c definition to separate file instr.h
2008-01-29 17:13:10 +00:00
Stanislav Shwartsman
7b80c5f481
I merged and succeded to remove some similar execution functions - less code, less chance for branch misprediction
2008-01-25 19:34:30 +00:00
Stanislav Shwartsman
9ec2c87aaa
cleanups and optimizations
2008-01-22 16:20:30 +00:00
Stanislav Shwartsman
192f398b46
removed --enable-magic-breakpoint configure option - it is enabled by default if Bochs internal debugger compiled in. Also it always possible to switch magic break off by .bochsrc option
2008-01-21 21:36:58 +00:00
Stanislav Shwartsman
63d8d50cfc
code cleanup
2008-01-20 20:11:17 +00:00
Stanislav Shwartsman
8c9de8b4db
speculative tracing on fetchdecode level
2008-01-18 09:36:15 +00:00
Stanislav Shwartsman
9e53b71a55
Segment base in not long mode should only 32-bit
2008-01-14 19:03:50 +00:00
Stanislav Shwartsman
c6fd4ebf94
Split CALL_Ev and JMP_Ev methods
2008-01-12 16:40:38 +00:00
Stanislav Shwartsman
77b4b70b9b
oops, revert incorrectly merged change
2008-01-10 20:32:23 +00:00
Stanislav Shwartsman
1f4608cd84
Fix for implemened 3dnow instuctions (most of them are not implemented)
2008-01-10 20:26:49 +00:00
Stanislav Shwartsman
d9984bb3a1
Eliminate BxResolve call from the heart of cpu loop and move into instructions that really require this calculation. Yes, it blows the code of EVERY CPU method but it has >15% speedup !
2008-01-10 19:37:56 +00:00
Stanislav Shwartsman
a9e001bd30
Optimize short traces
2008-01-05 10:21:25 +00:00
Stanislav Shwartsman
eee1a9030d
a bit simplify and optimize shift instructions
...
print failed segment info in check_cs - more debug info
2007-12-30 20:16:35 +00:00
Stanislav Shwartsman
d891f0d8ec
Fixed more VC2008 warnings - hopefully last ones
2007-12-30 17:53:12 +00:00
Stanislav Shwartsman
79fc57dec8
Fixed more VCPP2008 warnings
2007-12-26 23:07:44 +00:00
Stanislav Shwartsman
c3c9c40674
Move MaxFetch calculation into fetchdecode - simplify the logic
2007-12-22 17:17:40 +00:00
Stanislav Shwartsman
e9a148f9c4
lmost last instruction split -> CMOV in 16/32 bit modes
2007-12-21 18:24:19 +00:00
Stanislav Shwartsman
a93b0afdbe
Merge page split detection method suggested by Darek Mihocka
2007-12-21 10:33:39 +00:00
Stanislav Shwartsman
5d4e32b8da
Avoid pointer params for every read_virtual_* except 16-byte SSE and 10-byte x87 reads
2007-12-20 20:58:38 +00:00
Stanislav Shwartsman
b516589e4e
Changes in write_virtual_* and pop_* functions -> avoid moving parameteres by pointer
2007-12-20 18:29:42 +00:00
Stanislav Shwartsman
c9932e97eb
Fixes in resolve.cc -> reduce amount of resolve functions even more
2007-12-18 21:41:44 +00:00
Stanislav Shwartsman
fe2e0525da
More optimization for string instructions
2007-12-17 19:52:01 +00:00
Stanislav Shwartsman
0af87ab63b
Split string instructions according to the address size - simpler and faster
2007-12-17 18:48:26 +00:00
Stanislav Shwartsman
a545bf63ce
push_64 and pop_64 could happen only in 64-bit mode
2007-12-16 21:40:44 +00:00
Stanislav Shwartsman
46366b5064
Speedup simulation by eliminating CPL==3 check from read/write_virtual* functions
2007-12-16 21:03:46 +00:00
Stanislav Shwartsman
de5838ce80
cleanups and fixes for Immediate_IbIb of SSE4A
2007-12-16 20:47:10 +00:00
Stanislav Shwartsman
1e843cb462
Decode SSE4A
...
Rework immediate bytes decoding to make it faster
2007-12-15 17:42:24 +00:00
Stanislav Shwartsman
3a6d714398
Split for JMP_Ew/Ed opcodes from Grp5
2007-12-14 23:15:52 +00:00
Stanislav Shwartsman
fd73390ca5
Split 64-bit CMOVcc opcode
2007-12-14 22:41:43 +00:00
Stanislav Shwartsman
903f6dea35
Split setCC functions - makes code faster and simpler
2007-12-14 21:29:36 +00:00
Stanislav Shwartsman
d9a59c7a1f
Added ability to merge traces cross JCC branch instructions
...
Makes traces longer -> emulation faster in average
2007-12-14 20:41:09 +00:00
Stanislav Shwartsman
db69a25c36
Trace cache instrumentation methods
...
Next step will be tracing cross non-taken branches
2007-12-14 11:27:44 +00:00
Stanislav Shwartsman
adda3befd3
Trace cache optimization merged
2007-12-09 18:36:05 +00:00
Stanislav Shwartsman
ee465a7714
misaligned SSE support works only for loads
2007-12-09 17:40:23 +00:00
Stanislav Shwartsman
d54d537f81
One more step for lazy flags optimization
2007-12-06 16:57:59 +00:00
Stanislav Shwartsman
a835e3f8ff
get_FLAG_Lazy not always returns 0/1
2007-12-05 06:27:01 +00:00
Stanislav Shwartsman
295a36ef58
2nd step of lazy flags optimization
2007-12-05 06:17:09 +00:00
Stanislav Shwartsman
88899cf617
Changes for lazy flags handling -> 1st stap in transition to new lazy flags handling by Darek Mihocka (www.emulators.com)
2007-12-04 19:27:23 +00:00
Stanislav Shwartsman
c58e95f611
Make hw breakpoint match check a function - normally it should be called from read/write_virtual as well
2007-12-03 20:49:24 +00:00
Stanislav Shwartsman
a0147fe055
Fixed bug prevented to boot Win98
2007-11-30 08:49:12 +00:00
Stanislav Shwartsman
1a55835155
Optimize lazy flags for MUL/IMUL
2007-11-29 21:45:10 +00:00
Stanislav Shwartsman
8cfd17202a
some simple SSE code optimizations
2007-11-27 22:12:45 +00:00
Stanislav Shwartsman
c51888f43f
Split last BxLockable opcodes -> this allows to eliminate mod==0xc0 check from fetchdecode of every instruction
...
reduce ACPU.CC dependencies - now that file doesn't depend of CPU
2007-11-25 20:22:10 +00:00
Stanislav Shwartsman
e51184c8cf
Eliminate saving of RSP from heart of cpu_loop
...
Now save RSP only where it is really required
2007-11-24 14:22:34 +00:00
Stanislav Shwartsman
d0052dcd3e
Removed unused setFlags code
2007-11-23 22:49:54 +00:00
Stanislav Shwartsman
1dbe51a2fb
Split ENTER_IwBw function according to os32. Fixed ENTER/LEAVE in 64-bit mode
2007-11-22 17:33:06 +00:00
Stanislav Shwartsman
0a1063ad77
Split GvEv opcode groups
2007-11-21 22:36:02 +00:00
Stanislav Shwartsman
506dc3d963
Optimize 64-bit fetchdecode prefix handling
...
Deparecated set_FLAG() method, setB_FLAG() method was used everywhere
Rename setB_FLAG to set_FLAG, so set_FLAG() will must receive 0/1 inly
2007-11-20 23:00:44 +00:00
Stanislav Shwartsman
48650a70b4
Optimized alignment check
2007-11-20 21:22:03 +00:00
Stanislav Shwartsman
1af7010e50
Optimized memory access for 64-bit mode
...
Starting convergence to new lazy flags scheme by Darek Mihocka (www.emulators.com). The new flags code is still being validated and perfected but I try to minimize the diff between 2 versionS
2007-11-20 17:15:33 +00:00
Stanislav Shwartsman
30f42d74f1
make sreg index tables static in fetchdecode and remove them from init.cc/cpu.h
2007-11-18 21:07:40 +00:00
Stanislav Shwartsman
bcaba54489
Merge resolve functions for 32 and 64-bit
2007-11-18 19:46:14 +00:00
Stanislav Shwartsman
57d2d14865
Split POP_Ev opcodes
2007-11-18 18:49:19 +00:00
Stanislav Shwartsman
cdc9a09090
Split more opcodes
2007-11-18 18:24:46 +00:00
Stanislav Shwartsman
83f6eb6945
Changes copyrights for the files I wrote :)
...
Also split EqId G1 group for x86-64
2007-11-17 23:28:33 +00:00
Stanislav Shwartsman
613bad34ee
split MOVZX/MOVSX opcodes
2007-11-17 18:29:00 +00:00
Stanislav Shwartsman
5ec15df46d
Split more opcodes EbIb opcodes
2007-11-17 18:08:46 +00:00
Stanislav Shwartsman
d5a58e1df2
Split more opcodes - G3 group
2007-11-17 16:20:37 +00:00
Stanislav Shwartsman
d9e58bd598
split11b on opcode tables level - split almost eevery splittable instruction
...
will be continued
2007-11-17 12:44:10 +00:00
Stanislav Shwartsman
abe3f4c5c2
Split one more opcode
2007-11-16 21:43:23 +00:00
Stanislav Shwartsman
393018cdf8
More split11b
2007-11-16 17:45:58 +00:00
Stanislav Shwartsman
351244d1ea
Rename splitmod11b methods
2007-11-16 08:30:22 +00:00
Stanislav Shwartsman
db02731cbf
Replace BxAnother attribute in fetchdecode by table lookup like it is done in disasm. This is done in preparation to feature huge fetchdecode change - all fethdecode tables will be duplicated and made separatate table for ModC0 and others.
...
So ALL instructions will emjoy SplitMod11b automatically (if they want).
After splitting ALL instruction I hope to get 20% speedup at least.
2007-11-15 17:57:56 +00:00
Stanislav Shwartsman
0fa82afe1f
Bugfix and optimize BxResolve calls - bugfix in 64-bit mode
2007-11-13 17:30:54 +00:00
Stanislav Shwartsman
edfff23ca0
Split JCC methods to 16 different methods per branch condition
2007-11-12 18:20:15 +00:00
Stanislav Shwartsman
aed6640ef4
speedup JCC for 64-bit -> separate JZ/JNZ for single faster methods
2007-11-11 21:26:10 +00:00
Stanislav Shwartsman
7648101f28
Optimize metainfo data - ilen() and b1() methods get speedup
2007-11-11 21:14:24 +00:00
Stanislav Shwartsman
eea5023da8
small simplification for fetchdecode
2007-11-11 20:56:22 +00:00
Stanislav Shwartsman
9dc471bbe5
Simplify Guest2HostTLB code
...
Fixed APIC CPUID bit
2007-11-11 20:44:07 +00:00
Stanislav Shwartsman
5fd21257de
Remove qick TLBN invalidation code - it actually only could slow down emulation
2007-11-09 21:14:56 +00:00
Stanislav Shwartsman
2653d54e96
split 32-bit modermdata variable in BxInstruction_c to 4 Bit8u variables
...
this way it is possible to save shifts and masking when accessing modrm fields
2007-11-08 18:21:37 +00:00
Stanislav Shwartsman
2f5fa07af3
small speedups
2007-11-07 10:40:40 +00:00