Stanislav Shwartsman
abe3f4c5c2
Split one more opcode
2007-11-16 21:43:23 +00:00
Stanislav Shwartsman
b4b922809a
Move 3byte opcode decoding under Modrm condition
2007-11-16 20:49:51 +00:00
Stanislav Shwartsman
d4db077e48
Fixed MSVCPP warning/error
2007-11-16 20:33:21 +00:00
Stanislav Shwartsman
565e7f9868
Merge common fetchdecode groups. Add more comments to fetchdecode tables
2007-11-16 18:34:14 +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
9da22f9b65
Remove redundant BxAnother attr from prefixes
...
The meaning of BxAnother attr - instryction has modrm byte
2007-11-14 22:52:16 +00:00
Stanislav Shwartsman
dc5c25133f
Fixes in registers read/write -> fixed zero upper of register in POP_Ed
2007-11-13 21:07:08 +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
24e1936fbb
Fixed compilation warning when compiling with no x86-64
2007-11-09 12:06:34 +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
Stanislav Shwartsman
cfca3fdb8b
merge gate286 and gate386 in descriptor.h
2007-11-06 19:17:42 +00:00
Stanislav Shwartsman
494189e822
Small optimization for ADD lazy flags calculations.
...
Because most likely flags are not needed after ADD instruction - it is better to store less data for lazy flags and reconstruct it if needed
2007-11-06 08:39:25 +00:00
Stanislav Shwartsman
6629f6dea3
Fixed macro redefinition
2007-11-05 16:36:37 +00:00
Stanislav Shwartsman
44e49f2fe2
Fixed CPU state print in debug dump
2007-11-05 16:28:03 +00:00
Volker Ruppert
56dd9fe3d9
- fixed several MSVC compilation warnings
...
* MSVC doesn't support localized variables (e.g. valid inside of a 'for' loop
only). So we cannot use the variable 'i' with different types (unsigned / int)
in the reset() method.
* added some conversions from Bit64s to bx_bool
2007-11-03 16:55:08 +00:00
Stanislav Shwartsman
5a172541e2
Small cleanup
2007-11-01 20:43:53 +00:00
Stanislav Shwartsman
b90e97858b
Update CPU TODO and CHANGES
2007-11-01 19:04:01 +00:00
Stanislav Shwartsman
e137560b14
Complete MONITOR/MWAIT implemntation (including monitoring of memory range)
...
Fixed PANIC in read/write Cr/Dr - should #UD with unkown register used
2007-11-01 18:03:48 +00:00
Stanislav Shwartsman
ce0e0287fb
Naturally speedup repeat execution functions, fix TLB index calculations
2007-10-30 22:15:42 +00:00
Stanislav Shwartsman
a83b8ae843
Slight speed improvement in string functions
2007-10-29 15:39:18 +00:00
Stanislav Shwartsman
a4e20e9d29
warnings fixed
2007-10-24 23:02:09 +00:00
Stanislav Shwartsman
6d7134ef99
Remove dump_cpu debugger function, CPI method and all related structures.
...
Extended 'info' command in debugger to have all functionality of dump_cpu if needed. Also param tree print always could be used !
2007-10-23 21:51:44 +00:00
Stanislav Shwartsman
292153b30e
Fixed BranchImm cases in 64-bit mode
2007-10-22 17:41:41 +00:00
Stanislav Shwartsman
68ef783632
reduce amount of used temp variables
2007-10-21 23:35:11 +00:00
Stanislav Shwartsman
42fdd8a3a1
During Bochs benchmarking I figured out that hostasm actually slow down the emulation ... so remove this ugly code which also doesn't help :)
...
speedup flags update for some instructions - idea was taken from DT patch by h.johansson
2007-10-21 22:07:33 +00:00
Stanislav Shwartsman
28a5c6741c
Fix SSE4 MOVNTDQA instruction - memory access must be always aligned
2007-10-20 17:03:33 +00:00
Stanislav Shwartsman
5445de19d1
Decoding : F2 and F2 prefix could override prefix 66 when determine SSE opcode
2007-10-20 10:56:44 +00:00
Stanislav Shwartsman
679110caa9
fixed push to new stack for long mode
2007-10-19 12:40:19 +00:00
Stanislav Shwartsman
0f3fdaf94b
exception was suffering from the same issue - fixed with new_stack push functtions
2007-10-19 10:59:39 +00:00
Stanislav Shwartsman
0fc32d3c81
Fixed except_chk issue in more clean way - added 3 new methods for pushing to new, still not loaded stack
2007-10-19 10:14:33 +00:00
Stanislav Shwartsman
4ec7f5df39
Optimize access to IP (16 bit) - made IP register similar to GPR
2007-10-18 22:44:39 +00:00
Stanislav Shwartsman
8065ada31f
Some EIP setting cleanups.
...
OK, currently I see big mess with setting of CS/EIP and SS/ESP everywhere, I have to unify it and make it easier !
2007-10-18 21:27:56 +00:00
Stanislav Shwartsman
f8317d2dcd
Unwrap all memory access functions, speed is still more important that code duplication in Bochs :)
2007-10-17 18:09:42 +00:00
Stanislav Shwartsman
f69a21ab2b
Fix some copyright messages
2007-10-15 22:07:52 +00:00
Stanislav Shwartsman
c0640a078c
INFO message about CPU reset
2007-10-14 21:42:50 +00:00
Stanislav Shwartsman
52891b501b
Correct name for cpu param when only 1 cpu is used
2007-10-14 19:36:23 +00:00
Stanislav Shwartsman
e9801ef501
Support for restore cpu (and any other device from bochs root) from debugger
2007-10-14 19:04:51 +00:00
Stanislav Shwartsman
c0e7c31b7d
Param name fixed to capital letters
2007-10-14 00:22:07 +00:00
Stanislav Shwartsman
ac272e9383
Changes breakpoints configure time enable macroses - reduce amount of compile-time parameters
2007-10-12 22:11:25 +00:00
Stanislav Shwartsman
2a1bcb3e21
Some fixes in CPUID by default
2007-10-12 21:45:41 +00:00
Stanislav Shwartsman
26848ad07d
Change ARPL error message to BX_DEBUG (happens too offen in win98)
2007-10-12 19:45:12 +00:00
Stanislav Shwartsman
082eb05b6b
First step to fully configurable CPUID
...
- put CPUID functions data into array, in future we could load this array from configure file
- cpuid initialize function is more flexible now but still reuire some work
2007-10-12 19:30:51 +00:00
Stanislav Shwartsman
be9ad60ef3
cleanups
2007-10-11 22:44:17 +00:00
Stanislav Shwartsman
8adbbcf17c
Started first implementation of MONITOR/MWAIT
2007-10-11 21:29:01 +00:00
Stanislav Shwartsman
f6ed95785f
added cpu state param - for future use and for dbg info
...
started to move debugger to info bx_param interface -> info sse and info mmx commands modified
2007-10-11 18:12:00 +00:00
Stanislav Shwartsman
fbcdfa49c2
Cleanup
2007-10-10 22:20:32 +00:00
Stanislav Shwartsman
c6efc84149
Optimize building of segment ROK/WOK cache
2007-10-10 22:00:51 +00:00
Stanislav Shwartsman
82b7eaabd5
CLFLUSH do not fault when checking execute only segment
2007-10-10 21:48:46 +00:00
Stanislav Shwartsman
07739173f5
add --show-ips to all configs for future releases (it is not ON by default ?)
...
Bit32u -> bx_phy_address in debugger and some other places
2007-10-09 19:49:23 +00:00
Stanislav Shwartsman
2d981562c4
changes Bit32u -> bx_phy_address in dbg paging method
2007-10-08 20:45:30 +00:00
Stanislav Shwartsman
2548c05537
Enable SSE4_2 in CPUID
2007-10-01 21:08:26 +00:00
Stanislav Shwartsman
dbb91069f4
Added SSE4_2 instructions emulation
2007-10-01 19:59:37 +00:00
Stanislav Shwartsman
a0d0de9fd4
Fixed ARPL issue mentioned in
...
Attacks on Virtual Machine Emulators
document by Symantec
2007-09-30 18:47:41 +00:00
Stanislav Shwartsman
071c5c1a26
A lot of changes but everything is really trivial.
...
Make save/restore default feature, the configure option for save/restore removed from configure script and save/restore made available forever. All code now assume it is exists. Bochs save/restore tree previosly called "save_restore" renamed to "bochs" tree and it will be havily used everywhere, starting from save/restore and ending by various bochs debugger functions. I am going to rework debugger code to get rid of debug CPU access functions and use this "bochs" param tree instead
2007-09-28 19:52:08 +00:00
Stanislav Shwartsman
02b7d8b43d
Remove 'result' variable where it is definitelly not needed - simplify sse code
2007-09-27 16:23:29 +00:00
Stanislav Shwartsman
d9005b88c1
Added error code for exception debug messages - help to debug
2007-09-27 16:22:14 +00:00
Stanislav Shwartsman
deb79e9675
[Bochs-developers] [PATCH] avoid RCX without BX_SUPPORT_X86_64
2007-09-27 16:11:32 +00:00
Stanislav Shwartsman
7e629dedad
remove dbg print
2007-09-26 19:10:41 +00:00
Stanislav Shwartsman
44a04a5fa3
readability/writeability bit should not be checked in 64-bit mode
2007-09-26 19:09:10 +00:00
Stanislav Shwartsman
dcb0335ae9
Debug first instruction in exception handler after exception
2007-09-26 18:07:39 +00:00
Stanislav Shwartsman
e812f81e7b
Fixes in zero upper ECX
2007-09-25 16:11:32 +00:00
Stanislav Shwartsman
3e3254ecc4
some speedup for SSE code - achived by code simplification
2007-09-20 22:55:03 +00:00
Stanislav Shwartsman
91e6ca8d5c
Implemented MTRR support
...
Fixes in #PF exception priority
2007-09-20 17:33:35 +00:00
Stanislav Shwartsman
0dc4badfbb
Added SSE4A and SSE4_2 to disassembler
...
Implemented POPCNT instruction
2007-09-19 19:38:10 +00:00
Stanislav Shwartsman
70f513b07b
Make efer control MSR separate register
2007-09-10 20:47:08 +00:00
Stanislav Shwartsman
b4df87c9b0
Added CVS id
2007-09-10 16:04:41 +00:00
Stanislav Shwartsman
412eeeeb7c
Get crregs definition to separate file from cpu.h
2007-09-10 16:00:15 +00:00
Stanislav Shwartsman
016660698e
just code cleanup, preparation for future
2007-08-31 18:09:34 +00:00
Stanislav Shwartsman
5ac1bb6646
rewrite page fault
2007-08-30 16:48:10 +00:00
Stanislav Shwartsman
b64fc08c54
implement prefetch hint opcodes
2007-08-23 16:47:51 +00:00
Stanislav Shwartsman
4555cc9be3
ud2b opcode should have modrm byte
2007-08-18 13:51:16 +00:00
Stanislav Shwartsman
895891b673
Implemented #AC check under configure option
...
Fixes in misaligned SSE support
2007-07-31 20:25:52 +00:00
Stanislav Shwartsman
58a2595bca
Misaligned SSE support
2007-07-15 19:03:39 +00:00
Stanislav Shwartsman
38d1f39c77
Converted CR0 bits to one register similar to CR4 - a bit slower but helps with other features implemntation
2007-07-09 15:16:14 +00:00
Stanislav Shwartsman
7c6c2bb520
Removed PANIC message
2007-06-08 09:25:30 +00:00
Stanislav Shwartsman
65a99eb736
Change BX_ERROR to BX_DEBUG
2007-04-25 20:14:15 +00:00
Stanislav Shwartsman
55365ba713
Minimize usage of result register
2007-04-19 19:09:52 +00:00
Stanislav Shwartsman
1c3e703394
Fixed DAZ handling by CVT instructions
2007-04-19 18:50:57 +00:00
Stanislav Shwartsman
5189cfbf10
SSE4 support
2007-04-19 16:12:21 +00:00
Stanislav Shwartsman
f6af99dead
Some variables renaming + CPU vendor variable defition
2007-04-17 21:38:51 +00:00
Stanislav Shwartsman
6c139a9c8c
Define LIN and PHY address size in config.h
2007-04-14 10:05:30 +00:00
Stanislav Shwartsman
3886e35bcb
Clean code duplication
2007-04-09 21:55:07 +00:00
Stanislav Shwartsman
223b9fda0e
Fixed RIP relative mode when in 32-bit address size
2007-04-09 21:15:00 +00:00
Stanislav Shwartsman
e26609fa97
Support for Intel LSS/LFS/LGS in 64-bit mode
...
TODO: have both AMD and Intelk versions
2007-04-09 20:28:15 +00:00
Stanislav Shwartsman
b6c8275cfd
remove old PIT model and always use Greg Alexander's new one
2007-04-08 21:57:06 +00:00
Volker Ruppert
f8aec91820
- fixed some MSVC warnings
2007-04-06 15:22:17 +00:00
Stanislav Shwartsman
65b9b46de3
Fix for legacy compilers
2007-04-04 16:55:50 +00:00
Stanislav Shwartsman
bdc4905c8a
Correctly detect SSE2 and SSE instructions and #UD when SSE2 is OFF for SSE
2007-04-02 10:46:33 +00:00
Stanislav Shwartsman
4bb19c2dc3
Fixed deciding and disasm of CALL in 64-bit mode (no 16-bit calls allowed)
2007-03-28 21:20:09 +00:00
Stanislav Shwartsman
26f08fdb2c
Change my e-mail to #SF one
2007-03-23 21:27:13 +00:00
Stanislav Shwartsman
c184a3a2ba
Removed redundant mem-only checks - handled in fetchdecode now
2007-03-23 14:50:45 +00:00
Stanislav Shwartsman
ef542b3790
Learn to decode and disassemble VMX opcodes
...
No fetchdecode support but everything is ready
2007-03-23 14:35:50 +00:00
Stanislav Shwartsman
1ec33ec518
Correctly #UD on aliased instructions when no SSE2 is configured
2007-03-22 22:51:41 +00:00
Stanislav Shwartsman
0436125d60
Some cleanup in lazy flags CF handling
2007-03-18 19:29:17 +00:00
Stanislav Shwartsman
b8787fd5a7
Some code cleanups and warning fixes
2007-03-14 21:15:15 +00:00
Stanislav Shwartsman
8ce336cad3
Fixed PANIC message
2007-03-10 09:04:39 +00:00
Stanislav Shwartsman
05ea111e1c
Clean CPU debug methods in main cpu_loop
2007-03-06 17:47:18 +00:00
Stanislav Shwartsman
8067503c67
PUSHA/POP instructions rewritten, fixed PANIC message
2007-03-02 21:03:25 +00:00
Stanislav Shwartsman
d3252fbc1c
Removed unneeded invalidate_prefetch_q from RDMSR instruction
2007-02-23 22:08:43 +00:00
Stanislav Shwartsman
8d2060b855
Replace access_linear by read_virtual_xword when applicable
2007-02-03 21:36:40 +00:00
Stanislav Shwartsman
2f9e1bee68
fixed code duplication and comments
2007-02-03 17:56:35 +00:00
Stanislav Shwartsman
372ac39050
Report some cache info in CPUID - port from QEMU
2007-01-29 17:56:03 +00:00
Stanislav Shwartsman
c24627c00f
Implemented CLFLUSH instruction
...
Set of minor fixes for correctness
2007-01-28 21:27:31 +00:00
Stanislav Shwartsman
82607c4a35
Safety net - comment BX_WRITE_32BIT_REG macro - always use WRITE_32BIT_REGZ instead !
2007-01-26 22:16:59 +00:00
Stanislav Shwartsman
8221fa6838
- Fixed zero upper 32-bit part of GPR in x86-64 mode
...
- CMOV_GdEd should zero upper 32-bit part of GPR register even if the
'cmov' condition was false !
2007-01-26 22:12:05 +00:00
Stanislav Shwartsman
acd1a05f6f
Fixed bugs for SSE3E execution and decoding
2007-01-25 21:44:35 +00:00
Stanislav Shwartsman
f8003098b1
Rename SSE4 to SSE3E to match intel docs. SSE4 coming later ;)
...
Fixed "last prefix" for REX in 64-bit mode
2007-01-25 19:09:41 +00:00
Stanislav Shwartsman
0e991964fd
incorrectly committed debug code
2007-01-13 10:45:32 +00:00
Stanislav Shwartsman
dd00bc66d0
Fixed disasm in 64bit mode, added new accessor for printing 64bit values
2007-01-13 10:43:31 +00:00
Stanislav Shwartsman
9db896d100
minor x86_64 fixes and cleanups
2007-01-12 22:47:21 +00:00
Stanislav Shwartsman
9b10f209f3
Fixed typo
2007-01-12 16:09:39 +00:00
Stanislav Shwartsman
5c21f7821f
Speed simulation between 3 to 5% by eliminating several checks from cpu loop.
...
The checks were related to repeat instructions - handle them differently
2007-01-05 13:40:47 +00:00
Stanislav Shwartsman
6e8dcbce8b
Fixed 64-bit NOP problem
...
Patch by mvysin in patch tyracker
2006-11-26 12:53:01 +00:00
Volker Ruppert
e8cd2052c9
- improved gdbstub network efficiency (SF patch #1149659 by Avi Kivity)
...
- reimplemented "enter debugger" in ask dialog for gdbstub
- X11 and wxWidgets ask dialog now show "Debugger" button for gdbstub
- indent mode changes
2006-10-29 08:48:30 +00:00
Stanislav Shwartsman
905de565a9
Add debug prints for NX bit feature
2006-10-28 12:31:23 +00:00
Stanislav Shwartsman
650086669c
Print 64-bit registers in 'info registers' command and in dump_regs
2006-10-21 22:06:39 +00:00
Volker Ruppert
8312d149eb
- stop flooding logfile when using MS-DOS with EMM386. It seems to work correctly,
...
so I think this message can be changed to BX_DEBUG.
2006-10-20 15:38:39 +00:00
Stanislav Shwartsman
e3da944cd3
Fixed TLB access code duplication
2006-10-04 19:47:24 +00:00
Stanislav Shwartsman
6c63e84d23
Fixed CR3 masking in long mode
...
Added PANIC assertion of 32-bit physical address in PAE mode
cleanup
2006-10-04 19:08:40 +00:00
Stanislav Shwartsman
7dc808e7f9
Removed debug snapshot when entering SMM/RSM
2006-10-03 22:41:02 +00:00
Stanislav Shwartsman
1aa7ae677d
Small cleanup in he APIC code, removed unused methods
2006-10-02 21:49:49 +00:00
Volker Ruppert
f091c7c0ad
- SMM must be enabled until all data is read from RAM
2006-10-02 21:22:59 +00:00
Stanislav Shwartsman
14afe14a21
New BIOS expects to see 0x64 in smm revision id when in x86-64 mode
2006-10-02 18:50:34 +00:00
Volker Ruppert
0c827dcbf1
- implemented debugger access to SMRAM area
2006-10-02 17:40:20 +00:00
Stanislav Shwartsman
925ae93e22
Reveer back changes for debug.h removal from bochs.h
2006-09-26 19:16:10 +00:00
Stanislav Shwartsman
aab3feb2e0
Fixed Makefile to compile with ACPI stub disabled
...
Remove bx_debug.h from bochs.h to reduce compilation dependencies
2006-09-25 20:13:52 +00:00
Volker Ruppert
1f5d311ca1
- fixed memory leaks found with valgrind when trying to start a second
...
simulation with wxBochs:
* cpu: delete pageWriteStampTable array
* devices: simplified setup of initial default i/o handlers
* ne2k: delete ethernet module in destructor
2006-09-20 20:52:23 +00:00
Stanislav Shwartsman
3ab94305a0
1. Fixed bug report
...
[ bochs-Bugs-1562172 ] TLB_init() fails to initialize priv_check array if USE_TLB 0
2. Paging is always exists for i386+
To disable paging it is better to use normal model without special code, only by setting cr0.pg=0
2006-09-20 17:02:20 +00:00
Stanislav Shwartsman
02c2fc9e89
Fixed priveledge level checks
2006-09-10 16:56:55 +00:00
Volker Ruppert
5dd0d64b11
- several changes for restart support in wx (not yet complete)
...
* don't initialize cpu specific parameters for the wx debugger if they already
exist
* separate siminterface method init_save_restore() added
* old wx specific handling in quit_sim() removed
* new bx_list_c method clear() deletes all parameters from the list
* moved devices cleanup code from the pc_system to a new devices method exit()
* pc_system init code now sets ticksTotal to 0
2006-09-07 18:50:51 +00:00
Stanislav Shwartsman
173d126763
Fixed LDTR reset vales
2006-08-31 18:21:16 +00:00
Stanislav Shwartsman
fdac9efa9b
Fixed ton of code duplication.
...
Do not save/restore XMM8-XMM15 not in 64-bit mode
2006-08-31 18:18:17 +00:00
Volker Ruppert
3600f1af41
- fixed LDTR list size
2006-08-26 07:35:27 +00:00
Stanislav Shwartsman
65082e4a4f
Handle granularity field for LDT
...
Next step - fix code duplication with TSS
2006-08-25 19:56:03 +00:00
Stanislav Shwartsman
54fb3b769a
Fixed LDT 16-bit limit, must support all 32-bit values.
2006-08-22 19:06:03 +00:00
Stanislav Shwartsman
3ce7764fce
Fixes in 64-bit decoding
2006-08-11 17:23:36 +00:00
Volker Ruppert
00a66c380a
- fixed boot failures on big endian machines (thanks to the SF compile farm)
2006-08-03 21:03:21 +00:00
Volker Ruppert
8e85b8654b
- fixed repeat speedup optimization on big endian machines
2006-08-01 17:09:05 +00:00
Stanislav Shwartsman
45353d5e6f
Fixed DR registers handling in x86-64 mode
2006-06-26 21:07:44 +00:00
Stanislav Shwartsman
aa1a61bfde
Add (when needed) or remove (when not needed) x86-64 compilation hack
2006-06-26 20:28:00 +00:00
Stanislav Shwartsman
c7aa53d044
Fixed compilation error of extdb
2006-06-25 21:44:46 +00:00
Stanislav Shwartsman
f9754dadeb
Fix some code duplication
2006-06-24 18:27:11 +00:00
Stanislav Shwartsman
5ade11bae4
Added exception debug print
2006-06-22 19:53:58 +00:00
Stanislav Shwartsman
6468398104
Fixed APIC interrupt priority bug
2006-06-20 16:51:03 +00:00
Stanislav Shwartsman
070d782ec8
Move paddr_valid param of dbg_xlate_linear2phy method to return value.
...
This is much easier to use.
2006-06-17 12:09:55 +00:00
Stanislav Shwartsman
f44190ed27
Comment most likely redundant invalid_prefetch_q
2006-06-16 20:08:03 +00:00
Stanislav Shwartsman
9269288319
Fix SR macros mis-use. Need to add assertion into bxlist_c and check that it has no 2 params with same name inside !
2006-06-14 16:44:33 +00:00
Stanislav Shwartsman
8ed8916ea9
Break to debugger on triple fault or panic (this time do it correctly)
...
Indent changes
2006-06-12 19:51:31 +00:00
Stanislav Shwartsman
49d7b4614f
Fixed another bug generator - duplication between descriptor type field and four descriptor cache bits
2006-06-12 16:58:27 +00:00
Stanislav Shwartsman
5a80bf51ca
Added more definitions
2006-06-11 21:55:39 +00:00
Stanislav Shwartsman
308521e7ce
Fixes in SYSCALL/SYSRET instructions
...
Use parse_selector to avoid code duplication
2006-06-11 21:37:22 +00:00
Stanislav Shwartsman
869f74b3ee
Reduce amount of dbg_get_cpu calls (I would like to remove this function) and use save/restore power in debugger
2006-06-11 16:40:37 +00:00
Stanislav Shwartsman
deab206378
More useful debug prints
2006-06-09 22:39:50 +00:00
Stanislav Shwartsman
6c3420a18b
Add debug prints before any #GP excepion which only possible to be generated
2006-06-09 22:29:07 +00:00
Stanislav Shwartsman
3cb38b3c45
Indent changes
2006-06-09 21:17:26 +00:00
Stanislav Shwartsman
fea9973570
Fixed failure when running 386 simulation
2006-06-09 21:14:25 +00:00
Stanislav Shwartsman
84124f29d2
Fix FPU tos value (found with save/restore logs browsing
2006-06-08 19:56:30 +00:00
Volker Ruppert
d550d71e03
- register parameters for the wx debugger only if present (fixes memory leak)
...
- removed useless static variable 'counter'
2006-06-06 18:36:50 +00:00
Stanislav Shwartsman
1deddb9f0e
Fix linking problem with debugger enabled
2006-06-06 16:46:08 +00:00
Stanislav Shwartsman
c8c5772f44
1. Fix BX_INFO message in config.cc
...
2. In init.cc save and restore BX_CPU_THIS__PTR trace value, allows to enable/disable tracing using save/restore.
3. in iret.cc - cleanup3. in iret.cc - cleanup3. in iret.cc - cleanup
2006-06-05 17:33:25 +00:00
Stanislav Shwartsman
f31e03d4cb
More clear debug message
2006-06-05 16:38:43 +00:00
Stanislav Shwartsman
08d7e8e305
Fixed wrong assert_check failure found during x86-64 save/restore experiments
2006-06-05 16:36:56 +00:00
Stanislav Shwartsman
1aaf19cd09
Support for partial read/write in APIC space
2006-06-05 05:39:21 +00:00
Stanislav Shwartsman
fea15294b5
Fixed compilation error in init.cc
...
Move initialization of memory object to misc_mem.cc
2006-06-03 12:59:14 +00:00
Stanislav Shwartsman
d17eb99f76
fixed allocated physical memory limit check in memory.cc
...
Force eflags before saving them - register eflags using param handlers
2006-06-01 20:05:15 +00:00
Stanislav Shwartsman
02aa59886c
Fix APIC tmr/isr/irr registers reading problem
2006-06-01 14:05:23 +00:00
Stanislav Shwartsman
32a6e4c561
Added more debug messages to apic
2006-06-01 11:59:23 +00:00
Stanislav Shwartsman
4b7e7087aa
Handle more fields memory management insie the bx_param_c.
...
Remove more strdups
2006-05-30 17:01:27 +00:00
Stanislav Shwartsman
fee48d74e0
Avoid doing strdup for param name field - most of the strdups elliminated !
2006-05-29 22:33:38 +00:00
Stanislav Shwartsman
5b912c26af
Fixed save/restore of segment registers for x86-64 mode
2006-05-28 19:18:29 +00:00
Stanislav Shwartsman
286b89d763
Several x86-64 MSRs were not-initilized !
...
Fixed small save-restore bug in dma.cc
First step to make save-restore code look better (only several files processed for example)
2006-05-28 17:07:57 +00:00
Stanislav Shwartsman
8ed9a2fa4e
Use MAX_LFV_ENTRIES constant
2006-05-27 21:44:40 +00:00
Stanislav Shwartsman
0977bef9a2
Fix compilation err for x86-64
2006-05-27 16:05:30 +00:00
Stanislav Shwartsman
8b0df8e99b
Merge SAVE_RESTORE branch to CVS
2006-05-27 15:54:49 +00:00
Stanislav Shwartsman
7c1767d17a
Partial sync with save-restore
2006-05-27 14:02:34 +00:00
Stanislav Shwartsman
65e0fea773
functionally nothing changed
2006-05-26 17:24:36 +00:00
Stanislav Shwartsman
a4129e5341
Handle NULL_SEG_REG (no segment override) case in fetchdecode.cc
2006-05-24 20:57:37 +00:00
Stanislav Shwartsman
1acdb7f274
Simplify CPU loop and fix compilation error
2006-05-24 16:46:57 +00:00
Stanislav Shwartsman
c120d5dc70
remove unused and not required apic vars
2006-05-23 16:42:50 +00:00
Stanislav Shwartsman
a010cfb8ca
Fix amount of XMM registers in non-x86-64 mode
2006-05-22 21:17:27 +00:00
Stanislav Shwartsman
8b55085c76
Merge tss286 and tss386 segment descriptor cache fields to one structure
2006-05-21 20:41:48 +00:00
Stanislav Shwartsman
d00b2dec1d
LDTR and TR type check in assert_check
2006-05-21 19:31:23 +00:00
Stanislav Shwartsman
73e1266cbe
Add CR0 consistency checks and CS.L/CS.D consistency check
...
Optimize icache writestamps - 2x more space to decrement for page-write-stamp
2006-05-19 20:04:33 +00:00
Stanislav Shwartsman
274e17a1fc
Remove unneeded function
2006-05-18 20:16:15 +00:00
Stanislav Shwartsman
8db1de7124
- Fixed several issues, each cause to NullTimer function never be called, the method is required for icache correct functionalit
...
- Speed-up icache by correct purging of Icache entries
- Several new assertions for timers, to prevent bugs in future
2006-05-16 20:55:55 +00:00
Stanislav Shwartsman
7acb46cd3d
Small cleanup in cpu.cc
2006-05-16 16:47:00 +00:00
Stanislav Shwartsman
16713b309d
PALIGNR fixed
2006-05-16 16:20:26 +00:00
Stanislav Shwartsman
7c2c9c41e8
Remove unused CPU vars
2006-05-15 18:00:55 +00:00
Stanislav Shwartsman
f4c7b4074e
Support for x86-64 in x86 debugger (DR0-DR7)
2006-05-13 12:49:45 +00:00
Stanislav Shwartsman
9a32d0e98f
Optimize debug registers handling
2006-05-13 12:29:12 +00:00
Stanislav Shwartsman
fc799ab623
FetchDecode tables are constant. Marking them const implicitly will help to compiler/linker in optimization.
2006-05-12 18:03:26 +00:00
Stanislav Shwartsman
fe644dfcbf
- Code cleanup, remove x86-64 code from functions which cannot be called from x86-64
...
- Fix PANIC multiple SSE prefix decoding (fetchdecode and disasm)
- More Bit32u -> bx_phy_address convert
- Lazy flags optimization
2006-05-12 17:04:19 +00:00
Stanislav Shwartsman
b0e49a9a05
Warn if somebody used BSWAP with 16-bit opsize (behavior undefined)
2006-05-07 20:56:40 +00:00
Stanislav Shwartsman
91ada6c72c
Separate RepeatSpeedups code in io.cc to stand-alone CPU methods
...
FestRepINSW and FastRepOUTSW similar to that is done in string.cc
Done to simplify the code, it was just impossible to understand it.
2006-05-07 20:45:42 +00:00
Stanislav Shwartsman
20b14aefa6
Fix in BSWAP 64-bit mode - allow to use additional R8-R15 registers
...
Also fixed code duplication story with BSWAP instruction
2006-05-07 18:58:47 +00:00
Stanislav Shwartsman
d69eba6c07
Split in/out instructions based on operand size
2006-05-07 18:27:36 +00:00
Stanislav Shwartsman
767fb77ebd
Fully handle segment limits inside prefetch method.
...
1. Should speed up the simulation (eliminate seg.limit check per every instruction exec)
2. Should help for DT (h.johansson request)
2006-05-04 19:54:25 +00:00
Volker Ruppert
9340f3b3f8
- partial sync with BRANCH_SAVE_RESTORE_3 (hardware save/restore not present yet)
...
* changed data format of text files for save/restore (looks like C/C++ structures,
similar to the format used in old save/restore branches)
* don't set the initial value of shadow bool parameters
* don't set the initial value of bool parameters twice
* cpu/init.cc: missing #undef added
* ne2k.cc: variable tx_timer_active was never set to 1 (type now bx_bool)
* floppy.cc: missing initialization of the 'eot' array in reset() added
* pic.h: type of member 'byte_expected' changed to Bit8u
* pit_wrap.h: unused members removed
2006-05-01 18:24:47 +00:00
Stanislav Shwartsman
f93ab35357
Flush TLB for all CPUs when memory mapping information changed by system (A20 change, PAM write or similar events)
2006-04-29 17:21:49 +00:00
Stanislav Shwartsman
199c987ee3
Return back (modified) dbg_is_end_instr_bpoint method in cpu.cc
2006-04-29 16:14:47 +00:00
Stanislav Shwartsman
2889ed190c
Removed icount guard for debugger. Implement STEPN debugger command using CPU_LOOP method capabilities
2006-04-29 09:27:49 +00:00
Stanislav Shwartsman
1a0b7ee1e3
I want to replace debugger ICOUNT guard by existent cpu_loop funtionality, first step to do that ...
2006-04-29 07:12:13 +00:00
Stanislav Shwartsman
510cbe02e2
Make fetchInstruction INLINE according to hjjhansson patch
2006-04-28 16:45:29 +00:00
Stanislav Shwartsman
003c2f59e6
Added missed CVS header to several files
2006-04-27 15:11:45 +00:00
Stanislav Shwartsman
bb1116e569
Fixed bx_cpu_c::MOVD_EdVd () always UDs
...
reported in mailing list
2006-04-27 06:09:56 +00:00
Stanislav Shwartsman
798c90ee85
Fixed comments
2006-04-26 14:05:28 +00:00
Stanislav Shwartsman
4b86ae3917
Added new ar_byte function, might be used to fix code duplication and for save-restore
2006-04-25 15:35:26 +00:00
Stanislav Shwartsman
b2408c2fca
Added assertion check CPU method, could be used for "debug mode" run with checking various assumptions before each instruction emulation
2006-04-25 14:42:57 +00:00
Stanislav Shwartsman
1939544bf8
move get_descriptor_l/get_descriptor_h methods to general cpu methods (were debugger only)
2006-04-23 17:16:27 +00:00
Stanislav Shwartsman
63dc4d4e10
Fixed CR4 GP(0) condition (patch by no_mayl in mailing list)
2006-04-23 16:11:16 +00:00
Stanislav Shwartsman
cc29f3d94b
Remove duplicate ';'
2006-04-23 16:03:46 +00:00
Stanislav Shwartsman
44afbdcd82
Implemented FXSAVE/FXRSTOR for FOO/FIP/FDP fields
2006-04-23 16:01:34 +00:00
Stanislav Shwartsman
ff02bc8ef0
Fixed:
...
With cvs snapshot 2006-04-09, --enable-debugger does not show the executed instructions anymore after being enabled via iodebug or "trace on".
2006-04-23 15:37:25 +00:00
Volker Ruppert
52c4666465
- partial sync with BRANCH_SAVE_RESTORE_3 (hardware save/restore not present yet)
...
* fixed minimum limit of signed variable types
* don't set the initial value of shadow parameters
* fixed range check for shadow parameters
* added support for setting the value base (decimal/hex) of numeric shadow parameters.
The text format hex number is now initialized in the constructor
* added missing newline after filename for binary data
* fixed data size of 64-bit shadow parameters
* fixed save/restore output format of numeric parameters (signed/unsigned/64-bit)
* cpu/init.cc: fixed macro name and added missing #undef line
2006-04-22 18:14:55 +00:00
Volker Ruppert
eb2104d0de
- parameters for the wx debugger moved to a separate subtree to avoid conflicts
...
with the proposed save/restore feature
- fixed a warning in the cpu parameter handler for the wx debugger
2006-04-16 10:12:32 +00:00
Stanislav Shwartsman
d972e4a4b7
Fixed CR3 restore in RSM instruction
...
Added HALT state indication (actually make existant one working for single CPU)
2006-04-10 19:05:21 +00:00
Stanislav Shwartsman
e7565760f7
Fixed compilation error when DEBUGGER is enabled
2006-04-07 20:53:39 +00:00
Stanislav Shwartsman
45f30f0a4c
some code written to enter CPU to shutdown state.
...
finally the shutdown handling should be done exactly as in VmWare - the GUI should ask user if the CPU should reset and go to HLT/IF=0 if user choosed to stay in shutdown mode.
CPU configure option reset-on-triple-failt should be extended to shutdown-reset=0|1
small code cleanups and fixes
2006-04-07 20:47:32 +00:00
Stanislav Shwartsman
7a1d0a53d7
Small cleanup
2006-04-06 18:45:54 +00:00
Stanislav Shwartsman
03eac64013
Added decoding of new SSE4 instructions (recently published in Intel docs)
...
At least CPUID detects them correctly
The code is never tested (still) ! (but should work fine)
2006-04-06 18:30:05 +00:00
Stanislav Shwartsman
c8cc6bcd14
Remove code duplication from SMM code
2006-04-06 16:47:29 +00:00
Stanislav Shwartsman
9dc1790f07
Simplify and optimize fetchdecode methods.
...
Now fetchdecode is simpler to understand and easier to modify, for example to support 3-byte opcodes (SSE4)
2006-04-05 20:52:40 +00:00
Stanislav Shwartsman
b9dedc8412
Added missed file from prev commit (waiting for moderator approval, message is too big)
...
Summary changes:
- Fixed critical ICACHE bug from one of the recent commits
- Complete preliminary SMM implemntation, SMI still PANICs but 'alwayscont' should work fine
- Correctly decode, disassemble and execute 'XCHG R8, rAX' x86-64 instruction
- Correctly decode, disassemble and execute multi-byte NOP 0F F1 opcode
- Fixed ENTER and LEAVE instructions in x86-64 mode
- Disasm SSE4 instructions
- Rename PNI->SSE3 everywhere in the code
2006-04-05 17:44:04 +00:00
Stanislav Shwartsman
f8c3968d42
Changes list made after CVS service crash:
...
- Fixed critical bug in CPU code added with one of the prev commits
- Disasm support for SSE4
- Rename PNI->SSE3 everywhere in the code
- Correctly decode, disassemble and execute 'XCHG R8, rAX' x86-64 instruction
- Correctly decode, disassemble and execute multi-byte NOP 0F F1 opcode
- Fixed ENTER and LEAVE instructions in x86-64 mode
- Added ability to turn ON instruction trace, only GUI support is missed.
Instruction trace could be enabled if Bochs was compiled with disasm
- More changes Bit32u -> bx_phy_address
- Complete preliminary implementation of SMM in Bochs, SMI is still PANICs but if you press 'continue' everything should work OK
- Small code cleanup
- Update CHANGES and user docs
2006-04-05 17:31:35 +00:00
Stanislav Shwartsman
a6c3ffeeb5
Fixed compilation error
2006-03-29 19:16:24 +00:00
Stanislav Shwartsman
ae2ea87c43
More fixes for SMM
2006-03-29 18:08:13 +00:00
Stanislav Shwartsman
4fd9bd53c3
Change Bit32u -> bx_phy_address in memory
2006-03-28 16:53:02 +00:00
Stanislav Shwartsman
42aac37624
Fixed complilation error
2006-03-27 20:09:37 +00:00
Stanislav Shwartsman
da3d26d7f4
Preliminary implemntation of SMM save statei
...
Fixed fetchModeMask for load32bitOsStack
2006-03-27 18:02:07 +00:00
Stanislav Shwartsman
b8be848943
Use access_type param in getHostMemAddr, less efficient but no copy-paste at least
2006-03-26 19:39:37 +00:00
Stanislav Shwartsman
5c3fba4399
Support access to SMRAM in memory object
...
Cleanup in CPU code
2006-03-26 18:58:01 +00:00
Stanislav Shwartsman
f347ab97bf
Fixed CALL/JMP far through call gate 64
...
Decode SWAPGS and RDTSCP instructions
Indent changes in fetchdecode
2006-03-22 20:47:11 +00:00
Stanislav Shwartsman
d6f85c12f6
NMI support inside the CPU.
...
Added two functions to query NMI and SMI from Bochs debugger.
In future they could be used for generating NMI or SMI by user request using GUI button (could be implemented separatelly later and under configure-time or .bocshrc option)
2006-03-16 20:24:09 +00:00
Stanislav Shwartsman
a64b16391d
Remove unused vars
2006-03-15 17:57:11 +00:00
Stanislav Shwartsman
e85a90a720
Remove cpu.h -> devices.cc dependancy, kill_bochs_request moved from CPU to bx_pc_system
...
Small Icache simplification and speedup
2006-03-14 18:11:22 +00:00
Volker Ruppert
9699eaeca4
- added SMP support in save/restore parameter subtree
...
- TODO: implement tab window control for SMP CPUs in wx "show cpu" dialog
2006-03-09 20:16:17 +00:00
Stanislav Shwartsman
d74f1b9a43
Fixed bug in ENTER instruction in long mode
2006-03-08 18:21:16 +00:00
Volker Ruppert
5597fc9cf3
- fixed wx "Show CPU" dialog to make it work with the new parameter handling
...
- fixed CPU register names
- removed old parameter handling (bx_id, BXP_* symbols, param_registry, etc.)
2006-03-08 18:10:41 +00:00
Volker Ruppert
575a17e50f
- converted cpu state parameters to param-tree style
...
- removed old-style parameter init methods
- NOTE: the wx CPU registers dialog (debugger) currently reports nothing
- TODO: fix wx CPU registers dialog, remove remaining bx_id related stuff
2006-03-07 20:32:07 +00:00
Stanislav Shwartsman
da0b2ac377
Update dependencies for iodev and root project folders.
...
Fixed compilation errors for 386 case
Added file header for slowdown_timer.h
2006-03-06 22:32:03 +00:00
Stanislav Shwartsman
7b6c2587a9
Now devices could be compiled separatelly from CPU
...
Averything that required cpu.h include now has it explicitly and there are a lot of files not dependant by CPU at all which will compile a lot faster now ...
2006-03-06 22:03:16 +00:00