Commit Graph

9279 Commits

Author SHA1 Message Date
Stanislav Shwartsman
39c14ef0d1 Implemented EPT A/D extensions support.
Bochs is fully aligned with the latest published revision of
Intel Architecture Manual (revision 043) now.
2012-05-02 18:11:39 +00:00
Volker Ruppert
af74c6df44 - added devices ES1370 and E1000 to shortcut scripts (known to work with Linux
and WinXP guests)
- TODO: USB xHCI could also be added, but more tests are required
2012-05-01 18:03:43 +00:00
Volker Ruppert
378f8a04a6 - pit: added debug_dump()
- pit82c54: modified print_counter() for debugger usage
2012-05-01 15:53:28 +00:00
Stanislav Shwartsman
1f150d4399 update configuration examples in .bochsrc 2012-04-30 14:46:00 +00:00
Volker Ruppert
1462fcaf9c - pci2isa debug_dump(): added option 'dump=full' to show the whole PCI config space
- updated debugger documentation
2012-04-25 16:50:41 +00:00
Volker Ruppert
bea07c65b1 - regenerated parser files 2012-04-24 17:50:41 +00:00
Volker Ruppert
a11e5713d7 - updated help texts 2012-04-24 17:48:38 +00:00
Stanislav Shwartsman
e1611e717e Implemented feature request:
[3519794] debugger's ability to save physical/linear memory dumps
2012-04-24 11:01:59 +00:00
Stanislav Shwartsman
8871aa5da3 removed unused variable - fixing gcc warning 2012-04-23 18:52:11 +00:00
Volker Ruppert
6428ce38be - updated generated lexer and parser files 2012-04-23 17:13:23 +00:00
Volker Ruppert
f65c4e66b8 - debugger command 'info device': implemented support for additional arguments
- ne2k: replaced debugger command 'info ne2k' completely by a new version based
  on 'info device' with additional arguments and removed all of the now obsolete
  stuff (ne2k device stub, macro for print_info())
- pci: added option 'dump=full' for the debugger command 'info device' to show
  the whole PCI config space
- TODO: some other devices could have support for additional options in
  debug_dump()
2012-04-23 17:06:19 +00:00
Stanislav Shwartsman
d71ed03ba1 fixed buffer overflow in serial.cc 2012-04-21 18:13:10 +00:00
Volker Ruppert
d364f22c3c - don't panic in debugger if the iodebug plugin is not loaded
- iodebug: fixed some warnings
- development.dbk: updated iodebug documentation
2012-04-19 18:03:13 +00:00
Stanislav Shwartsman
32be4c9b61 fix .bochsrc example 2012-04-18 18:30:00 +00:00
Volker Ruppert
bdfe4ae1bb - added debug_dump() (prints the same as 'info ne2k' without arguments)
- removed FILE parameter from print_info() (unused - since dbg_printf() doesn't
  need it)
- converted tabs to spaces
- TODO: implement 'info device' with optional arguments to get rid of the
  print_info() method
2012-04-18 17:03:00 +00:00
Stanislav Shwartsman
07a50eac31 closing SF bug #3518753: update dump after manual chages to memory contents 2012-04-17 14:32:57 +00:00
Stanislav Shwartsman
e12494bf7b fixed segfault when setting ESP/EIP in GUI debugger 2012-04-16 19:18:23 +00:00
Volker Ruppert
99a31bd150 - devices 'parallel' and 'serial':
- added to optional plugin control
  - moved config parameter creation and bochsrc option parsing to the plugin
    device code
2012-04-16 19:17:10 +00:00
Volker Ruppert
679f980b39 - updated override-ask example
- fixed path in user plugin example
2012-04-15 12:51:33 +00:00
Volker Ruppert
b433f4072b - updated user plugin example 2012-04-14 14:47:08 +00:00
Stanislav Shwartsman
39e4335d6d forgot one instance 2012-04-11 19:02:12 +00:00
Stanislav Shwartsman
c7c431f88e bx_instr_mem_data_access became completely obsolete with new stack optimization merged into SVN.
It already had limited usability before. With stack direct access optimization the callback won't be called for stack accesses as well.
See note by Brian Slechta:

=== Cut Hete ===
While using Bochs as a reference model for simulations, the simulator needs
information about what loads/stores are taking place with each instruction.
Presumably,  that  is  what  the BX_INSTR_MEM_DATA() instrumentation macros
cover (which is the place where our simulator hooks up).

The RETnear_xxx() functions call access_linear() directly, rather than call
read_virtual_xxx()  functions. This is a problem for code making use of the
BX_INSTR_MEM_DATA()   hook  because  it  does  not  get  called  for  these
instructions.  Should  this  be  changed along with some other instructions
that exhibit this?
=== Cut Hete ===

For Bryan's usage bx_instr_lin_access and bx_instr_phy_read/bx_instr_phy_write callbacks should be used.
2012-04-11 19:01:25 +00:00
Stanislav Shwartsman
59e13d5299 fixed compilation error with 386/486 and internal dbger enabled 2012-04-11 18:11:14 +00:00
Volker Ruppert
7e67845ac8 - pcidev: enable support for Linux kernel 3.x (Debian patch by Guillem Jover)
- don't clean docbook directories if building documentation is disabled
2012-04-11 16:53:38 +00:00
Volker Ruppert
fe37b61c18 - pcidev: enable support for Linux kernel 3.x (Debian patch by Guillem Jover)
- don't clean docbook directories if building documentation is disabled
2012-04-11 16:53:02 +00:00
Stanislav Shwartsman
6bfad819de bugfix 2012-04-11 14:47:47 +00:00
Stanislav Shwartsman
83d1e1ee0f update CHANGES 2012-04-10 14:18:54 +00:00
Stanislav Shwartsman
077b691296 correctly fix SF #3516029 : bug stepping not working in debugger GUI in case of smp vm
reverted buggy SF patch #3502052: Added refresh of debugger gui when stepping

re-generated bx_debugger lex/yacc files
2012-04-10 12:44:06 +00:00
Volker Ruppert
34ca44cbcd - sb16 / es1370: fixed possible segfaults when unloading plugin 2012-04-09 08:48:10 +00:00
Volker Ruppert
c24080c92a - more accurate horizontal retrace emulation (based on the DOSBox implementation) 2012-04-08 14:21:18 +00:00
Volker Ruppert
fc482db353 - improved documentation for the 'log options by device" feature 2012-04-07 10:52:36 +00:00
Volker Ruppert
70a38a8a3d - apply 'log actions by device' to the existing modules before editing them
in the config interface. Applied settings are marked as 'done' with the value
  -1 to avoid unwanted modification. NOTE: Not all Bochs modules exist when
  running the start menu / dialog.
2012-04-06 13:15:27 +00:00
Stanislav Shwartsman
a68ad9a7f6 small code optimization 2012-04-06 09:41:58 +00:00
Stanislav Shwartsman
60e92204b1 update CHANGES 2012-04-04 19:59:26 +00:00
Stanislav Shwartsman
a6f0ca70ff more robust SVM fix 2012-04-04 19:55:36 +00:00
Stanislav Shwartsman
72a00ce9dd improved debug prints in MOV to/from CR
SVM bugfix
remove redundant TLB flush call from SVM and VMX code
2012-04-04 19:31:02 +00:00
Volker Ruppert
56cce60be8 - improved device log prefix table (list all existing prefixes, added column
with log function name)
- TODO: move table to a new section under "Tips & Techniques" and add reference
  from the bochsrc log controls to it.
2012-04-03 18:41:28 +00:00
Volker Ruppert
e82fa719fb - at runtime the log options dialog starts up with "log options per device"
enabled
2012-04-02 21:30:37 +00:00
Volker Ruppert
a3f7a30422 - ioapic: added debug_dump() (prints redirection table) 2012-04-01 18:53:16 +00:00
Volker Ruppert
5a983a3ea0 - disable the "close" button for the Bochs main window - only the "power" button
should be used to terminate Bochs
2012-04-01 16:50:42 +00:00
Volker Ruppert
601bb7e084 - only quit Bochs simulation after pressing the "Quit" button in the runtime
config dialog. Now the close button and the ESC key let the simulation
  continue in the runtime case (fixes SF bug #3510403).
2012-03-29 17:05:44 +00:00
Stanislav Shwartsman
279c61dc67 updated + fixed instrumentation example for instr histogram, code cleanup in the cpu 2012-03-28 21:11:19 +00:00
Stanislav Shwartsman
fa03e8b925 added const to several class members 2012-03-27 21:30:34 +00:00
Stanislav Shwartsman
90fc12d9e4 switching between compatibility and long64 mode also affect SS.BASE which is always zero in long64 mode 2012-03-27 15:21:40 +00:00
Stanislav Shwartsman
e7a4a1bec8 surprisingly, opensuse 12.1 requre alignment check support in hardware so I can't disable it by default for all configurations.
but in case you want a few %% of extra emulation performance - it is still possible to disable it with configure option.
most guests I saw do not use it !
2012-03-26 19:33:38 +00:00
Stanislav Shwartsman
8b78f6ca2c fixed prev commit 2012-03-26 19:24:20 +00:00
Stanislav Shwartsman
97a6d0ad46 missed ; 2012-03-26 19:08:28 +00:00
Stanislav Shwartsman
547678e8bd fixed compilation error in 386 config. also fixed bugs in tasking code found by new assertion added in stack.cc new code 2012-03-26 19:05:58 +00:00
Stanislav Shwartsman
bfca96f8ce added TLB contents to param tree for debugger purposes. Nopw the TLB could be browsed through param-tree in debugger and GUI debugger as well 2012-03-25 20:56:18 +00:00
Stanislav Shwartsman
6cd7d08c34 added new stack.cc into MSVCPP2008 workspaces 2012-03-25 20:21:15 +00:00
Volker Ruppert
4c253c8cd6 - more accurate vertical retrace emulation (based on the DOSBox implementation) 2012-03-25 19:16:44 +00:00
Stanislav Shwartsman
d4688e8b95 - Do not compile support for alignment check (#AC exception) by default
for CPU emulation performance reasons, the alignment check compilation
    still can be enabled using configure option --enable-alignment-check.

There is no software in the world which enable #AC exception checking, this
x86 feature is completely legacy but its emulation support costs up to 3-5%
emulation speed.

The checking for #AC exception enable still will be done, if

 CPL == 3, EFLAGS.AC = 1 and CR0.AM = 1

but the alignment check is not compiled in, the Bochs will PANIC with corresponding message.
You can press 'always continue' and ignore the PANIC, the simulation will continue as if alignment checking is not enabled.
2012-03-25 19:07:17 +00:00
Stanislav Shwartsman
3ca29cbdf3 stack direct access optimization - 5% emu speedup to all 32-bit guests, for 64-bit guests speedup is less because they have less stack accesses 2012-03-25 11:54:32 +00:00
Volker Ruppert
c43cf378f4 - floppy: added debug_dump() 2012-03-23 17:22:30 +00:00
Volker Ruppert
51cba8776d - improved debug_dump()
- small code cleanup
2012-03-20 18:29:49 +00:00
Stanislav Shwartsman
b5a33e82ac fixed a lot of code duplication in debugging/instrumentation of mem access 2012-03-20 18:26:04 +00:00
Stanislav Shwartsman
e1506e3e29 some cleanup in CPU code + patch SVM SS.DPL instead of failing VMRUN 2012-03-19 19:24:15 +00:00
Stanislav Shwartsman
a8565cdfc3 added missed line in MSR fix 2012-03-17 12:07:27 +00:00
Stanislav Shwartsman
bd4aa017fe Lazy flags improvement patch by Darek Mihocka - measured 5% speedup everywhere accross the board
The problem with Parity is it is generally referenced very rarely so the current lazy flags code is not efficient to updated Parify flag only (because it updates low 8 bits of .result value the existing Zero Flag has to be shadowed in .auxbits.
So I flipped it around, to make Parity be shadowed in auxbits.  .result now is only needed to derive Zero Flag, and both Sign and Parify are derived from .result + .auxbits (as Zero Flag is now).  For the 90% of the conditional jumps that are JZ or JNZ, this is a speedup.
Parity is now derived from 8 bits in .result and 8 bits in .auxbits, and Sign is derived from one flag in .result and 1 bit in .auxbits by XOR-ing them all together.  It makes the code sequences for SAHF and POPF simpler too.
2012-03-17 08:51:52 +00:00
Stanislav Shwartsman
733dc3bb3c dump CPUID .bochsrc options only if no CPUDB profile is selected 2012-03-15 19:55:14 +00:00
Stanislav Shwartsman
5a33b1be84 mvoed MWAIT_IS_NOP option from CPUID to CPU - it has meaning even if CPUID tree is not used because CPU is configured with CPUDB pre-defined configuration 2012-03-15 19:46:57 +00:00
Stanislav Shwartsman
1dd0500259 Merge SF patch 3505209 and update CHANGES 2012-03-15 19:34:13 +00:00
Volker Ruppert
a00bf4c01a - pci2isa: show PCI IRQ level in debug_dump()
- dma: added debug_dump() with verbose output if channel is active
2012-03-15 18:12:13 +00:00
Stanislav Shwartsman
9d5d33632c VMX: Fixed reading of VMX MSR-HI (0xC0000000 <= index <= 0xC0001FFF) bitmaps / Fixed memory overflow 2012-03-14 19:42:06 +00:00
Stanislav Shwartsman
a9d03340d6 correctly handle EFER.LMA and EFER.LME with unrestricted guests 2012-03-14 19:17:27 +00:00
Stanislav Shwartsman
a668ff9908 small code optimization 2012-03-13 19:41:10 +00:00
Volker Ruppert
3ba2751b6f - update changes 2012-03-13 19:08:40 +00:00
Stanislav Shwartsman
406a381371 update CHANGES (not complete) 2012-03-13 15:24:47 +00:00
Stanislav Shwartsman
25ffaeeea8 fixed VMX issue + small code reorg 2012-03-13 15:18:21 +00:00
Volker Ruppert
5a9e4a98ff - makefile fixes in the iodev subdirs related to SF bug #3459998 2012-03-12 21:10:44 +00:00
Stanislav Shwartsman
33fe397d22 Merge SF patch [3502052] Added refresh of debugger gui when stepping 2012-03-11 20:17:12 +00:00
Volker Ruppert
3f2cd2cad6 - compilation fixes for MSVC (SF bug #2905969) 2012-03-11 18:12:50 +00:00
Volker Ruppert
4acef49a29 - improved debvug_dump() for pci, pic and vga / cirrus
- pci2isa: added debug_dump()
2012-03-11 12:17:41 +00:00
Volker Ruppert
3027c108a8 - update generated files 2012-03-10 17:18:43 +00:00
Volker Ruppert
086266d033 - implemented new debugger command 'info device [string]' that shows the state
of the device specified in 'string'. Added register mechanism and chained
  list to store the device name and pointer. Replace hardcoded debug info
  implementations for pic, pci and vga by the new one.
- TODO #1: improve existing debug_dump() output and add more devices
- TODO #2: add support for additional arguments and replace the NE2k print_info()
2012-03-10 17:14:07 +00:00
Stanislav Shwartsman
9c27d279b9 removed incorrect BX_INFO msg 2012-03-07 20:07:57 +00:00
Volker Ruppert
953cd82219 - make the PCI debug_dump() usable from the debugger
- TODO:
  add debug info for more devices without adding them to bx_devices_c and
  without a macro in plugin. A register mechanism in the debugger code would
  be nice. Currently it is only possible to show the devices state by
  accessing the save/restore tree. The debug_dump() output should show
  the operation mode and the most important registers.
2012-03-07 18:08:35 +00:00
Volker Ruppert
50ac1483cf - update version number in the bochs manifest
- mention the manifest file in the developer doc
2012-03-06 17:06:55 +00:00
Stanislav Shwartsman
562c8c91d1 fixed FMA4 instructions sources 2012-03-06 15:18:35 +00:00
Volker Ruppert
baee102fa2 - fixed common controls / manifest problem found during SDL testing 2012-03-05 21:17:34 +00:00
Stanislav Shwartsman
bde2f4d829 correctly handle #UD because of XOP.VVV 2012-03-05 19:48:55 +00:00
Volker Ruppert
3c8aecb312 - updated compilation instructions for SDL support with VS2008Ex
- TODO: add support for SDL with MSVC nmake
2012-03-05 17:19:42 +00:00
Volker Ruppert
f6c2f45299 - fixed compilation with MSVC
- TODO #1: add instructions how to compile Bochs with SDL support on VS2008Ex to
           the user doc
- TODO #2: add MSVC nmake support
2012-03-04 21:37:49 +00:00
Stanislav Shwartsman
95e4191cd1 any vex instruction must use VEX.VVV or #UD 2012-03-04 17:56:22 +00:00
Volker Ruppert
f36536070c - updated VS2008 workspace files 2012-03-04 17:27:05 +00:00
Volker Ruppert
9d42a3eca4 - removed x/y tile size parameters from specific_init() since the tile dimensions
are now members of the bx_gui_c class
2012-03-03 12:41:24 +00:00
Stanislav Shwartsman
572bd793fc fixed compilation warning 2012-03-03 08:24:30 +00:00
Volker Ruppert
796754e942 - wait until UI init is ready before starting simulation (fixes tool bar and
status bar if running multiple instances of Bochs)
2012-03-03 07:44:53 +00:00
Volker Ruppert
2b4d9a26dc - added new command line option '-noconsole' to disable the console window
on Windows. Added early command line check for this option to call the
  console creation for sdl and wx only if required. NOTE: The console is still
  needed for the config interface 'textconfig', the console debugger and log
  output to stdout/stderr.
2012-03-02 16:51:45 +00:00
Stanislav Shwartsman
c52d97cb7f fixed comments in paging.cc 2012-02-28 22:39:33 +00:00
Stanislav Shwartsman
1f14c171ed rename some SSE handlers 2012-02-28 18:53:58 +00:00
Volker Ruppert
b45dbc15fc - fixed SDL fullscreen mode on Windows (part of SF bug report #2988910)
- fixed a warning on non-WIN32 platforms
2012-02-28 18:38:32 +00:00
Stanislav Shwartsman
d4541f1a88 removed dedicated handler for MOVNTI - can be replaced with existing handlers 2012-02-27 15:50:43 +00:00
Volker Ruppert
2d90b30b14 - attempt to fix SF bug #3493315
- for sequencer reg #1 a screen update is required after changing bit #0, #3 and #5
  - added new method skip_update() that checks the conditions to skip the screen update
    and it is called after resizing the display
  - clear screen request from the sequencer is now handled by the update() code
    in the new method skip_update() instead of clearing display directly
2012-02-25 15:51:39 +00:00
Stanislav Shwartsman
75cf2e2c4a Fix fallout from bx_list_c change 2012-02-24 21:58:41 +00:00
Stanislav Shwartsman
959ab435cf fixed compilation err with SVM 2012-02-24 21:31:31 +00:00
Stanislav Shwartsman
b38c3e3629 Fix fallout from bx_list_c change 2012-02-24 19:40:18 +00:00
Stanislav Shwartsman
7d2e7e5245 Fix memset in pcipnic.cc 2012-02-24 19:38:10 +00:00
Volker Ruppert
1425e2370c - fixes related to the wx 2nd run support (not yet complete)
- siminterface: don't create plugin parameter if it already exists
  - wx: make sure all plugins are loaded when creating plugin control dialog
  - USB HC's: fixed removal of parameters when unloading plugin
2012-02-23 21:26:13 +00:00
Stanislav Shwartsman
86c7033a63 name cpu log functions in lower case 2012-02-23 19:31:02 +00:00
Volker Ruppert
d74762b984 - wx: use new log function name for the table of log modules
- added some more log function names
2012-02-23 17:16:35 +00:00
Volker Ruppert
9e084b8898 - use new log function name for the listbox contents and adjust listbox size 2012-02-21 19:50:56 +00:00
Volker Ruppert
b45077ac82 - moved optional plugin control item to the top of the list, since it's now
important for using network, sound and usb devices.
2012-02-21 16:15:39 +00:00
Volker Ruppert
e63948434a - class bx_list_c size limit has been removed, so the "log action by device"
feature no longer needs a limit.
2012-02-21 15:56:18 +00:00
Volker Ruppert
e29c25d389 - implemented optional plugin control dialog 2012-02-21 12:00:54 +00:00
Volker Ruppert
b0afd56048 - changed checks for MinGW target cases to '*-mingw32*' (should fix WIN64 build)
- skip libtool creation and several checks for the MSVC target
2012-02-20 14:29:10 +00:00
Volker Ruppert
91fe8b99e6 - changed checks for MinGW target cases to '*-mingw32*' (should fix WIN64 build)
- skip libtool creation and several checks for the MSVC target
2012-02-20 14:27:45 +00:00
Stanislav Shwartsman
45b6eae291 updated fix for SF bug 3459998 2012-02-20 06:43:53 +00:00
Stanislav Shwartsman
1599031869 changed BX_INFO back to BX_DEBUG 2012-02-19 20:16:10 +00:00
Stanislav Shwartsman
f48317affc SVM: Added EXITINFO2 write on VMEXIT (missed in prev commit)
Added phenom_8650_toliman <AMD Phenom X3 8650 (Toliman)> comment into .bochsrc example with all other supported CPU configs.
Added missed SVM definitions into Toliman CPUDB module
2012-02-19 20:15:23 +00:00
Volker Ruppert
0e186e8ba1 - fixed autoconf 2.68 warnings 2012-02-19 19:50:56 +00:00
Stanislav Shwartsman
92376fb693 svm updates 2012-02-19 12:16:58 +00:00
Stanislav Shwartsman
c70a42c5d7 merged patch ftom SF bug 3459998 Bochs cannot be compiled outside the source tree 2012-02-19 12:16:14 +00:00
Volker Ruppert
d3a9768f14 - missing config dialog for CPUID options added
- prepared wx plugin control dialog
2012-02-18 16:25:10 +00:00
Volker Ruppert
c85fe6afcc - enable CPUID subtree only for CPU model choice #0 2012-02-18 10:50:14 +00:00
Volker Ruppert
a3441c8e55 - fixed memory leaks 2012-02-18 08:52:25 +00:00
Volker Ruppert
891051ac83 - don't compile library if subsystem is not enabled (network, sound, usb)
- fixed autoconf warnings
2012-02-17 19:09:33 +00:00
Volker Ruppert
92bb663381 - don't compile library if subsystem is not enabled (network, sound, usb)
- fixed autoconf warnings
2012-02-17 19:08:58 +00:00
Volker Ruppert
6079d4b2c0 - implemented optional plugin control dialog (TODO: do the same for wx) 2012-02-17 17:23:57 +00:00
Volker Ruppert
e30e6a9808 - moved optional plugin load / unload code to the siminterface
- implemented optional plugin control in textconfig
- TODO: implement this feature in the win32 and wx gui configuration
2012-02-16 18:06:03 +00:00
Stanislav Shwartsman
c2670b40d5 small cleanup in paging code 2012-02-15 19:49:35 +00:00
Stanislav Shwartsman
2f7e5ab3a3 fixed bugs in toliman configuration 2012-02-14 22:01:50 +00:00
Volker Ruppert
55854afa86 - calculate horizontal and vertical frequency from CRT for more accurate retrace
timing (TODO: length of retrace signals should be calculated, too)
2012-02-14 20:56:42 +00:00
Volker Ruppert
2f5be164d2 - reverted part of rev. 11031: for dependent lists the check 'param->get_parent() == this'
also works and no deplist trick is required
- bx_param_c destructor now deletes the dependent list if it exists (memory leak)
- bx_list_c::clear() only deletes the parameter if the list is it's parent
- added new method cleanup_save_restore() to free memory on simulator shutdown
2012-02-14 18:13:54 +00:00
Stanislav Shwartsman
5c02e7cebd do not need to load PAE PDPTRs if going to nested paging mode 2012-02-14 12:36:39 +00:00
Stanislav Shwartsman
bb7a648d91 Major commit !
------------

Implemented SVN nested paging support - the Virtual Box boots perfectly with Nested Paging guest !
A lot of code duplication was added for now - major cleanup will follow later.

! Added AMD Phenom X3 8650 (Toliman) configuration to the CPUDB - this configuration has Nested Paging enabled.

Some CPUID modules rework done to enable Toliman configuration.

Ckean up 'executable' attribute from all CPU source files.
2012-02-13 23:29:01 +00:00
Stanislav Shwartsman
deaf58b130 read from CPUDB svm extensions 2012-02-13 21:55:27 +00:00
Volker Ruppert
8bb206ccdf - added special flag for dependent lists
- bx_list_c: don't accept duplicate param names in list (except dependent lists
  and special menus)
- added BX_PANIC for malloc() failure
- harddrv: fixed wrong variable found with bx_list_c changes
2012-02-13 20:58:26 +00:00
Stanislav Shwartsman
813fe4e6b9 reduce code duplication - continue preparing for nested paging implementation 2012-02-13 20:06:04 +00:00
Stanislav Shwartsman
4d0a5c1b07 - VMX: EPT misconfiguration should always take priority above EPT permissions violation (translate_guest_physical corner case bug)
- VMX: EPT reserved bits set should cause EPT misconfiguration and not EPT violation
- VMX: EPT walk for guest CR3 address should be considered as 'page walk'
2012-02-12 21:30:22 +00:00
Stanislav Shwartsman
0b5f798af1 re-commit changes from SVN rev11026 which were accidentially undo'ed by last Volker's commit 2012-02-12 19:13:57 +00:00
Volker Ruppert
de94b08a1a - class bx_list_c now contains a chained list of parameters. Removed the now
obsolete maxsize parameter from all lists.
2012-02-12 18:43:20 +00:00
Stanislav Shwartsman
855d2adece cleanups in paging code 2012-02-12 16:09:35 +00:00
Volker Ruppert
1df471dc82 - fixed line offset change in case VBE is disabled or in 4bpp mode 2012-02-12 13:14:38 +00:00
Volker Ruppert
8ada8d66ff - simplyfied unloading of core plugins 2012-02-12 08:37:42 +00:00
Volker Ruppert
47c68a2f04 - fixed possible crash on Windows 2012-02-11 17:11:58 +00:00
Stanislav Shwartsman
fa182e96b5 for future nested paging: under NP PDPTR CACHE will contain NP PDPTR entries 2012-02-10 20:39:46 +00:00
Volker Ruppert
f5ca539534 - fixed some uninitialized values found with valgrind 2012-02-10 18:08:17 +00:00
Stanislav Shwartsman
a304bd5fd7 update user docs too 2012-02-10 16:08:01 +00:00
Stanislav Shwartsman
37af2eb6e4 update README file with newest Bochs CPU emulation caps 2012-02-10 16:02:22 +00:00
Stanislav Shwartsman
421170b2b9 applied SF patch 2012-02-10 15:15:31 +00:00
Stanislav Shwartsman
b497077b70 intel disclosed more cpuid bits 2012-02-08 19:54:22 +00:00
Volker Ruppert
47f2137edf - set device state structure to 0 with memset() for some devices
- cleaned up vga core init code after adding memset()
- floppy: removed structures that had been used for win95 direct access
2012-02-05 10:08:56 +00:00
Volker Ruppert
90e6c88c55 - limit physical head and sectors per track parameters to the values
supported by hardware and BIOS
2012-02-04 16:39:59 +00:00
Stanislav Shwartsman
9bebe91826 eliminate duplicated cpu methods by adding extra param to opcodes with no modrm 2012-02-03 10:24:59 +00:00
Stanislav Shwartsman
14ec87768e expand FCMOV function to 8 different functions - each one is much simpler to implement and understand 2012-02-01 12:07:53 +00:00
Volker Ruppert
b7333b7f3e - removed definitions that already exist in the vgacore files
- minor fixes and cleanups
2012-01-31 18:53:02 +00:00
Stanislav Shwartsman
2e44613032 dos2unix for avx_pfp.cc 2012-01-30 15:29:22 +00:00
Volker Ruppert
825edc4c64 - blinking in VGA graphics mode implemented (undocumented feature???)
- prepared function to override the VGA output (stops the update timer)
- minor cleanups the update() code
2012-01-27 18:50:07 +00:00
Volker Ruppert
35f89eeefb - regenerated after the pcivga changes 2012-01-26 16:37:00 +00:00
Volker Ruppert
ca2e44c0c4 - moved the pcivga code to vga.cc and removed the now obsolete plugin device 2012-01-26 16:35:38 +00:00
Volker Ruppert
da42a100eb - major rewrite of the vga / cirrus code
- added new class bx_vgacore_c containing the core of the standard VGA
    emulation. This is now the base class for both vga and cirrus.
  - created 2 separate plugins 'vga' (for standard VGA and VBE) and 'svga_cirrus'
    (Cirrus emulation). The vga extension option is used to select which plugin
    should be loaded.
- TODO: move the pcivga code to the VGA/VBE code, add subdirectory for display
        adapters, severak improvements and cleanups
2012-01-24 21:58:24 +00:00
Stanislav Shwartsman
56ff41bcd5 removed unused token from internal debugger command line parser 2012-01-24 21:42:04 +00:00
Volker Ruppert
ac08e89e94 - void gui init code to a new method and call it after the extension init
- added last maximum scan line to the bx_vga_c object
2012-01-23 22:16:08 +00:00
Stanislav Shwartsman
e42008a79a fixed uninitialized variable usage 2012-01-23 16:51:00 +00:00
Stanislav Shwartsman
457c56c822 fixup for EPT paging 2012-01-22 18:39:15 +00:00
Volker Ruppert
709dc30cf4 - changed the maximum x/y resolution and the resulting number of x/y tiles
from constant to variable
2012-01-22 16:13:45 +00:00
Volker Ruppert
a34cf1bcd5 - changes in the text update interface code
- changed argument for the text mode info structure to a pointer
  - added attribute controller palette to bx_vga_tminfo_t and removed the
    previous implementation
  - carbon.cc: attempt to fix the text mode colors (untested)
- x.cc: fixed warnings
2012-01-22 12:22:03 +00:00
Volker Ruppert
63ab13fe09 - store max. x / y resolution in the gui object and use it in win32.cc. Now it
no longer needs to incluse vga.h
2012-01-22 09:08:59 +00:00
Stanislav Shwartsman
795a21ec6d change type of the bx_list_c::choice var to Bit32u to make in compatible with ask_uint function 2012-01-21 20:54:55 +00:00
Stanislav Shwartsman
2e32bf2d84 for bx_list param - convert 'choise' variable to regular integer
also for textconfig - fix operation under cygwin
under cygwin it is not guaranteed that any printf is printed on the screen under you flush the FILE stream.
2012-01-21 20:36:32 +00:00
Volker Ruppert
500ad37191 - added arguments for x/y resolution to the gui init() and store x/y tilesize
in the gui object. Now the gui doesn't need to include vga.h.
- TODO #1: win32.cc also shouldn't include vga.h
- TODO #2: replace BX_MAX_XRES / BX_MAX_YRES by variables that can be set
  depending on the configuration
2012-01-21 12:15:10 +00:00
Volker Ruppert
3ec77e9372 - store config parameter values in local variables to avoid searching for
parameters at simulation time
2012-01-20 15:56:17 +00:00
Stanislav Shwartsman
fc6712e3a3 undo part of prev paging commit 2012-01-19 20:01:32 +00:00
Volker Ruppert
ed669adfd1 - rewrite of the PCI memory management code for the expansion ROM and BIOS area
- store memory type array in the memory object to avoid calling the pci plugin
    frequently. The pci code calls a memory method to change the memory type in
    case the PAM registers are modified.
  - removed now obsolete code and minor cleanups
2012-01-19 18:32:11 +00:00
Stanislav Shwartsman
12afed23a1 small fix and cleanups in paging code 2012-01-19 06:38:22 +00:00
Stanislav Shwartsman
d69f845cc6 fixed compilation with debugger 2012-01-17 22:02:19 +00:00
Stanislav Shwartsman
9461797886 added extra param to debugger phy access callback + cleanup in vmexit functions 2012-01-17 21:50:15 +00:00
Stanislav Shwartsman
f4b49633d4 paging code rework (cont) 2012-01-17 18:20:55 +00:00
Volker Ruppert
0711276b3f - updated VS2008 workspace file (plugin version) 2012-01-17 18:03:55 +00:00
Stanislav Shwartsman
b52c36d8c8 regenerated configure script 2012-01-16 18:43:48 +00:00
Volker Ruppert
ec464f6f17 - fixed sector count to support > 32GB virtual disk size (patch by soynor) 2012-01-16 17:27:37 +00:00
Volker Ruppert
a700d33e9f - call functions for config and bochsrc parameter handling used by plugins
from the siminterface (required by MSVC and maybe others)
2012-01-16 17:11:16 +00:00
Alexander Krisak
4a146456c6 fixed compilation in cygwin
fixed rfb under windows
2012-01-16 15:39:43 +00:00
Stanislav Shwartsman
0d64a6cb92 fixed paging bug in previous commit 2012-01-16 15:26:25 +00:00
Volker Ruppert
1b50a7f941 - updated default VS2008 workspace file (plugin version requires some source
code modifications)
2012-01-15 20:26:09 +00:00
Stanislav Shwartsman
7d641450ec remove param from check_entry_PAE function - it is always the same for all calls 2012-01-15 20:25:39 +00:00
Stanislav Shwartsman
c7cb99787e rework in paging code before nested paging implementation for SVM - step 2
optimize TLB flush code
2012-01-15 19:38:00 +00:00
Stanislav Shwartsman
4db23355cd rework in paging code before nested paging implementation for SVM - step 1 2012-01-15 17:54:13 +00:00
Volker Ruppert
8d7954e576 - another iodev cleanup: renamed pit_wrap files to 'pit'
- updated devices.txt
2012-01-15 08:50:20 +00:00
Volker Ruppert
6fe909393b - regenerated after moving sound stuff to new subdirectory 2012-01-15 07:56:11 +00:00
Volker Ruppert
c6bd3fb60c - moved the sound stuff to the new subdirectory iodev/sound
- TODO #1: update MSVC workspace files
- TODO #2: these 'device classes' could be moved to subdirectories, too:
  - pci (when we have more than one chipset)
  - display (when we have one more device and vga / cirrus cleaned up)
2012-01-15 07:52:04 +00:00
Volker Ruppert
a1a2ca1f55 - regenerated after moving networking stuff to new subdirectory 2012-01-14 17:12:27 +00:00
Volker Ruppert
50de0a12cd - moved the networking stuff to the new subdirectory iodev/network
- TODO: do the same with the sound code and update MSVC workspace files
2012-01-14 17:03:00 +00:00
Volker Ruppert
a207f9b94d - regenerated after moving usb stuff to new subdirectory 2012-01-14 12:39:16 +00:00
Volker Ruppert
b72d603d83 - forgot to remove this file 2012-01-14 12:37:58 +00:00
Volker Ruppert
68b49ba42d - moved the USB stuff to the new subdirectory iodev/usb
- TODO #1: do the same with the network and sound code
- TODO #2: update MSVC workspace files
2012-01-14 12:36:32 +00:00
Volker Ruppert
e4570a0939 - added special linked list for core plugins and manage them with the device
plugin system.The load order is important for these devices!
- load support plugins for networking, sound and usb only if at least one of the
  related plugin devices is loaded.
- plugin_ctrl: added missing devices to the list in bochsrc sample
2012-01-13 17:04:47 +00:00
Volker Ruppert
fb9401c3b0 - devices 'ne2k' and 'sb16': moved config parameter creation and bochsrc option
parsing to the plugin device code
- sb16: modified misc runtime menu creation to make the sb16 parameters optional
- ne2k: changed location of the init() method in file (now matches coding style
  of other device plugins)
2012-01-12 18:03:20 +00:00
Stanislav Shwartsman
f5d55f5eb6 - Implemented Task Switch intercept in SVM, cleanup in task switch handling code
- Changed (c) year in several cpu files
- Cleanup and indent fixes in VMX code
2012-01-11 20:21:29 +00:00
Stanislav Shwartsman
039326d0c9 always return const pointer from functions - these strings are not planned to be modified 2012-01-11 19:57:38 +00:00
Stanislav Shwartsman
cb366e00c5 fixed code duplication in exceptions 2012-01-11 06:27:35 +00:00
Volker Ruppert
5c49e2458f - added new plugin type PLUGTYPE_STANDARD for optional plugins which are used in
nearly all cases and plugins that depend on others. These plugins cannot be
  managed with 'plugin_ctrl' (e.g. keyboard, harddrv, pci_ide). Store the plugin
  type in the divice structure for compatiblity with the "no-plugin" compilation.
  Call the device methods init(), reset() and after_restore_state() for each type
  separately in the order: stanard, optional, user. This also affects the status
  bar LED feature: now the keyboard and harddrv LEDs are always visible, but
  those of optional plugins may be invisible if there is no space left.
- TODO #1: add the devices 'ne2k' and 'sb16' to 'plugin_ctrl'
- TODO #2: manage core plugins with the device plugin system
2012-01-10 17:45:18 +00:00
Stanislav Shwartsman
ba7887f31c fixed code duplication with v86 interrupt redirection 2012-01-10 08:13:34 +00:00
Stanislav Shwartsman
8d698c7087 fixed compilation err ith cpu-level=5 and cleanups 2012-01-09 20:52:15 +00:00
Stanislav Shwartsman
87b1c31495 fixed SVM VmEXIT on #PF error code 2012-01-09 20:24:23 +00:00
Stanislav Shwartsman
f64c38dfaf fix in SVM event injection 2012-01-09 20:15:15 +00:00
Volker Ruppert
db4520f778 - devices 'pcidev' and 'pcipnic': moved config parameter creation and bochsrc
option parsing to the plugin device code
2012-01-09 17:15:03 +00:00
Stanislav Shwartsman
2900956327 Split back some frequently used arithmetic and logic opcodes (which were done as Load+Op before). 2012-01-09 13:09:59 +00:00
Stanislav Shwartsman
35bfe11c3d SVM: forgot to save RFLAGS in guest state 2012-01-08 19:46:38 +00:00
Stanislav Shwartsman
a531f8081c fixed compilation with cpu-level=5 2012-01-08 16:58:14 +00:00
Stanislav Shwartsman
76ee7b499b svm updates 2012-01-08 14:09:51 +00:00
Volker Ruppert
c403b4b699 - devices 'usb_ohci' and 'usb_uhci': moved config parameter creation and bochsrc
option parsing to the plugin device code
- added function bx_init_usb_options() to reduce code duplication
- added log function names for 'usb_ohci' and 'usb_uhci'
- documentation updates
2012-01-08 12:43:46 +00:00
Stanislav Shwartsman
9261b2fa14 removed param_names.h include where not needed anymore 2012-01-07 17:54:19 +00:00
Stanislav Shwartsman
7defa74261 cleaned up code duplication in CPUDB classes 2012-01-07 17:06:03 +00:00
Stanislav Shwartsman
a804adac46 fixed compilation err with SMP enabled 2012-01-07 16:45:25 +00:00
Volker Ruppert
a48ef5f719 - added check for bochsrc options of optional plugins that have been moved to
the device code. Added panic message to force the user to enable the plugin
  with 'plugin_ctrl'.
- moved config parameter creation and bochsrc option parsing for device
  'usb_xhci' to the plugin device code
- added minimal documentation for the "log action per device" feature
- added log function name for 'usb_xhci'
2012-01-07 14:14:53 +00:00
Stanislav Shwartsman
bb9a1f45da update version number in SVN to 2.5.1 2012-01-07 14:02:38 +00:00
Volker Ruppert
ae860d3cb8 - added changes in bugfix release 2.5.1 2012-01-06 21:56:48 +00:00
Stanislav Shwartsman
edfff5bf44 fixed VMX+EPT VirtualBox failures 2012-01-06 10:30:07 +00:00
Volker Ruppert
c98decb552 - fixed copy-and-paste bug in the status bar LED init code 2012-01-05 22:31:19 +00:00
Stanislav Shwartsman
e2ff4bc6d4 clear exitinfo1/2 fields in SVM on VMENTER 2012-01-05 22:23:05 +00:00
Stanislav Shwartsman
665d4568ee convert most popular svn/vmx msgs to bx_debug - can be used together with enabling log options per device from .bochsrc 2012-01-05 19:42:58 +00:00
Stanislav Shwartsman
fddccfb498 code cleanup + copy/paste removal 2012-01-04 21:36:39 +00:00
Volker Ruppert
e82ce9038e - bximage / bxcommit: fixed compilation on big endian hosts by adding a new
header file that contains the required bswap code. This fix will be backported
  for 2.5.1, but a better solution should be found for the next major release.
- bxcommit: fixed another big endian issue
2012-01-04 19:20:52 +00:00
Stanislav Shwartsman
0e17f8f195 implemented AMD APIC extensions for SVM support 2012-01-04 16:06:37 +00:00
Stanislav Shwartsman
8c8fa8ec25 vmx cleanups 2012-01-03 20:27:40 +00:00
Volker Ruppert
538ca63af4 - moved common status LED handling code to gui.cc and implemented new
gui-specific method statusbar_setitem_specific()
2012-01-03 20:11:12 +00:00
Volker Ruppert
fb62b657f3 - fixed "Port Status Change Event": port ID starts at index #1
- changed some BX_INFOs to BX_DEBUG
2012-01-03 18:08:16 +00:00
Stanislav Shwartsman
c857488ed9 Added Corei5 750 (Lynnfield) configuration to the CPUDB 2012-01-02 20:59:02 +00:00
Stanislav Shwartsman
3b98634045 show EFER in debug print outside long mode too 2012-01-02 20:06:03 +00:00
Stanislav Shwartsman
5847e772a6 set async_event when injecting virq to SVM guest 2012-01-01 21:22:56 +00:00
Stanislav Shwartsman
269d5e3443 more SVM fixes 2012-01-01 20:26:23 +00:00
Stanislav Shwartsman
810aa1b67c fixes for SVN. also turion64_tyler supports RDTSCP - include it in CPUID 2012-01-01 17:54:41 +00:00
Volker Ruppert
ca09763e89 - documentation.dbk: added some hints for using docbook / jade
- updated compilation and installation transcripts
- updated / fixed docs for bxcommit and bximage
2012-01-01 17:32:36 +00:00
Stanislav Shwartsman
30d90c1dc1 more SVM fixes 2011-12-31 20:10:11 +00:00
Volker Ruppert
759f9cb0f0 - don't update the queue head if a short packet is detected (fixes UHCI on XP) 2011-12-31 17:37:30 +00:00
Stanislav Shwartsman
b97a108d93 SVM: allow entering vm8086 and also paged real mode 2011-12-31 16:33:36 +00:00
Stanislav Shwartsman
a0b5ff48ec more SVM fixes 2011-12-31 14:22:51 +00:00
Stanislav Shwartsman
3c0d712146 SVM fixes 2011-12-31 13:58:55 +00:00
Stanislav Shwartsman
fe6741d84d fixed SVM bug 2011-12-31 13:26:55 +00:00
Stanislav Shwartsman
fe6328d18c correctly enable SVM support in internal CPU features list 2011-12-31 12:58:20 +00:00
Volker Ruppert
afef1e621e - update redolog image position with lseek() if the read/write access is not
handled by the volatile redolog (fixes tests with Windows XP)
- allow volatile write to boot sector
2011-12-31 12:51:07 +00:00
Stanislav Shwartsman
46d8a5894e removed bad RDMSR/WRMSR check which disabled access to AMD extended MSRs 2011-12-31 12:37:35 +00:00
Volker Ruppert
185490c158 - fixed possible segfault when setting up file attributes
- some more hidden / system directory fixes
- parse_directory() / write_file(): continue only if next cluster is valid
- TODO: fix VVFAT with Windows XP guest (unmodified FAT ?)
2011-12-30 23:23:34 +00:00
Stanislav Shwartsman
560e3ca254 compilation fix for smp=0 2011-12-30 18:55:19 +00:00
Stanislav Shwartsman
cee8a3b9ef AMD's core has special 0x80000008.ecx value 2011-12-30 18:53:41 +00:00
Stanislav Shwartsman
088ab4832f turion64 tyler supports cmpxchg16b 2011-12-30 18:46:46 +00:00
Volker Ruppert
5f0ec6c805 - fixed behaviour of "enable changed" port status bit
- improved error message
- TODO: fix UHCI with Windows XP guest (device not recognized)
2011-12-30 17:29:43 +00:00
Stanislav Shwartsman
2a0d989755 fixed compilation err with SVm w/o VMX 2011-12-30 12:24:22 +00:00
Volker Ruppert
223fe998b3 - code for setting up log actions by device rewritten
- unknown module names now cause a panic
- added log function names to some more devices
- TODO: find a way to configure log actions by device in the config interface
  start menu (most of the devices do not exist at this point)
2011-12-30 11:13:37 +00:00
Stanislav Shwartsman
93523a657d remove patch that always kept IF set after HLT - not needed anymore 2011-12-30 08:50:01 +00:00
Stanislav Shwartsman
3501eeceaf updated cpudb list in .bochsrc sample 2011-12-29 22:01:51 +00:00
Volker Ruppert
b130bf671b - initial "log action by device" implementation added (TODO: check for
invalid module names, save log actions to bochsrc)
- added new member 'name' to the logfunctions class for the case the prefix
  is too short. Added to some devices with longer names.
2011-12-29 19:51:54 +00:00
Volker Ruppert
32f53b5151 - performance fix for the new status LED code: only call the gui specific code
to update the status text if there is really a change
- changed the counter resolution to 5 (auto-off still happens after 0.5 seconds)
- the element value -1 is only used to reset the LEDs, so we have to ignore the
  status flags
2011-12-29 16:28:58 +00:00
Volker Ruppert
13506f74ee - fixed handling of directories with the attributes 'hidden' and 'system' 2011-12-29 15:39:04 +00:00
Stanislav Shwartsman
abda3a967c added two AMD CPUs to CPUDB 2011-12-29 14:23:22 +00:00
Volker Ruppert
09391fc21a - prepared "set log action by device" feature in the parameter tree and the
bochsrc parser. When read it will be possible to define exceptions from the
  default setting like this:

  debug: action=ignore, pci=report

- TODO (almost everything)
  - add a 'name' member to the logfunctions class, since the prefix might be
    too short
  - apply special log actions the log modules and panic on unknown modules
  - support saving special log action to bochsrc
2011-12-29 12:44:38 +00:00
Stanislav Shwartsman
644c7c6289 undo bxswap change - it breaks build with bx_debugger enabled. error - multiple definition of bx_swap16 in parser.o and lexer.o 2011-12-28 22:43:18 +00:00
Stanislav Shwartsman
7cd72d6f79 remove old garbage from makefile 2011-12-28 22:35:21 +00:00
Stanislav Shwartsman
c62426145a moved bx_bswap definition into osdep.h so bximage tool can also include them 2011-12-28 22:17:12 +00:00
Stanislav Shwartsman
5da69a6fb4 fixed typo - invalid CPUID leaf should go to max std leaf 2011-12-28 21:59:39 +00:00
Stanislav Shwartsman
2b854cb101 added basic (very basic) SVM CPUID into generic_cpuid module 2011-12-28 21:54:51 +00:00
Stanislav Shwartsman
0a14f08f16 completing SVM coding, missed - CPUID, extended APIC 2011-12-28 16:12:28 +00:00
Volker Ruppert
ea80df55e6 - implemented "auto-off" status LED feature and removed old "iolight" code 2011-12-28 14:53:05 +00:00
Stanislav Shwartsman
864ea23b5b take events handling logic from cpu.cc to new file event.cc 2011-12-28 12:26:45 +00:00
Stanislav Shwartsman
dcfa57087f fixed typo in configure script 2011-12-28 12:20:49 +00:00
Volker Ruppert
0b2bec6752 - implemented "auto-off" timer for the status bar LEDs that replaces the
existing "iolight timer" code in the hard drive code. If an LED is registered
  with the "auto-off" flag, the device only needs to turn on the LED to indicate
  data transfer. The LED timer in the gui code turns it off after 0.5 seconds if
  it is not actived by another transfer. Added this feature to all network
  devices.
- TODO #1: implement this feature in the USB host controllers
- TODO #2: the unused timer in the hard drive code could be used for the
  emulation of seek functions
2011-12-28 11:51:42 +00:00
Stanislav Shwartsman
2b8371f2b6 implemented SVM_GIF handling 2011-12-27 20:46:15 +00:00
Stanislav Shwartsman
7f5f917a34 more SVM implementation 2011-12-27 19:42:11 +00:00
Volker Ruppert
3e65692e40 - some progress for making the E1000 work with Windows XP
- allow to set the PCI busmaster bit
  - implement byte read access for the status register
2011-12-27 16:39:31 +00:00
Volker Ruppert
8ef4c8abaa - removed plugins 'acpi' and 'ioapic' from the optional plugin control to avoid
trouble. In the future they may depend on the selected PCI chipset.
2011-12-27 13:02:35 +00:00
Stanislav Shwartsman
c32eaa5d05 added more svm intercepts 2011-12-26 20:51:57 +00:00
Volker Ruppert
0de2516d05 - fixes to avoid crash after unloading plugins before simulation
- small cleanups
2011-12-26 20:32:56 +00:00
Stanislav Shwartsman
6ae86a059b firt cleanup in SVM code. added intercept check for MSR and IO 2011-12-26 19:57:39 +00:00
Volker Ruppert
046b74d94c - devices 'e1000' and 'es1370': moved config parameter creation and bochsrc
option parsing to the plugin device code
- TODO: some more optional device plugins could be modified this way
2011-12-26 17:32:57 +00:00
Stanislav Shwartsman
8b4a2c2034 implemented some more intercepts.
fixed compilation without SVM
2011-12-26 16:33:13 +00:00
Volker Ruppert
add7af8c13 - added support for converting growing to flat mode images
- added command line arguments and non-interactive (quiet) mode
2011-12-26 12:49:36 +00:00
Stanislav Shwartsman
bfcbb81602 SVM:
- IO intercept is not implemented yet
 - MSR intercept is not implemented yet

VMX:
 Fixed Bochs PANIC crash when doing I/O access crossing VMX I/O permission bitmaps.
 This can happen because access_physical_read and access_physical_write cannot access memory cross 4K boundary.
2011-12-25 22:09:31 +00:00
Stanislav Shwartsman
ea6dfe3dc0 added svm files 2011-12-25 20:01:48 +00:00
Stanislav Shwartsman
01080243d4 complation fix 2011-12-25 19:58:21 +00:00
Stanislav Shwartsman
a44c1b8e1e SVM and VMX share tsc offset code 2011-12-25 19:53:23 +00:00
Stanislav Shwartsman
75bda1d5cd implemented SVM emulation support for Bochs (incomplete yet)
I am merging the code in order to start making shortcuts between VMX emulation and SVM emulation.
Of course SVM emulation is incomplete, completely untested and not expected to work.
But someone could already take a look one the code and give some suggestions.

Also looking for anybody with existing SVM kernels - as simple as possible - for testing.

Status:
 - exceptions intercept is not implemented yet
 - IO intercept is not implemented yet
 - MSR intercept is not implemented yet
 - virtual interrupts are not implemented yet
 - CPUID is not implemented yet

No advanced SVM featurez planned - I am implementing the very basic 'Pacifica' document from 2005 using QEMU code as reference.
2011-12-25 19:35:29 +00:00
Volker Ruppert
aad2d89c83 - rewrite of the optional plugin control feature. Now the plugins are loaded
directly while parsing the bochsrc or command line. If plugin support is enabled,
  the option could load all optional plugins, not only the ones supported before.
  NOTE #1: The old option had all plugins enabled by default and gave the user
           a chance to diable them. Now the plugins are only loaded if they
           appear in the config line and they are set to "1".
  NOTE #2: Loading a plugin that is controlled by a bochsrc option is possible,
           but it currently leads to a panic, since the load command is still
           present in devices.cc.
  NOTE #3: The plugin init code creates the device object and registers the
           optional plugin device. As an option, it can create config parameters
           and register an option parser. The device init, register state and
           reset is still handled in devices.cc, but in the order the devices
           have been loaded with the plugin control.
  NOTE #4: If plugin support is disabled, the plugin control only accepts the
           devices listed in plugin.cc.
- plugin init of core plugins now fails if they are not loaded with the expected
  type. For core plugins the load order is important and they cannot be handled
  with the chained devices list (used for optional and user plugins).
- some additions for calling config.cc functions from a plugin device
2011-12-25 08:52:34 +00:00
Volker Ruppert
c4952b4c84 - E1000 support: updated workspace files and documentation 2011-12-24 15:17:10 +00:00
Volker Ruppert
f9ed249f10 - moved shared NIC config parameter init and parsing code to separate functions
(mac, ethmod, ethdev, script and bootrom)
2011-12-23 14:40:43 +00:00
Volker Ruppert
04b0bcb746 - some work for the case the plugin support is turned off
- added plugin unload function and improved load function
  - use new function in bx_unload_plugins()
- new macro BX_UNREGISTER_DEVICE_DEVMODEL for future enhancements
2011-12-23 12:01:58 +00:00
Volker Ruppert
6df6f4ff76 - renamed 'user options' to 'addon options'. When a load option for optional
plugins is implemented in bochsrc, these functions can be used to install
  additional options from the devices code. Then the whole init / parse / save
  code for this device can be moved from config.cc to the device plugin.
2011-12-23 10:03:10 +00:00
Stanislav Shwartsman
4bb4d29f8c better report supported CPUID features when not using pre-defined CPUID profile 2011-12-22 19:12:37 +00:00
Stanislav Shwartsman
d613ce554f added extra CPUID option (VMX) - increase list count 2011-12-22 15:49:16 +00:00
Volker Ruppert
38a797f502 - added function for loading optional plugins in case the plugin support is
turned off. Removed workaround code from devices.cc.
- removed 'pci_ide' plugin from the optional plugin control, since it depends
  on the presence of 'pci' and 'harddrv'.
- define types for plugin init/fini functions
2011-12-22 10:35:49 +00:00
Volker Ruppert
d070de30dd - removed BX_INFO (used for testing PCI ROM support) 2011-12-22 08:21:48 +00:00
Volker Ruppert
bfa3a14265 - PCI ROM handling fixes
- fixed tmpsize (patch by Sebastian Herbszt)
  - disable PCI ROM access after copying to shadow RAM (same as SeaBIOS)
2011-12-22 07:53:51 +00:00
Volker Ruppert
40052509d2 - PCI ROM handling fixes
- fixed tmpsize (patch by Sebastian Herbszt)
  - disable PCI ROM access after copying to shadow RAM (same as SeaBIOS)
2011-12-22 07:53:25 +00:00
Stanislav Shwartsman
2dee4b12be added VMX .bochsrc option to ctoggle VMX ON/OFF on runtime 2011-12-21 09:11:51 +00:00
Stanislav Shwartsman
e7ed8aca5c move inhibit interrrupts functionality to icount interface 2011-12-21 06:17:45 +00:00
Volker Ruppert
e38772006f - added PCI ROM init code that copies to shadow RAM and use it for both VGA
and other boot ROMs
- define and use PCI constants (patch by Sebastian Herbszt)
2011-12-20 19:34:47 +00:00
Volker Ruppert
46d5caa98d - added PCI ROM init code that copies to shadow RAM and use it for both VGA
and other boot ROMs
- define and use PCI constants (patch by Sebastian Herbszt)
2011-12-20 19:34:05 +00:00
Volker Ruppert
e312454851 - several fixes in PCI ROM code of the memory handlers
- use 'pci_rom_size - 1' as the mask for the offset address
  - ne2k: memory handlers must be disabled if compiled without PCI support
  - svga_cirrus: check for the PCI ROM size to make VBE work correctly
  - added BX_INFO to the mem write handlers
2011-12-20 19:33:16 +00:00
Stanislav Shwartsman
7cdeecf198 VMX: fixed VirtualBox VMX guest Guru Meditation - FS.BASE get corrupted after saving/restoring unusable selector 2011-12-19 16:06:53 +00:00
Stanislav Shwartsman
6cc03432d9 improve VMX debug print 2011-12-18 21:04:30 +00:00
Volker Ruppert
927d9bb057 - added PCI network boot ROM support to all network adapters. The ISA version
of the NE2000 is not supported and it currently requires SeaBIOS to boot.
- TODO: implement PCI network boot ROM support in the Bochs BIOS
2011-12-18 20:26:14 +00:00
Stanislav Shwartsman
f6203dae7d instrumentation: added special indication for indirect call/jump 2011-12-18 18:11:56 +00:00
Volker Ruppert
e635b86c16 - unload optional and user plugins first to avoid segfault in case of
dependencies on core plugins
- added missing core plugins to unload
2011-12-18 10:47:26 +00:00
Volker Ruppert
c9af6d043d - all networking modules: check device receive status before sending packet
- networking modules 'slirp' and 'vnet': use device speed for timing of
  emulated replies.
2011-12-18 09:12:38 +00:00
Stanislav Shwartsman
9763643106 VMX: Fixed VMFUNC instruction behavior to align with Intel SDM revision 041 2011-12-17 14:06:23 +00:00
Stanislav Shwartsman
fa7c225405 fixed typo - closing SF bug [3461405] step all command fails in SMP mode 2011-12-17 13:32:08 +00:00
Volker Ruppert
27c857784d - prepared receive status callback function that returns several flags.
For now it returns a flag that indicated that the device can receive data
  from the eth module and flags for the device speed. TODO: Use this callback
  in the eth modules before sending data to the device.
2011-12-17 08:22:33 +00:00
Stanislav Shwartsman
83cf658361 simplify x87 polinoms evaluation code 2011-12-16 19:22:03 +00:00
Volker Ruppert
982064bc5a - small cleanups 2011-12-16 19:16:44 +00:00