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
Stanislav Shwartsman
67f02bfa12
Add debugger callback
2008-04-15 21:29:18 +00:00
Stanislav Shwartsman
6d65d82e03
Call BX_INSTR_EXIT callback instead of BX_INSTR_SHUTDOWN
2008-04-15 21:27:57 +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
e4b41764d0
Enabled #AC exception, fixed PANIC message
2008-04-14 21:48:37 +00:00
Stanislav Shwartsman
9668e735cd
Inline fpu exceptions functions
2008-04-14 16:50:27 +00:00
Stanislav Shwartsman
3dc0438c43
Implemented CALL_Far64 and JMP_Far64 according to Intel docs
2008-04-13 20:57:49 +00:00
Stanislav Shwartsman
76a8812876
correct some opcode aliases
2008-04-12 10:08:43 +00:00
Stanislav Shwartsman
397e2b6eac
fixed long mode exception handling
2008-04-11 21:40:36 +00:00
Stanislav Shwartsman
138023fbc7
Fixed priority between exceptions in call through call gate in 64-bit mode
2008-04-11 18:35:47 +00:00
Stanislav Shwartsman
20a8bf03ad
Added comments for >32 bit physical address error message
2008-04-11 14:30:15 +00:00
Stanislav Shwartsman
730214a8ec
Add TODO items
2008-04-08 17:59:51 +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
44f04a93da
Fixed compilation issue
2008-04-07 19:00:30 +00:00
Stanislav Shwartsman
fea49bb270
Fixed linear address wrap in legacy (not long64) mode
2008-04-07 18:39:17 +00:00
Stanislav Shwartsman
fe59e0ae6a
FIxed comment in fetchdecode
2008-04-06 18:31:10 +00:00
Stanislav Shwartsman
77d91d59aa
Inline prepare_SSE and prepare_XSAVE functions
2008-04-06 18:00:20 +00:00
Stanislav Shwartsman
420f30816d
inline integer saturation code - speedup for MMX/SSE integer
2008-04-06 13:56:22 +00:00
Stanislav Shwartsman
1b622661d7
Cleanup
2008-04-05 20:49:21 +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
16bf4402b0
Remove wrongly committed code
2008-04-05 17:57:21 +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
026c333fa9
move handleDAZ to fpu
2008-04-04 20:03:27 +00:00
Stanislav Shwartsman
52770feedd
Add CPUID bits comments and update CPU TODO
2008-04-04 12:23:19 +00:00
Stanislav Shwartsman
41fe0b3ebb
Fix code duplication
2008-04-03 18:59:10 +00:00
Stanislav Shwartsman
1808710881
fixed duplicate line
2008-04-03 18:13:26 +00:00
Stanislav Shwartsman
62e3728591
preparations for future optimizations - not necessary speedupo now
2008-04-03 17:56:59 +00:00
Stanislav Shwartsman
4180fd9e11
Merge resolve16/32/64.cc to single file
2008-04-03 17:44:33 +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
255d512e29
Organize bxInstruction fields differently
2008-03-31 17:33:34 +00:00
Stanislav Shwartsman
231056fff4
small cleanups
2008-03-29 21:51:42 +00:00
Stanislav Shwartsman
b5f5e01f7e
added assert to paging.cc
2008-03-29 21:12:11 +00:00
Stanislav Shwartsman
aade564f33
Correct variable name
2008-03-29 21:03:38 +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
14ff07b482
Small code cleanup
2008-03-29 09:58:23 +00:00
Stanislav Shwartsman
e48b398bee
Add NIL register and simplify more BxResolve work
2008-03-29 09:34:35 +00:00
Stanislav Shwartsman
1a59913e2b
Fixed BX_INFO message
2008-03-27 21:04:39 +00:00
Stanislav Shwartsman
8c24dfc01b
MSVC6 compilation changes
...
More effort to remove can_pop function calls - almost everything is clean
2008-03-26 16:25:05 +00:00
Stanislav Shwartsman
94f30955be
Fixed compilation error
2008-03-25 16:46:39 +00:00
Stanislav Shwartsman
74b2716263
Removed redundant can_pop call - in future I want to remove can_pop as well
2008-03-24 22:35:37 +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
a22160959b
HLT callback to Bochs internal debugger
2008-03-23 21:39:01 +00:00