Stanislav Shwartsman
0f5f075e4d
- Fixed theoretically possible pageWriteStamp overflow
2008-10-21 19:50:05 +00:00
Stanislav Shwartsman
82815c4bef
Put back simple hash function for icache and trace cache - more cache misses but still ~3% speedup
2008-10-14 17:23:53 +00:00
Stanislav Shwartsman
c11ad9405d
one more
2008-10-10 21:09:25 +00:00
Stanislav Shwartsman
5261e6f73a
Optimize prefetch() method
2008-10-10 20:49:16 +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
489447ae57
Fixed FPU2MMX state transition - should be done only fater all memory faults already checked
2008-10-08 10:51:38 +00:00
Alexander Krisak
e108fe0d58
Yet another win32 build fix. cpu/resolve.cc renamed to cpu/resolver.cc
...
because it conflicts with disasm/resolve.cc.
2008-10-07 07:47:56 +00:00
Stanislav Shwartsman
52a0eb2143
- Avoid 32-bit EIP wrap in prefetch()
2008-10-06 22:19:22 +00:00
Stanislav Shwartsman
3b0e84d9e3
The same again
2008-10-06 20:41:28 +00:00
Stanislav Shwartsman
367116ee3d
Do not access 64-bit vars when guaranteed to be in 32-bit mode with upper part of ther RIP/RSP cleared
2008-10-06 20:26:14 +00:00
Stanislav Shwartsman
67fae3ab41
Fixed compilation
2008-10-06 20:06:30 +00:00
Stanislav Shwartsman
4cf63f4804
Delete unused file
2008-10-06 20:05:23 +00:00
Stanislav Shwartsman
2066d8b594
Fixed compilation issues
2008-10-06 17:50:06 +00:00
Stanislav Shwartsman
fe0456d519
Remove extra ;;
2008-10-03 17:00:46 +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
5d0a807f0e
CR1 is not exists
2008-10-02 18:14:52 +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
dee5b0a7a6
Correctly set DR6 when instr BP detected
2008-09-26 20:41:41 +00:00
Stanislav Shwartsman
8adcf06f27
Fixed bug
2008-09-25 19:19:40 +00:00
Stanislav Shwartsman
3d97374ce8
Some fixes for functionality
2008-09-24 10:39:35 +00:00
Stanislav Shwartsman
cbadccb63c
Fixed DR6 handling
2008-09-23 19:33:37 +00:00
Stanislav Shwartsman
0966fe8621
Fix corruption when executing WBINVD in SMP
2008-09-23 17:33:18 +00:00
Alexander Krisak
a6cce95418
fixed compillation
2008-09-23 13:25:32 +00:00
Stanislav Shwartsman
5aaeb331fe
Fixed typo
2008-09-22 21:41:22 +00:00
Stanislav Shwartsman
3b276bc9fe
Implement modern BIOS mode for limiting max reported CPUID function to 3.
...
This mode is required in order to correctly boot and install WinNT guest
2008-09-22 21:38:15 +00:00
Stanislav Shwartsman
b0abb5d6a6
task switch fixes
2008-09-22 19:53:47 +00:00
Stanislav Shwartsman
bc381e51da
very small cleanups
2008-09-19 19:18:57 +00:00
Stanislav Shwartsman
39d4db5564
- No alignment check required for 16-byte 'unaligned' access
2008-09-18 17:37:28 +00:00
Stanislav Shwartsman
db664c4012
more optimizations after fetchdecode
2008-09-16 20:57:16 +00:00
Stanislav Shwartsman
d7fdaaad5b
remove not needed index set
2008-09-16 19:22:13 +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
7657ae626e
Change error message level
2008-09-14 20:58:20 +00:00
Stanislav Shwartsman
d57a211df9
Fixed handling of prefixes for EMMS
...
Small FPU optimization
2008-09-12 20:59:31 +00:00
Stanislav Shwartsman
2b2fd6e810
Fixed SMM valid bit save/restore for sregs
2008-09-11 21:54:57 +00:00
Stanislav Shwartsman
23933d731c
Remove 4G limit optimization that didn't work quite well
2008-09-08 20:47:33 +00:00
Stanislav Shwartsman
b03f940807
optimize seg_override decoding
2008-09-08 16:15:59 +00:00
Stanislav Shwartsman
f5ba90da55
Misaligned check small optimization
2008-09-08 15:45:57 +00:00
Stanislav Shwartsman
a95c24b019
Some functions could be called only from 32 bit
2008-09-06 21:18:08 +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
0cd11fd385
Updated instrumentation callbacks - removed fetchdecode_completed callback
2008-09-06 17:49:32 +00:00
Stanislav Shwartsman
7145d240f4
Optimize system read using Guest2Host TLB
2008-09-06 17:44:02 +00:00
Stanislav Shwartsman
f6531f6df9
-Fixed alignment chek to be on laddr instead of eaddr for CMPXCHG16B
2008-09-05 21:43:12 +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
bf9eea4fa5
- Fixed segment limit violations with 4G segment limit
2008-08-30 15:00:38 +00:00
Stanislav Shwartsman
79eb5efffa
- Preliminary implementation of X86 IO breakpoints
2008-08-30 08:14:46 +00:00
Stanislav Shwartsman
db8445abde
Allow 8b BP in 32bit mode as well
2008-08-29 22:14:02 +00:00
Stanislav Shwartsman
a0e395188f
Fixed merge error
2008-08-29 20:43:05 +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
b1da3d7d46
very slight optimization in io permissions check
2008-08-27 21:26:23 +00:00
Stanislav Shwartsman
d029823fb5
Fixed compilation error under --enable-smp
2008-08-24 17:29:17 +00:00
Stanislav Shwartsman
9a2072bba6
More fetchdecode optimization
2008-08-23 22:34:17 +00:00
Stanislav Shwartsman
d0803ebd10
branch_16 optimizations
2008-08-23 22:27:58 +00:00
Stanislav Shwartsman
991ae348cb
Clean invalidate_prefetch_q when not needed
2008-08-23 13:55:37 +00:00
Stanislav Shwartsman
51cb5451d8
Apply CPUID vendor/brand string from @SF
2008-08-19 16:43:07 +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
f275eb3e86
- CALL instructions should push old EIP to stack before checking new EIP for CS.limits
2008-08-16 15:32:44 +00:00
Stanislav Shwartsman
8107e7f084
Fixed restore of FCS field
2008-08-16 12:19:30 +00:00
Stanislav Shwartsman
edae99eb48
Revert back last commmit
2008-08-15 17:39:22 +00:00
Stanislav Shwartsman
65f3344496
Bugfix for big real mode
2008-08-15 14:31:31 +00:00
Stanislav Shwartsman
5eb845763e
Fixed corner case problem cause by my prev optimization
2008-08-15 14:30:50 +00:00
Stanislav Shwartsman
460d91fc8c
Added missed #GP fault when writing invalid memtype to MTRR/PAT
2008-08-15 10:59:31 +00:00
Stanislav Shwartsman
9d61bbb903
Fixed BX_ERR messages
2008-08-15 10:12:41 +00:00
Stanislav Shwartsman
aea946b4a3
One more change to speedup memory access through HostPtr check
2008-08-14 22:26:15 +00:00
Stanislav Shwartsman
dcb82ec4bf
Optimize TLB flush methods
2008-08-13 21:51:54 +00:00
Stanislav Shwartsman
c9a8e4d79d
Remove redundant TLB flush - it is even before TLB iniT
2008-08-13 20:54:03 +00:00
Stanislav Shwartsman
3e03443405
Fixed speed bug when alignment access is disabled
2008-08-12 20:24:24 +00:00
Stanislav Shwartsman
fa49bd17dc
Fixed small performance bug in HandleAsyncEvent
2008-08-12 19:25:42 +00:00
Stanislav Shwartsman
8ecea83f02
Fixed compilation error
2008-08-12 05:03:51 +00:00
Stanislav Shwartsman
6b79e1e204
Add missed crc32.cc
2008-08-12 04:57:59 +00:00
Stanislav Shwartsman
70f363a05c
Unroll back 32-bit fetchdecode displ
2008-08-11 21:06:27 +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
cddcdccd99
Fixed paging bug
2008-08-10 20:32:00 +00:00
Stanislav Shwartsman
e5cb22772d
Fixed compilation error
2008-08-10 19:40:47 +00:00
Stanislav Shwartsman
1da5943f1a
More use of LOAD_Ex method
2008-08-10 19:34:28 +00:00
Stanislav Shwartsman
79cabe4bec
Already first small optimization :)
2008-08-09 21:07:48 +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
24e0b53720
This more ellegant way to have debug info for BxError and not lose any performace
2008-08-09 19:18:09 +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
69119be183
Fixed BX_INFO message
2008-08-07 21:07:53 +00:00
Stanislav Shwartsman
67eb13bf24
Fixed bug in PDPE cache implementation
2008-08-04 14:46:28 +00:00
Stanislav Shwartsman
4808a0d581
Fixed accessBits algebra
2008-08-04 05:30:37 +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
41a4527ffd
Put back optimization in pageWriteStampTable
2008-07-26 15:07:14 +00:00
Stanislav Shwartsman
f303d61cc1
Fixed 'dirty page' support in debugger
2008-07-26 14:44:26 +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
8fff36b6e3
Save some time in redundant tracing
2008-07-17 17:28:25 +00:00
Stanislav Shwartsman
786edc1506
Some cleanuop changes for future
2008-07-14 14:46:45 +00:00
Stanislav Shwartsman
b0b50e942c
Eliminate return statement (for future code optimization)
2008-07-13 15:52:55 +00:00
Stanislav Shwartsman
924c87e451
Delete unused code
2008-07-13 15:36:57 +00:00
Stanislav Shwartsman
709d74728d
Call #UD exception directly instead of UndefinedOpcode function - for future use
2008-07-13 15:35:10 +00:00
Stanislav Shwartsman
85686db212
Removed unused methods
2008-07-13 14:22:43 +00:00
Stanislav Shwartsman
ab71c5670b
removed redundant ifdefs
2008-07-13 14:01:09 +00:00
Stanislav Shwartsman
cedf6bd88a
Small coding style optimization
2008-07-13 13:32:15 +00:00
Stanislav Shwartsman
6f7d39e832
Speedup port read to memory methods
2008-07-13 13:24:36 +00:00
Stanislav Shwartsman
8674659f9b
- Fixed missed canonical fault when mem access split cross canonical boundary
2008-07-13 11:19:21 +00:00
Stanislav Shwartsman
e9ec4fda48
Some chnages for future use
2008-07-13 10:44:34 +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
380a4eaa56
Removed unused variables
2008-07-13 08:43:54 +00:00
Stanislav Shwartsman
65275ffc02
Remove repeat speedups from 16-bit address size methods - they not gonna speed up anyway because of segment limit issue
2008-06-25 10:34:21 +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
b65816a92d
Fixed problem in my morning checkin + some more changes
2008-06-23 15:58:22 +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
97bf141fc3
Added paramter to APIC reset method
2008-06-17 21:21:17 +00:00
Stanislav Shwartsman
5b4c29e2de
Fixed warnings found by icc compiler
2008-06-17 20:23:16 +00:00
Stanislav Shwartsman
fc6671a67b
Commented out assertion which doesn't work
2008-06-16 04:49:19 +00:00
Stanislav Shwartsman
9d1bc903d8
Fixed typo in MTRR, added assertions
2008-06-15 20:41:34 +00:00
Stanislav Shwartsman
a0e66d0e4c
fixed variable name
2008-06-14 16:55:45 +00:00
Stanislav Shwartsman
98581c44d3
Fixed compilation when use64 is disabled
2008-06-13 08:17:52 +00:00
Stanislav Shwartsman
95fadbe96a
FIxed assertion failure in recently added code
2008-06-13 08:02:22 +00:00
Stanislav Shwartsman
ecc7f33933
- fixed compilation on big endian machines (patch from @SF)
2008-06-12 20:41:48 +00:00
Stanislav Shwartsman
3504406996
optimizations with branch_near usage
2008-06-12 20:27:38 +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
7f82a536b3
Fixed code duplication during prefix decoding
2008-06-11 20:58:29 +00:00
Stanislav Shwartsman
aff775bce4
Small code optimization
2008-06-09 19:35:59 +00:00
Stanislav Shwartsman
46e9d09cbc
Typo again :)
2008-06-04 16:31:03 +00:00
Stanislav Shwartsman
4c93fd4a21
Fixed typos (patch from @SF)
2008-06-04 16:27:42 +00:00
Stanislav Shwartsman
424f316e07
Fixed comment
2008-06-02 20:11:03 +00:00
Stanislav Shwartsman
3d3dba7804
- Implemented GD bit in DR7 register
2008-06-02 19:50:40 +00:00
Stanislav Shwartsman
b7480b3e6f
- Fixed x86 data breakpoint match when breakpoint length is 8 bytes
...
- FIxed x86 data breakpoint in paging disabled mode
2008-06-02 18:41:08 +00:00
Stanislav Shwartsman
d2ba79abdd
Removed PANIC in DqRq function
2008-05-31 21:17:02 +00:00
Stanislav Shwartsman
764756d74a
Handle reserved bits of CR8
2008-05-31 09:26:28 +00:00
Stanislav Shwartsman
46a9524e70
Fixed commnt
2008-05-30 21:14:49 +00:00
Stanislav Shwartsman
9393cff0b9
Fixed CPU CPL restore when in v8086 mode
2008-05-30 21:10:37 +00:00
Stanislav Shwartsman
3bfcdb154c
Added new file
2008-05-30 20:37:52 +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
5c75e54d45
cleanup and small optimization for non-paging mode
2008-05-30 16:58:47 +00:00
Stanislav Shwartsman
6c5f82c4c8
- Fixed bug in global pages TLB invalidation
2008-05-30 12:14:00 +00:00
Stanislav Shwartsman
ff332232d4
Fixed compiler warning
2008-05-26 21:51:46 +00:00
Stanislav Shwartsman
d295371450
- Correctly handle segment a byte in BIG real mode
2008-05-26 21:46:39 +00:00
Stanislav Shwartsman
aaf6b3a648
Added comments
2008-05-26 18:02:07 +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
7215607df2
- Fixed missed #DE exception in x86-64 IDIV instruction
2008-05-24 10:26:03 +00:00
Stanislav Shwartsman
d76297d01e
Fixed compilation err
2008-05-23 17:58:42 +00:00
Stanislav Shwartsman
3619c0f6b4
Some changes to make x86-debugger feature working back
2008-05-23 17:49:46 +00:00
Stanislav Shwartsman
3f1e436926
Removed unused variables in bx_dbg struct
2008-05-23 14:04:45 +00:00
Stanislav Shwartsman
2b4fa16c4a
Fixed EFLAGS update in IRET
2008-05-23 13:46:52 +00:00
Stanislav Shwartsman
4e091f2a3a
Improved debug prints
2008-05-21 21:38:59 +00:00
Stanislav Shwartsman
af78632408
Fixes in iret emulation
2008-05-20 22:15:16 +00:00
Stanislav Shwartsman
82d8e9a3b0
Fixed compilation warning
2008-05-19 20:05:03 +00:00
Stanislav Shwartsman
3b39c011a6
Fixed io permissions bitmap exception
2008-05-19 20:01:23 +00:00
Stanislav Shwartsman
8118ba1a67
Fixed debug extensions exception priority
2008-05-19 19:59:29 +00:00
Stanislav Shwartsman
4e5d10d02e
Code reorganization + small bug fixes in translate linear code
2008-05-19 18:10:32 +00:00
Stanislav Shwartsman
b9f2b61fa6
Fixed CPU bug which stopped the Menuet64 OS from booting !
2008-05-17 19:30:55 +00:00
Stanislav Shwartsman
76fc10e3d4
Added ability to override exception class to TRAP (#DB)
2008-05-15 20:10:00 +00:00
Stanislav Shwartsman
78324066c3
Fixed code descriptor fields in 64-bit mode
2008-05-13 05:12:11 +00:00
Stanislav Shwartsman
c3f96973ba
Added debug prints
2008-05-12 19:19:03 +00:00
Stanislav Shwartsman
6865edb5ee
Fixed pushing to stack in call far through 64-bit call gate
2008-05-12 06:12:12 +00:00
Stanislav Shwartsman
bef3450baa
Fixes to 64-bit mode
2008-05-11 20:46:11 +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
81b1a0ddb7
Fixed bug in BLENDVPS/PD instructions
2008-05-10 22:20:05 +00:00
Stanislav Shwartsman
56a44d675b
Fixed potential memory overflow in dbg paging function
2008-05-10 22:11:48 +00:00
Stanislav Shwartsman
c8f870c9ac
Remove incorrect assertion
2008-05-10 21:30:30 +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
ebc4bf0cff
Check RIP for canonical boundaries in 64-bit mode
2008-05-10 15:02:42 +00:00
Stanislav Shwartsman
3634c6f892
Compress FPU tag word
2008-05-10 13:34:47 +00:00
Stanislav Shwartsman
6ebae41ad7
print physcial address with special format - preparations for 64-bit physical address emu
2008-05-09 22:33:37 +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
80c9b5fcbe
Compilation error fixed
2008-05-09 08:28:00 +00:00
Stanislav Shwartsman
16d073bf51
Fixed recently introduced PUSH_Eq decoding bug
2008-05-08 21:34:22 +00:00
Stanislav Shwartsman
09c875b11c
Fixed dbg comment
2008-05-08 21:04:03 +00:00
Stanislav Shwartsman
6bb845caa0
iFixed ENTER instruction
2008-05-08 18:02:21 +00:00
Stanislav Shwartsman
25ce5f7d48
Small functionality correctness fixes
2008-05-07 16:45:07 +00:00
Stanislav Shwartsman
74e2127c5e
Fixed OF flag handling bug
2008-05-06 20:29:26 +00:00
Stanislav Shwartsman
5da460b6dc
Clear segment descriptor cache when loading null selector
2008-05-06 19:45:17 +00:00
Stanislav Shwartsman
48d45518eb
Fixed CMPXCHG code bug from yesterday
2008-05-06 05:06:32 +00:00
Stanislav Shwartsman
eedf26627f
Fixes in CMPXHG8B instruction - slight speedup and correct #AC check
2008-05-05 21:48:07 +00:00
Stanislav Shwartsman
685a10749d
Remove redundant RSP canonical check - will happen anyway in push function
2008-05-04 21:51:52 +00:00
Stanislav Shwartsman
64a80c8a2d
- Added canonical check for SYSENTER MSRs in WRMSR
...
- Fixed LLDT and LTR instructions in 64-bit mode
- Fixed error code for not 64-bit CS in interrupt from long mode
2008-05-04 21:25:16 +00:00
Stanislav Shwartsman
f642b57a54
Lazy falgs optimizations by Darek Mihocka
2008-05-04 15:07:08 +00:00
Stanislav Shwartsman
06e3615239
Reduce trace cache memory footprint using naive memory pool trace allocation
2008-05-04 05:37:36 +00:00
Stanislav Shwartsman
a6b360c92f
Removed duplicated ';'
2008-05-03 17:35:11 +00:00
Stanislav Shwartsman
50c9674d2e
Small optimization in memory access functions
2008-05-03 17:33:30 +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
73d8bd3af4
Hide more memory variables
2008-05-01 20:28:36 +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
8e8fa363f1
Check for seg cache valid bit in real mode as well - fix for big real mode
2008-05-01 05:11:19 +00:00
Stanislav Shwartsman
81deffd65d
More fetchdecode fixes
2008-04-30 21:32:33 +00:00
Stanislav Shwartsman
e5b6f90b62
some fetchdecode fixes
2008-04-30 21:07:12 +00:00
Stanislav Shwartsman
423aa44ab1
PUSHA/POPA fixes
2008-04-30 20:41:40 +00:00
Stanislav Shwartsman
c063563bb8
Fixed compilation error
2008-04-30 16:31:07 +00:00
Stanislav Shwartsman
affbdbefb4
do not cause tranition to MMX state if no MMX reg touched
2008-04-29 21:47:16 +00:00
Stanislav Shwartsman
18b4dec094
Fixed compilation error
2008-04-29 05:12:21 +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
b000c6ac17
- Fixed TSS limit check in task switch routine
2008-04-28 18:14:50 +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
7384c8e07d
Fixed restore state in task switch
2008-04-26 10:20:15 +00:00
Stanislav Shwartsman
bbe7db9e88
Fixed bug with pushing into new stack in exception function
...
Fixed bug with Expand down segment limits (can be critical)
2008-04-25 21:21:46 +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
00ee869624
alignment check for write_new_stack
2008-04-25 12:44:16 +00:00
Stanislav Shwartsman
a647c7e551
Check for old TSS limits in task switching logic
...
MSR_GSKERNELBASE should be canonical - added WRMSR check
2008-04-25 11:39:51 +00:00
Stanislav Shwartsman
b78878bd90
Fixed #AC exception detection
2008-04-25 08:19:36 +00:00
Stanislav Shwartsman
cf47fab9d0
Fixed address size wrap in the bittest/set instructions
2008-04-25 07:40:51 +00:00
Stanislav Shwartsman
ea48400435
Chnage back write variables order
2008-04-24 22:41:46 +00:00
Stanislav Shwartsman
83e55874a4
Fixed compilation issue
2008-04-24 21:59:42 +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
8e08402eb2
Fixed loading of SS null selector in long mode afer exception
2008-04-24 20:52:27 +00:00
Stanislav Shwartsman
b504253645
Added canonical check for LIDT/LGDT instructions in 64-bit mode
2008-04-24 19:34:01 +00:00
Stanislav Shwartsman
d24a274909
Eliminate can_pop function - with bugfix in retf
2008-04-23 17:25:21 +00:00
Stanislav Shwartsman
3c7949948b
- Added >32bit physical address PANIC in PSE mode with 4M paging
...
- Fixed LAR/LSL instructions in 64-bit mode
2008-04-22 22:05:38 +00:00
Stanislav Shwartsman
b33d1a19a4
Correctly push error code after task switch in exception()
2008-04-21 21:29:43 +00:00
Stanislav Shwartsman
c09934f90a
some small cleanup in paging code
2008-04-21 20:17:45 +00:00
Stanislav Shwartsman
55ee5f0f38
Fixed compilation errror
2008-04-21 19:55:04 +00:00
Stanislav Shwartsman
a055323e18
Handle undocumented FPU opcodes
...
Support for BIG real mode CS.LIMIT check
2008-04-21 14:17:04 +00:00
Stanislav Shwartsman
24f1507fa9
- sysenter/exit should be supported in v8086 mode as well
...
- fixed missed CS.LIMIT check in all far calls/jmps in real/v8086 mode
2008-04-20 21:44:13 +00:00
Stanislav Shwartsman
280617288c
Mode change in SYSENTER/EXIT/CALL/RET could happen only when already in long mode
2008-04-20 18:17:14 +00:00
Stanislav Shwartsman
a91ef4e31b
Ignore CS.L bit when EFER.LMA is not set
...
Add potentially missed CPU mode change in SYSCALL/RET/ENTER/EXIT
2008-04-20 18:10:32 +00:00
Stanislav Shwartsman
57a8e24615
Fixed REOUNDPS/PD/SS/SD
2008-04-20 14:10:44 +00:00
Stanislav Shwartsman
a45df4b584
Fixed ROUNDPS/PD bug
2008-04-20 13:32:42 +00:00
Stanislav Shwartsman
d9bf2b8453
Small emulation speed optimization
2008-04-19 22:29:44 +00:00
Stanislav Shwartsman
359eb92c73
More fixes for CPU emulation
2008-04-19 20:00:28 +00:00
Stanislav Shwartsman
e10bd0b7a5
tasking - read state first and only when store state in new TSS
...
paging - fixed data for trace-mem callbacks
2008-04-19 14:13:43 +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
8e2850b3ec
Mark TSS busy after it is loaded
2008-04-19 11:08:39 +00:00
Stanislav Shwartsman
8ff1b3c15e
Update MEM_ACCESS instrumentation
2008-04-19 10:13:04 +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
de97f61b0c
Fixed destination \register for SSE4.2 instructions
2008-04-18 14:15:58 +00:00
Stanislav Shwartsman
4ee1bf4b68
Fixed paging permissions for code fetch
2008-04-18 13:51:09 +00:00
Stanislav Shwartsman
eea58f04cd
Fixed ret_near decoding in 64-bit mode
2008-04-18 13:11:52 +00:00
Stanislav Shwartsman
5993ca527c
- fixed 286 tss handling (descriptor wasn't parsed correctly)
...
- fixed timing of faulted instructions
- fixed PANIC message in interrupt through incorrect task gate
2008-04-18 10:19:33 +00:00
Stanislav Shwartsman
72cefc818f
Fix busy TSS in TR
2008-04-17 14:22:23 +00:00
Stanislav Shwartsman
af88602782
Fixed get_SS_ESP_from_TSS to support busy TSS as well
2008-04-16 22:22:10 +00:00
Stanislav Shwartsman
36926542e6
Fixed canonical fault exceptions for call_far, interrupt, lldt and ltr instructions
2008-04-16 22:08:46 +00:00
Stanislav Shwartsman
c611d9aca0
Fixed LEAVE in 64-bit mode
2008-04-16 21:35:43 +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
419dc57dbd
Complete MASKMOVDQU decoding fix
2008-04-16 05:56:55 +00:00
Stanislav Shwartsman
b3167d1a8f
Docs for MASKMOVQ were also not correct :(
2008-04-16 05:45:45 +00:00
Stanislav Shwartsman
4f3f8608f7
Fixed MASKMOVDQU instruction decoding
2008-04-16 05:41:43 +00:00