Commit Graph

12530 Commits

Author SHA1 Message Date
Shwartsman
f37049903b fixed compilation 2023-11-27 20:15:00 +02:00
Shwartsman
cc4f594ede implemented process-posted-interrupts VMX extension 2023-11-27 20:15:00 +02:00
Stanislav Shwartsman
9a5dfb10c1 fixed 'misleading indentation' warning
move variable definitions closer to their use
2023-11-27 19:05:12 +02:00
Stanislav Shwartsman
a5c6bcfd15 remove in_repeat variable and replace it with correct EFLAGS.RF management 2023-11-27 13:51:25 +02:00
Stanislav Shwartsman
ca4ca03be8 remove #ifdef around in_repeat variable, it is always needed 2023-11-26 23:21:51 +02:00
Volker Ruppert
e82316c490 Memory leak fix in the win32 gui code.
In exit() method always call terminateEmul(), but the argument depends on the
value of bx_user_quit.
2023-11-26 22:04:07 +01:00
Stanislav Shwartsman
4ee9d37a5f prevent access to non-existing VMCS fields 2023-11-26 20:29:56 +02:00
Stanislav Shwartsman
ad7a85d11a updates for SVM INVLPGA instruction
- decoding and disasm
 - invalidate only pages pointed by RAX and not entire TLB
2023-11-26 19:45:07 +02:00
Volker Ruppert
48b3b7e7a5 If any device is still loaded, plugin_cleanup() calls bx_unload_plugins(). 2023-11-26 18:36:07 +01:00
Shwartsman
b013b389ea fixed code duplication, extract some code to functions
make special phy memory read methods which help to write cleaner code
2023-11-26 18:25:54 +02:00
Shwartsman
6d5e527e7d Merge branch 'master' of https://github.com/bochs-emu/Bochs 2023-11-26 17:41:53 +02:00
Shwartsman
ab629f16f6 remove redundant #if BX_SUPPORT_X86_64 around UINTR
it is checked already in config.h
2023-11-26 17:41:26 +02:00
Volker Ruppert
b319a6cb5d Some more memory leak fixes.
- delete SIM object
- delete i/o port to handler tables
- free plugin tables for enum parameters
2023-11-26 15:44:38 +01:00
Volker Ruppert
ae107f2cb8 Some more memory leak fixes.
- added method for logfunctions cleanup on app exit
- delete default i/o handler names
- delete pluginlog
2023-11-26 13:41:19 +01:00
Volker Ruppert
d63e048ec6 Memleak fix: IRQ handler names were not deleted on simulation exit. 2023-11-26 10:43:15 +01:00
Shwartsman
4a3e1cd545 fixed compilation with SVM and VMX both disabled 2023-11-26 08:23:00 +02:00
Volker Ruppert
6c8a54dcfe Fixed "no-plugin" code to avoid segfault on Bochs exit. 2023-11-25 21:59:16 +01:00
Volker Ruppert
890a1be2f2 Attempt to fix some memory leaks in the plugins and gui code (discussion #144).
- Added plugin_cleanup() code for the version with plugins disabled.
- Added PLUGIN_FINI code for the gui plugins (except wx) to delete bx_gui object.
2023-11-25 18:15:47 +01:00
Stanislav Shwartsman
f0bbf25b5d allow access to VMCS_64BIT_CONTROL_TERTIARY_VMEXEC_CONTROLS VMCS field 2023-11-25 18:02:11 +02:00
Stanislav Shwartsman
14fc5635de integrate random fixes done during WAITPKG feature development 2023-11-25 16:53:00 +02:00
Stanislav Shwartsman
280303d76c
initial code for UINTR implementation (#138)
First step into implementing UINTR - User Level Interrupts ISA extension
To be continued

---------

Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2023-11-25 16:43:47 +02:00
Stanislav Shwartsman
c1c391a9c6 fix common code duplication by introducing new method get_Virtual_TSC()
it computes TSC as needed for RDTSC(P) and RDMSR TSC taking into account VMX and SVM adjustments
replaces previous get_TSC_VMXAdjust(Bit64u0
2023-11-25 15:00:39 +02:00
Stanislav Shwartsman
1ae23ad935 - MONITORX/MWAITX: It is possible that MWAITX wakeup from timed mwait but APIC timer was still not reset.
A corruption would happen if MWAIT is called again to setup the timer while it still running from previous time.
  Also spurious wakeup could possibly happen as timer will send wakeup when it stops counting.
2023-11-25 14:55:14 +02:00
Volker Ruppert
86e4675a1d Fixed some memory leaks in the paramtree code (discussion #144).
- root_param was never deleted
- modified set_format() and set_long_format() to get rid of strdup()
2023-11-25 13:28:51 +01:00
Volker Ruppert
c525d9e5fc Consider half dot clock for h-panning (final fix for issue #114). 2023-11-24 23:08:17 +01:00
Volker Ruppert
68ff4be0b8 Fixed a memory leak in the slirp code. 2023-11-24 22:35:43 +01:00
Volker Ruppert
a2f7562b30 Fixed two memory leaks in the Voodoo code. 2023-11-24 21:47:41 +01:00
Stanislav Shwartsman
3cad5c3e84
address most of the memory leaks (#149)
the param tree, siminterface log and SIM were not released handle all
but SIM for now
should reduce the memory leaks list dramatically
2023-11-24 20:34:24 +01:00
Shwartsman
7f04cfd8df fix for gcc warning 2023-11-24 19:30:00 +02:00
Volker Ruppert
99629f9207 Horizontal pixel panning implemented in VGA graphics mode.
This change should fix issue #114.
Added BX_ERROR for two other unimplemented features.
2023-11-24 16:54:15 +01:00
Volker Ruppert
e9cd258882 Fixed ATAPI device reset.
Clearing 'seek complete' bit makes some MS-DOS work again.
2023-11-24 14:43:52 +01:00
Volker Ruppert
63f09e8aae Fixed cpu makefile dependencies. 2023-11-23 23:38:29 +01:00
Volker Ruppert
32b8edafc5 Fixed some gcc 13.2 warnings. 2023-11-23 20:06:07 +01:00
Shwartsman
62c2c877d0 rename VMEXIT controls in Bochs code to match their actual names and meaning 2023-11-23 19:58:08 +02:00
Shwartsman
6b5928f522 rename constants VMX_VM_EXEC_CTRL1 -> VMX_PIN_BASED_VMEXEC_CTRL for more correct naming 2023-11-23 19:51:17 +02:00
Shwartsman
4d08659621 Implement 'Tertiary VMEXEC Controls' for VMX
Currently none of the controls were not enabled, all clear but infra is here
2023-11-23 19:38:59 +02:00
Stanislav Shwartsman
1cfd97e1a0 added most_significant_bit* methods to scalar_arith.h 2023-11-23 19:03:08 +02:00
Volker Ruppert
32c7c3815a Display lib options 'cmdmode' and 'gui_debug' are now ignored by the wxWidgets port.
Using a bochsrc config designed for another gui no longer causes a BX_PANIC for unknown option.
2023-11-23 09:56:42 +01:00
Benjamin David Lunt
eae6bf9396
Close cdrom image file on eject (#145)
The WIN32 configuration for the cdrom was not closing the image file on
eject. This left the handle open while Bochs was running, not allowing
the image file to be modified.
2023-11-23 08:40:39 +02:00
Benjamin David Lunt
5f6e855350
update changes (#143)
Per Volker's request, moved some items to there correct location.
2023-11-22 08:27:05 +02:00
Shwartsman
f4f41cffc4 fix code duplication and optimize code 2023-11-21 20:26:48 +02:00
Shwartsman
f47ed2a5f7 fixed one more gcc warning 2023-11-21 16:12:53 +02:00
Shwartsman
d39c93a3c6 fixed 'misleading indentation' warning and also make statement more clear 2023-11-21 16:11:48 +02:00
Stanislav Shwartsman
fcf44b2b5e Merge branch 'master' of https://github.com/bochs-emu/Bochs 2023-11-21 15:44:33 +02:00
Stanislav Shwartsman
f90fdbc353 add methods to query local apic state 2023-11-21 15:43:38 +02:00
Shwartsman
591e2aa79f bugfix: when CET was not compiled in the emulation behavior of non-CET CPU was altered
CET 'change' some x86 behavior
For example EPTP[7] become not-reserved and write to it not fail anymore
VMX doesn't check error code for CP exception if CET is enabled
These behaviors these changed even when CET was not compiled in
2023-11-21 15:35:49 +02:00
Benjamin David Lunt
01a262306f
Improved and enhanced the floppy emulation (#135)
This improves and enhances the floppy emulation.
This adds the ability to specify a controller type.
This adds all but one, known, controller command.
This fixes the format command. Issue #123 
This fixes the error with older Windows guests.
2023-11-21 09:35:07 +02:00
Benjamin David Lunt
5683da27e8
reset status bar items at reset (#142)
When the user presses the "Reset" button on the gui ribbon, we need to
clear the active status of all statusbar items or they remain set after
the reset occurs.
This is mentioned in issue https://github.com/bochs-emu/Bochs/issues/136
2023-11-21 08:58:21 +02:00
Shwartsman
bd4cb7ffa6 fixed compilation without SVM configured in 2023-11-20 19:10:46 +02:00
Shwartsman
0cc21d166d fixed compilation with CET not compiled in 2023-11-20 15:24:57 +02:00
Shwartsman
04ffb4cf03 fixed compilation with .conf.nothing 2023-11-19 23:55:52 +02:00
Shwartsman
a7a443ab46 guard SVM functions with ifdef 2023-11-19 23:24:13 +02:00
Stanislav Shwartsman
36a1a3df86 fixed FPATAN for case of |x|=|y|
but i am pretty sure same problem might still exists for other arguments :(
need to resurrect FPU functions unit testing ...
2023-11-19 22:00:46 +02:00
Stanislav Shwartsman
0b2231b799 fixed comment 2023-11-19 20:46:53 +02:00
Stanislav Shwartsman
c1c102ab04 coding style, cleanups and optimizations 2023-11-19 20:31:05 +02:00
Volker Ruppert
a9a15d332b Modified error handling for display library option 'gui_debug'.
If Bochs debugger is not present now showing an error message box instead of a BX_PANIC for unknown option.
2023-11-19 16:16:09 +01:00
Stanislav Shwartsman
a923880b47 fix compilation warning 2023-11-19 07:54:40 +02:00
Stanislav Shwartsman
7886369102 simplify rdrand code for future extension 2023-11-19 07:29:10 +02:00
Stanislav Shwartsman
26f60a6ea4 spelling fix in the comment 2023-11-18 21:48:42 +02:00
Stanislav Shwartsman
ffec6a1898 Merge branch 'master' of https://github.com/bochs-emu/Bochs 2023-11-18 20:18:07 +02:00
Stanislav Shwartsman
12ce649b42 fix GFNI instructions emulation 2023-11-18 20:15:29 +02:00
Volker Ruppert
6aa399e9eb Added x64 configuration for the VS2019 plugins workspace (fixes issue #8).
Since VS2019 didn't copy all settings from win32, manually editing all files
was necessary (adding OutDir/IntDir stuff).
2023-11-18 17:08:05 +01:00
Stanislav Shwartsman
a0334ef2b2 change some consts back to defines to simplify integration of code to support variable PA length (rest of the code still WIP) 2023-11-18 16:53:44 +02:00
Stanislav Shwartsman
86082838af added missing else which caused redundant memory access for 512-bit loads 2023-11-18 14:52:55 +02:00
Stanislav Shwartsman
054767ff8c enable MOVDIRI for TigerLake 2023-11-18 12:35:28 +02:00
Stanislav Shwartsman
a3fe8c2c8d introduce get_efer_allow_mask function to avoid placing that code directly in init.cc 2023-11-17 23:40:28 +02:00
Stanislav Shwartsman
9bda4eba28 introduce GET64_FROM_HI32_LO32 to form 64-bit integer from 2 32-bit 2023-11-17 23:31:38 +02:00
Stanislav Shwartsman
a9625e949d update crregs.h with all known XSAVE/XRESTOR state information
including not implemented state
2023-11-17 23:24:00 +02:00
Stanislav Shwartsman
0730ff4c4a added a comment for future: some memory operations must be done atomically
these are include LOCKed RMW of course and also a lot of others
in the future it will be very hard to find all the cases that must be atomic so better to start marking them already now
try to mark every RMW case for atomicity requirements
no code changes, only comments
2023-11-17 23:18:43 +02:00
Stanislav Shwartsman
1ad2ee6d4c use isReadOK instead of magic arithmetic for system_read_* methods
introduce system_write_qword as well
2023-11-17 23:14:38 +02:00
Stanislav Shwartsman
db17e4a4e2
Revert "reset status bar items at reset" (#137)
Reverts bochs-emu/Bochs#136
2023-11-17 09:37:46 +02:00
Benjamin David Lunt
c247b43718
reset status bar items at reset (#136)
When the user presses the "Reset" button on the gui ribbon, we need to
clear the active status of all statusbar items or they remain set after
the reset occurs.
This is mentioned in issue #123
2023-11-17 09:36:56 +02:00
Stanislav Shwartsman
447f18e53b Merge branch 'master' of https://github.com/bochs-emu/Bochs 2023-11-17 01:35:39 +02:00
Stanislav Shwartsman
01e744b507 bugfix for CET/XSAVE: XSAVE/XRESTOR wrongly determined if CTE.U is in XINIT state 2023-11-17 01:35:32 +02:00
Volker Ruppert
eec7a55c46 Fixed another gcc 13.2 warning (overloaded virtual). 2023-11-16 19:47:59 +01:00
Volker Ruppert
def53a2928 Fixed gui DLL name. 2023-11-15 23:33:27 +01:00
Stanislav Shwartsman
a9d07b5a51 coding style, move variables definition closer to its use, use constants instead of defines 2023-11-14 20:14:38 +02:00
Stanislav Shwartsman
baaaf1b9a7 update CHANGES 2023-11-14 19:31:37 +02:00
Stanislav Shwartsman
4941bb1f07 sync emulated time when linking traces 2023-11-14 19:26:56 +02:00
Stanislav Shwartsman
fde226f31c improve fix for VMCS_GUEST_PENDING_DBG_EXCEPTIONS saved on VMEXIT (should be cleared after most of VMEXITs)
handle some corner cases
2023-11-14 15:59:59 +02:00
Stanislav Shwartsman
60cc8020e8 Fixed VMCS_GUEST_PENDING_DBG_EXCEPTIONS saved on VMEXIT (should be cleared after most of VMEXITs) 2023-11-13 20:02:03 +02:00
Volker Ruppert
413507ee3a Trying to load a 'builtin' plugin twice must cause a BX_PANIC (same as plugin version). 2023-11-12 21:00:14 +01:00
Volker Ruppert
04941fd511 Added support for cross-compiling for win64 with plugins enabled. 2023-11-12 20:15:51 +01:00
Stanislav Shwartsman
b54b135d29 Updated plugins workspace after memory code changes 2023-11-12 20:30:07 +02:00
Stanislav Shwartsman
1401bd50e1 Merge branch 'master' of https://github.com/bochs-emu/Bochs 2023-11-12 20:28:26 +02:00
Stanislav Shwartsman
a9457e466c fixed compilation with debugger 2023-11-12 20:28:12 +02:00
Volker Ruppert
654f8796fb Updated standard workspace after memory code changes. 2023-11-12 17:37:03 +01:00
Shwartsman
cc6f8284ff Merge branch 'master' of https://github.com/bochs-emu/Bochs 2023-11-12 17:17:01 +02:00
Shwartsman
4f739d7e88 simplification: dbg_show_symbolic with no return value 2023-11-12 13:38:59 +02:00
Shwartsman
f8c94e83ff add missing SVM VMEXIT in case of triple fault shutdown 2023-11-12 13:38:16 +02:00
Volker Ruppert
aa8224b14e Added BX_PANIC in case no plugins are found to avoid segfault. 2023-11-12 00:09:42 +01:00
Stanislav Shwartsman
f5b54a4d33
Implemented MOVDIRI instruction (#129)
Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2023-11-11 20:30:12 +02:00
Stanislav Shwartsman
620d091264 update CHANGES 2023-11-11 18:55:29 +02:00
Stanislav Shwartsman
f85c633d3d
preserve original VMCBPTR after SVM VMLOAD/VMSAVE instructions (#128)
Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2023-11-11 17:52:10 +02:00
Stanislav Shwartsman
154896d923 Revert "fix code duplication"
This reverts commit 29c7a84c08.
2023-11-11 12:44:01 +02:00
Stanislav Shwartsman
29c7a84c08 fix code duplication 2023-11-11 12:19:27 +02:00
Stanislav Shwartsman
32cab8f384
introduce memory stub class which manages *only* RAM related logic of… (#127)
… the memory

it is very useful for CPU unit testing without devices or BIOS

Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2023-11-11 10:10:50 +02:00
Stanislav Shwartsman
1e92d9ee4e removed unused defines 2023-11-10 19:14:26 +02:00
Stanislav Shwartsman
db88c6c5bf fixed code duplication in debugger code 2023-11-10 19:10:51 +02:00
Stanislav Shwartsman
676da2e587 update CHANGES 2023-11-09 23:14:01 +02:00