Commit Graph

12446 Commits

Author SHA1 Message Date
Benjamin David Lunt
74ed550334
Allow large VHD files (#79)
This PR allows larger VHD image files. The size in question doesn't
necessarily mean the size of the VHD file on disk. The size is the total
size of the image emulated. This total size is in question.

Without this patch, the total size allowed is 65535 * 16 * 255, or
roughly 32gig.
With this patch, the total size is calculated by who the creator of the
image is, what the CHS values are, and possibly a total size of up to a
limit of 2TB.

Since the original code was ported from QEMU, I ported an updated QEMU
code snippet.

https://gitlab.com/qemu-project/qemu/-/blob/master/block/vpc.c?ref_type=heads#L305

This PR now allows VHD image files with a total size emulated less than
or equal to 2TB.
2023-09-19 08:04:32 +03:00
Benjamin David Lunt
b46fc681d2
Improve default device detection (#77)
This improves the detection of the default speed of a device when given
in bochsrc.

It will first get the max speed of the port given. For example, uhci and
ohci will return FULL, ehci will return HIGH.
xHCI will return SUPER if the port is a super-speed port, else it will
return HIGH.

Then it will compare this with the max speed allowed for that device,
returning the highest common speed.

Of course, if the speed option is given, the above is overwritten by the
specified speed.

Both checks are still performed on the result.
1) does device allow the result speed?
2) does the controller allow the result speed?
2023-09-14 07:30:26 +03:00
Benjamin David Lunt
fae8e698c7
Usb common (#75)
This catches (possible) errors in the Bochrc file when declaring USB
port options.
The first catches when the user defines a port twice.  This will PANIC.
```
usb_ohci: port1=mouse, options1="speed:low, model:m228"
usb_ohci: port1=keyboard, options1="speed:low"
```
The second catches a possible error if the user copy/pastes a line and
forgets to update the options# part as in the example below.
```
usb_ohci: port1=tablet, options1="speed:low"
usb_ohci: port2=disk, options1="speed:full, path:hdd.img"
```
However, this will not PANIC since the following is completely legal:
```
usb_ohci: port2=disk
usb_ohci: options2="speed:full"
usb_ohci: options2="path:hdd.img"
```
This will simply display an error on the Bochs console window.
2023-09-09 07:46:43 +03:00
Benjamin David Lunt
b2a44e2284
Additional controller checks (#74)
This adds three additional checks to make sure the Guest is working
correctly.
- checks that the guest allocated the Scratchpad Area. If left zero
(NULL) the controller may access low memory.
- checks that the guest uses correct segment sizes in the interrupter
ring(s)
- checks the burst size value given to be within normal range

This also adds an internal register value for the HcCrcr (Command Ring
Control) register. Since this register reads zero by the Guest, we keep
an internal value so that the emulation can read the value, internally.
This is for features soon to be released.

Minor other syntax/comment changes (misspelled word, etc)

Checked with WinXP, Win7, and Win10
2023-09-08 08:44:56 +03:00
Benjamin David Lunt
43dd4164fe
Fix zero length packet handling (#73)
This fixes zero length packet handling.
See the following example that requests 128 bytes:

```
SETUP(8)
IN(64)
IN(64)
STATUS(0)
```

The current code erroneously assumes that there are no more IN packets
after the first two 64-byte packets.

However, what happens with the following:

```
SETUP(8)
IN(64)
IN(64)
IN(64)    <--- current code assumes this will be, and expects a STATUS packet
STATUS(0)
```

Currently, the third IN(64) above will result in a coding error because
the code is expecting the STATUS packet, not another IN packet.

The "controller" must allow for more packets than expected, returning a
short packet detect on the third IN(64) packet shown above, actually
returning zero bytes, hence the Short Packet Detect.

This patch was tested on WinXP, Win7, and Win10.
2023-09-07 08:04:10 +03:00
Benjamin David Lunt
0d48349a60
fixed bandwidth overage detection (#71)
The check for the amount of byte transferred in one frame time was done
before the update of the vertical pointer in the current Queue of the
last executed TD. Therefore, on the next frame time, the last executed
TD was being "executed" again. The check has now been moved to the top
of the loop.
2023-09-05 08:12:42 +03:00
Stanislav Shwartsman
fe53752ddf
rename USE_RAW_SERIAL -> BX_USE_RAW_SERIAL (#70) 2023-09-04 20:21:37 +03:00
Shwartsman
46f435e3f5 fixes for compilation without BX_LARGE_RAMFILE 2023-09-04 20:01:49 +03:00
Dreg
86eff7597d
add iodebug support for all rings complement #64 (#66)
This PR is for "I/O Interface to Bochs Debugger" from ring3 (port range:
**0x8A00 - 0x8A01**)

PR #64 was for E9 HACK (port **0xE9**)

By enabling the iodebug's 'all_rings' option, you can utilize the port
I/O Interface to Bochs Debugger from ring3. This PR allows the code
running inside Bochs (ring3) to monitor memory ranges, trace individual
instructions, and observe register values during execution.


https://bochs.sourceforge.io/doc/docbook/development/debugger-advanced.html

IMO very useful for:

- user-mode sandbox (ex Cuckoo)
- malware analysis
- API/SYSCALL hook/monitor from ring3
- automation + instrumentation from user mode code
...

A complement for PR #64

**This PR is 100% backward compatibility**

![IODEBUG ALL
RINGS](https://github.com/bochs-emu/Bochs/assets/9882181/6308ad0f-c189-43f3-a92b-dccde3542ad6)

btw, @stlintel I'm not certain about:
- if misc is the ideal location for this.. should I create a new
iodebug-option for this?
- should I remove the #if in 'new bx_param_bool_c'?
- the new .bochsrc entry makes sense for you?
2023-08-27 18:34:01 +02:00
Dreg
da43cc4580
add port e9 hack support for all rings (#64)
By enabling the 'all_rings' option, you can utilize the port e9 hack
from ring3

IMO very useful for:
- user-mode sandbox (ex Cuckoo)
- malware analysis
- API/SYSCALL logger with a simple hook from ring3
- automation + instrumentation from user mode code
- ...

So yes, from this PR a user-mode-sandbox can display on the console of
the system running Bochs anything that is written to 0xE9 port


![porte9hackallrings](https://github.com/bochs-emu/Bochs/assets/9882181/ddbca3fa-729b-4a3e-95ad-078e44c7a17a)

**This PR is 100% backward compatibility**

btw, @stlintel I'm not certain if **bochs/config.cc** is the ideal
location to define **bool port_e9_hack_all_rings** (unmapped io/dev is
better?)
2023-08-26 18:37:55 +03:00
Stanislav Shwartsman
253882589d extend cpuid enums with new bits announced in Intel SDM 2023-08-20 20:30:01 +03:00
Stanislav Shwartsman
1dcae848d7 change nullptr to NULL to help some old hosts not supporting C++ standard 2023-08-20 19:40:08 +03:00
Stanislav Shwartsman
6481d24e06 Another cleaner way to implemented fix by rei141
from Fixes in VM Entry Checks for Guest Segment Registers #51

Correction in checks for Code Segment (CS):
Previously, the DPL of CS was incorrectly compared with its own RPL.
According to Intel SDM, Vol. 3C, Chapter 27.3.1.2, for non-conforming code segments (type 9 or 11), the DPL of CS should be equal to the DPL of SS.
And for conforming code segments (type 13 or 15), the DPL of CS cannot be greater than the DPL of SS.

This way VMCS is not accessed multiple times which is important for some usages
2023-08-20 19:33:37 +03:00
Stanislav Shwartsman
58c047c6d6 Merge part of PR by rei141
Fixes in VM Entry Checks for Guest Segment Registers #51

Correction in Type range checks for DS, ES, FS, GS:
The original code erroneously applied the check for types less than 11, excluding types equal to 11.
This is not in accordance with Intel SDM, Vol. 3C, Chapter 27.3.1.2, which states that the check should include types equal to or less than 11.
This fix corrects this by including types equal to or less than 11 in the check.
2023-08-20 18:52:53 +03:00
Stanislav Shwartsman
4b7e61d985 add updated lex and yacc scripts 2023-08-20 18:35:19 +03:00
Dreg
244033e234
improvement of the magic breakpoints fix #55 (#58) 2023-08-20 18:21:16 +03:00
Stanislav Shwartsman
b7d4445d34
Merge pull request #52 from disba1ancer/gdbstub-x86-64-eip-patch
Fix for gdbstub with x86-64 that truncates instruction pointer while breakpoint check
2023-08-19 10:50:52 +03:00
Dreg
81b4bdba7b add symbol info to info idt on protected 32 2023-07-23 16:12:44 +02:00
disba1ancer
c11006ad51 Fixed instruction pointer truncation in gdbstub 2023-05-25 00:00:24 +03:00
Vort
ace4a4dfa9 Use correct directory separator in Windows builds 2023-04-16 12:22:45 +03:00
Benjamin David Lunt
8272ee3f6c
Include cstddef 2023-04-09 10:54:08 -07:00
Benjamin David Lunt
0985f9bfec
hid mouse improvements 2023-04-09 10:44:00 -07:00
Benjamin David Lunt
fd02efa536
hid mouse improvements 2023-04-09 10:43:18 -07:00
Shwartsman
bd51ec5f83 fixed SF #1456 Bochs does not handle NMI blocking correctly when running virtual machines 2023-04-08 08:36:28 +03:00
Stanislav Shwartsman
e2f4eff91a fixed compilation of instrumentation examples with debugger OFF 2023-04-06 22:18:01 +03:00
Stanislav Shwartsman
caf80c29bf Merge branch 'master' of https://github.com/bochs-emu/Bochs 2023-04-06 22:04:04 +03:00
Stanislav Shwartsman
c10268f5b5 fixed compilation warnings in usb code 2023-04-06 22:03:36 +03:00
Volker Ruppert
bee4b45ad7 usb_uasp is not a separate plugin device 2023-04-06 20:59:14 +02:00
Stanislav Shwartsman
8d35b84a61 fixed potentially non-initialized var warning 2023-04-06 21:37:22 +03:00
Volker Ruppert
545a73ad56 Fixed generation of user documentation 2023-04-06 20:20:20 +02:00
Stanislav Shwartsman
55e66d4d6f
Merge pull request #42 from fysnet/master
Updates to USBMSD/SCSI emulation
2023-04-01 10:44:27 +03:00
Benjamin David Lunt
b20ddc75ff
Updates to USBMSD/SCSI emulation 2023-03-31 19:05:59 -07:00
Benjamin David Lunt
45469a7929
Updates to USBMSD/SCSI emulation 2023-03-31 18:55:05 -07:00
Benjamin David Lunt
df257317f3
Updates to USBMSD/SCSI emulation 2023-03-31 18:35:28 -07:00
Benjamin David Lunt
0135a545c0
Updates to USBMSD/SCSI emulation 2023-03-31 18:33:38 -07:00
Benjamin David Lunt
3cf9aa2ace
Updates to USBMSD/SCSI emulation 2023-03-31 18:30:11 -07:00
Stanislav Shwartsman
8eee519f4e
Merge pull request #39 from fysnet/master
Add over-current signaling
2023-03-23 07:22:46 +02:00
Benjamin David Lunt
64bb47b283
Add over-current signaling
This adds over-current signaling to the USBs four host controllers.
To signal an OC, use the runtime configuration and set the checkbox (GUI) or text config's parameter to 1.
This pull request also adds USB documentation to user.dbk.
2023-03-22 16:13:25 -07:00
Benjamin David Lunt
a0e4106f4a
Add over-current signaling
This adds over-current signaling to the USBs four host controllers.
To signal an OC, use the runtime configuration and set the checkbox (GUI) or text config's parameter to 1.
This pull request also adds USB documentation to user.dbk.
2023-03-22 16:12:08 -07:00
Benjamin David Lunt
dacc965593
Add over-current signaling
This adds over-current signaling to the USBs four host controllers.
To signal an OC, use the runtime configuration and set the checkbox (GUI) or text config's parameter to 1.
This pull request also adds USB documentation to user.dbk.
2023-03-22 16:05:44 -07:00
Stanislav Shwartsman
45ed74dc1b
Merge pull request #38 from fysnet/master
Forgot to add SPD action to UHCI
2023-03-22 06:54:26 +02:00
Benjamin David Lunt
d01e0f6cf8
Forgot to add SPD action to UHCI 2023-03-21 18:40:11 -07:00
Stanislav Shwartsman
5b45a2e985
Merge pull request #36 from fysnet/master
Fix issue #25
2023-03-18 07:44:19 +02:00
Benjamin David Lunt
64009cb067
Fix issue #25
The 'd.pcap_image_t pcapture' in usb_common.h called its constructor and set 'fd' to -1. However, in the usb_device_c() constructor, we then cleared all of 'd', resetting pcapture.fd back to zero. Then on Bochs exit, the pcap_image_t destructor tried to close the file since 'fd' was zero instead of -1. To fix this, I removed the pcap_image_t constructor and now call pcap_image_init() within the usb_device_c constructor.
2023-03-17 17:30:10 -07:00
Stanislav Shwartsman
a34bc01592
Merge pull request #35 from fysnet/master
USB emulation update
2023-03-13 16:07:47 +02:00
Benjamin David Lunt
6a0e7a5306
Allow a usb port number to be more than one digit
Also fixed an error with xhci and the save/restore Bochs environment
2023-03-12 16:40:02 -07:00
Benjamin David Lunt
8ef4dcc7d1
Allow a usb port number to be more than one digit 2023-03-12 16:36:22 -07:00
Benjamin David Lunt
280fbf1929
Added info about the USB disk/cdrom options 2023-03-12 14:58:12 -07:00
Benjamin David Lunt
3c6a97c676
add dependencies 2023-03-11 17:37:27 -07:00
Benjamin David Lunt
7e046f5a27
indentation corrections 2023-03-11 17:28:59 -07:00
Benjamin David Lunt
418ef4e1ca
USB emulation update
add usb_uasp to the build
2023-03-10 12:56:32 -07:00
Benjamin David Lunt
9075864647
USB emulation update
change to 'public'
2023-03-10 12:30:03 -07:00
Benjamin David Lunt
5b6ed6274b
USB emulation update
Add protected declaration
2023-03-10 12:22:13 -07:00
Benjamin David Lunt
884d4c272e
USB emulation update
fix two comments
2023-03-10 11:56:12 -07:00
Benjamin David Lunt
7041926aac
USB emulation update
Added examples for new options.
 - xhci: model= option
 - xhci: allow the user to select number of ports
 - usb disk: proto= option (bbb or uasp)
Added xhci primary stream support.
 (Secondary stream support is not included)
Added (experimental) usb disk protocol UASP for super- and high-speed usb disk devices.
  (high-speed uasp support is not thoroughly tested)
xhci: fixed "change event" function
scsi: fixed bug in command 0x25
scsi: added command 9E/10
2023-03-10 11:37:08 -07:00
Benjamin David Lunt
86b50988be
USB emulation update
Added examples for new options.
xhci: model= option
usb disk: proto= option
2023-03-10 11:29:06 -07:00
Benjamin David Lunt
8a1f8cf545
USB emulation update
Added examples for new options.
xhci: model= option
usb disk: proto= option
2023-03-10 11:27:12 -07:00
Stanislav Shwartsman
43f18a1e2e
Merge pull request #34 from fysnet/master
minor error in validation of slot and ep fixed
2023-02-25 19:49:23 +02:00
Benjamin David Lunt
8078e5f85f
removed unprintable characters 2023-02-25 08:15:17 -07:00
Benjamin David Lunt
db49706bbd
minor error in validation of slot and ep fixed 2023-02-24 17:19:11 -07:00
Stanislav Shwartsman
9edcaf8697
Merge pull request #32 from julienfreche/jfreche/cpudb_string_size
cpudb: extend strings that are too small
2023-02-23 06:38:29 +02:00
Julien Freche
29f3e4a455 cpudb: extend strings that are too small 2023-02-22 12:03:02 -08:00
Stanislav Shwartsman
a11b4e1c20
Merge pull request #31 from fysnet/master
Minor:

Check speed indicator in the Transfer Descriptor matching the device speed.
Max packet size check, checking that the amount requested/sent is within limits.
Checking that the first packet sent is the GetDescriptor Request with a length equal to or less than the max packet size.
Checking the command length in the USB SCSI emulation.
Checking command parameters within various emulations (SCSI (BBB), etc.)
Implemented "Boot Protocol" for the (HID) Mouse emulation.
Fixed wheel mouse HID report (along with the other HID reports)
Added the Over Current bits to the UHCI code
Added the monitoring of the toggle bit in the TDs

Major:

Re-wrote the UHCI stack processing so that control and bulk reclamation can be used.
(This made it so Windows 7 now works)
Adding function to the USB SCSI emulation.
Enhanced the xHCI emulation to further check for errors in a driver.
2023-02-20 20:34:00 +02:00
Benjamin David Lunt
a098f5f153
Use defines instead of bits 2023-02-18 12:36:25 -07:00
Benjamin David Lunt
497683a2d0
Win32: Make panic dialog a little wider
This makes the Win32 Panic Dialog a little wider so the error string isn't truncated
2023-02-18 12:29:45 -07:00
Benjamin David Lunt
71694e34cd
Error fix for compiler 2023-02-16 17:58:06 -07:00
Benjamin David Lunt
996d081d4c
Minor fix for compiler error 2023-02-16 17:52:29 -07:00
Benjamin David Lunt
a4492a9179
USB Enhancement (minor addition) 2023-02-16 17:38:41 -07:00
Benjamin David Lunt
a996807435
Enhanced the USB emulation
The enhancements include fixes and error checks targeting hobbyists who are writing USB drivers.
2023-02-16 17:24:13 -07:00
ImWuX
a83e275382
forgot to update header :D 2023-02-16 14:17:24 +02:00
ImWuX
9d65d5e261
patched an issue with the HPET where writing an u64 with HPET_TN_SETVAL set, would only write the lower 32bits into the comparator. 2023-02-16 14:11:43 +02:00
Benjamin David Lunt
cc6ac48d6c
Wider statusbar elements
With newer wider screens, we can now have wider statusbar elements so that an element such as "USB-HD" isn't clipped on both sides.
2023-02-10 21:17:21 -07:00
Benjamin David Lunt
5d81785db6
Add SCSI_CD_EVENT_STATUS 2023-02-01 16:51:16 -07:00
Florian Weimer
10c5ff3f82 configure: Improve compatibility with strict(er) C99 compilers
C99 removed implicit function declarations from the language.  All
functions must be declared before they can be called.  There are a
few places in the configure script where the exit function is called
without including <stdlib.h>.  Instead, return from the main
function, avoiding the exit declaration issue.
2022-11-27 23:12:58 +01:00
quirck
bee4cefb9e Check breakpoints before icount guard 2022-11-13 22:24:37 +03:00
Satoshi Tanda
d773b5b0a7 Fix windows build 2022-10-30 14:48:57 -07:00
Anders
f4dfeb260e
Register Windows silent uninstall command
Added silent uninstall command for use by WinGet and other packaging tools.

I also made the strings non-expandable because $InstDir will never contain %ProgramFiles% etc.
2022-10-12 04:07:42 +02:00
Stanislav Shwartsman
7562731dca a little coding style unification 2022-10-08 20:35:36 +03:00
Stanislav Shwartsman
4c9f637d49 updated CHANGES 2022-10-08 20:30:31 +03:00
Stanislav Shwartsman
0e4524f38f Implemented CMPccXADD instructions 2022-10-08 20:04:22 +03:00
Stanislav Shwartsman
aa84121ede changes (c) date 2022-10-02 23:26:57 +03:00
Stanislav Shwartsman
c47b5ff5cb extract IFMA52 code to separate file 2022-10-02 23:24:00 +03:00
Stanislav Shwartsman
63ed447717 fixed compilation 2022-10-02 23:09:41 +03:00
Stanislav Shwartsman
4aed72e0ef fix issue with AVX IFMA when EVEX is not compiled in 2022-10-02 23:07:05 +03:00
Stanislav Shwartsman
a56144833a add support for AVX encoded VNNI INT8 extensions 2022-10-02 23:00:46 +03:00
Stanislav Shwartsman
3a20495db8 implemented WRMSRNS extension - Non Serializing version of WRMSR opcode 2022-10-02 22:16:02 +03:00
Stanislav Shwartsman
9f76eaacea implemented AVX IFMA instructions 2022-10-02 22:08:20 +03:00
Stanislav Shwartsman
698859df13 fixed compilation warning 2022-10-02 22:07:26 +03:00
Stanislav Shwartsman
22f868ae6d update lex/yacc autogenerated files for debugger 2022-10-02 22:02:09 +03:00
Stanislav Shwartsman
3d23dff408 Merge branch 'master' of https://github.com/bochs-emu/Bochs 2022-10-01 14:12:12 +03:00
Stanislav Shwartsman
d1737638ec add CPUID definitions disclosed in recent Intel SDM 2022-10-01 14:11:45 +03:00
Dreg
b0173eaac5 Fix dbgdoc user.dbk broken with PR #12 2022-09-19 04:29:19 +02:00
Dreg
d514779177 add dbghelp for source, bt and print-string commands 2022-09-12 10:53:39 +02:00
Stanislav Shwartsman
ce44e952ee update autogenerated lex/yacc files with new debugger command 2022-09-09 16:53:32 +03:00
Stanislav Shwartsman
759ad34919
Merge pull request #10 from therealdreg/master
add layout commands for dbg
2022-09-09 16:39:32 +03:00
Dreg
7c6bd03e05 add layout commands for dbg 2022-08-29 18:27:12 +02:00
Volker Ruppert
5ebe6b46d0 Removed useless BX_DEBUG messages in devices init 2022-08-29 18:14:59 +02:00
Stanislav Shwartsman
7a1306e50e
Merge pull request #5 from tandasat/update-vs-projects
Update Visual Studio projects
2022-08-27 19:10:14 +03:00
Satoshi Tanda
1488975dab Enable --enable-avx for Windows build for x64 2022-08-27 08:35:39 -07:00
Stanislav Shwartsman
1162fb4d74 Add --enable-avx to add predefined configure targets 2022-08-27 09:01:18 +03:00
Satoshi Tanda
c52dc25c26 add missing CPU model names 2022-08-26 20:40:53 -07:00
Satoshi Tanda
223b1d923c remove trailing spaces 2022-08-26 20:40:16 -07:00
Satoshi Tanda
016c058652 Enable --enable-avx for Windows build 2022-08-26 19:46:11 -07:00
Satoshi Tanda
4765641de0 build: update bochs.sln to VS2019 version 2022-08-26 19:46:11 -07:00
Satoshi Tanda
156f9110e9 build: delete a reference to the disasm project 2022-08-26 19:46:11 -07:00
Satoshi Tanda
7ac1b79629 build: add dependency on avx to the cpu project 2022-08-26 19:46:11 -07:00
Satoshi Tanda
60afce0e90 build: add some missing files to VS projects 2022-08-26 19:46:11 -07:00
Satoshi Tanda
f1902239b6 build: resolve MSBuild warning MSB8012 2022-08-26 19:46:11 -07:00
Satoshi Tanda
982a00e3a6 build: extract vs2019-workspace.zip 2022-08-26 19:46:11 -07:00
Stanislav Shwartsman
b75fcc4535 updates to cpuid.h with most recent CPUID bit definitions 2022-08-26 22:31:23 +03:00
Stanislav Shwartsman
5fab5364bc update CHANGES 2022-08-26 21:55:38 +03:00
Stanislav Shwartsman
cee5e6de4b update configure.in for autoconf 2.71
it also required configure.in to be renamed to configure.ac
2022-08-26 21:20:51 +03:00
Stanislav Shwartsman
a2673e147d update .conf.everything script 2022-08-26 21:15:46 +03:00
Stanislav Shwartsman
6acd22b7e4 regen lex/yacc after deref command 2022-08-23 23:39:33 +03:00
Dreg
acfa7399e1
dereference expression and command for dbg (#38)
* dereference expression and command for dbg

* doc updated for deref and $ operator
2022-08-23 23:37:30 +03:00
Stanislav Shwartsman
44274b37db use true / false for boolean instead of const 0 and 1 in memory 2022-08-23 21:56:09 +03:00
Stanislav Shwartsman
1e4f1624c8 remove trailing whitespace from source files 2022-08-23 21:46:04 +03:00
Stanislav Shwartsman
f82270013d update user docs for internal debugger 2022-08-23 21:33:20 +03:00
Stanislav Shwartsman
fc39d2b6fe regen lex/yacc autogenerated files after writemem command added 2022-08-23 21:20:55 +03:00
Dreg
3cd6a92c8e
improved info gdt/ldt support for 64/32 entries (#36)
improved info gdt/ldt support for 64/32bit entries
2022-08-22 08:49:04 +03:00
Dreg
104d169ef8
add new dbg command loadmem, load bytes from file to memory (laddr) (#34)
* add dbg bx_dbg_write_linear

* add dbg bx_dbg_loadmem_command

load bytes from file to memory
2022-08-22 08:17:57 +03:00
Satoshi Tanda
30ef7f4842
Fix dbg_xlate_linear2phy for NPT (#30) 2022-08-22 07:20:47 +03:00
Stanislav Shwartsman
2f45913397
extend setpmem command to support 8-byte values to write (#35)
Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2022-08-21 16:48:10 +03:00
Dreg
1eb1a8d641
add dbginfo support for 64 bit entries (LDT,GDT) long mode (#33) 2022-08-21 11:06:03 +03:00
Stanislav Shwartsman
fac15a7d03 updates to MTF code:
if VMEntry delivered an event of event happen right after VMEntry - MTF becomes pending immediatelly
2022-08-16 21:37:36 +03:00
Stanislav Shwartsman
b946570838 implemented VMX Monitor Trap Flag handling 2022-08-16 21:17:05 +03:00
Stanislav Shwartsman
180c1f09d5 fixed compilation 2022-08-14 21:18:25 +03:00
Stanislav Shwartsman
c9d8413422 allow TLB caching of SPP paging writes
it is possible that SPP-protected subpage block is allowing write but all others are not.
the TLB entry cannot be cached as writeOK based on SPP subblock check
2022-08-14 21:09:18 +03:00
Stanislav Shwartsman
97a2cdd85f update VMEXIT reasons according to published docs
update list of trap-like VMEXITs
2022-08-13 23:25:10 +03:00
Stanislav Shwartsman
df849619be more SPP limitations 2022-07-31 22:07:16 +03:00
Stanislav Shwartsman
f052c0f5b2 - VMX: Implemented missing SPP Misconfiguration condition (odd bits of SPP PTE entry are reserved)
- VMX: Fix SPP walk and VMCS access memory type to WB (match memory type listed in IA32_VMX_BASIC MSR)
2022-07-31 19:57:38 +03:00
Stanislav Shwartsman
13aa25919a Revert "do not ignore MSR=0 even if ignore_bad_msrs is set"
MSR=0 is valid MSR (used for Machine Check Architecture)

This reverts commit cf03c00ef0.
2022-07-31 18:47:13 +03:00
Stanislav Shwartsman
4d227d15fb remove instrument.h from bochs.h so it won't be included everywhere
include it only where required
move PHY_ADDRESS reserved bits consts to cpu.h
2022-07-30 22:35:43 +03:00
Stanislav Shwartsman
cf03c00ef0 do not ignore MSR=0 even if ignore_bad_msrs is set 2022-07-30 19:53:10 +03:00
Stanislav Shwartsman
d576eaa7c1 list in debug CR4 more already published bits (UINTR)
fix debug print of XCR0
2022-07-30 19:15:32 +03:00
Stanislav Shwartsman
3f65841714
use boolean constants true/false instead of 0/1 (#26)
* use boolean constants true/false instead of 0/1

* fix code comment

Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2022-07-30 18:38:22 +03:00
Stanislav Shwartsman
0f9aec0e1a Merge branch 'master' of https://github.com/stlintel/Bochs 2022-07-30 15:43:25 +03:00
Stanislav Shwartsman
2093c2b1a3 allow 'Save guest MSR_PERF_GLOBAL_CTRL on VMEXIT' VMX control
at least fake it
2022-07-30 15:43:09 +03:00
Stanislav Shwartsman
f44f4ae753
MBE (Mode Based Execution Control) emulation (#22)
* MBE (Mode Based Execution Control) emulation
2022-07-30 15:26:47 +03:00
Stanislav Shwartsman
fb09790846 dos2unix to all files 2022-07-30 14:31:16 +03:00
Stanislav Shwartsman
e32d536abe
added ability to select memory block size configurable (#25)
very large memory configurations require large memory block (or very large amount of blocks)
2022-07-30 13:56:09 +03:00
Stanislav Shwartsman
8afd14972e
convert many consts from #define to enum or const variables (#23) 2022-07-27 23:20:47 +03:00
Stanislav Shwartsman
94503e7a0b
cpu/vmx definitions (#20)
* update vmx.h with recently published definition
* update actions after conflicts
2022-07-27 20:51:25 +03:00
Stanislav Shwartsman
430ba44b0e
Create hc-cpp.yml (#19)
* Create hc-cpp.yml

* update actions

* update actions

* update actions

* update actions

* update actions

* fix format string for VMX preemption timer dbg message
Fix compilation with BX_HAVE_XRANDR_H = 0: XRRQueryExtension is not available

* update actions

* add .conf.everything to testing

Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2022-07-27 01:26:55 +03:00
Satoshi Tanda
88f881c6d5
Fix that the INIT signal remains pending even after delivery of VM-exit/#VMEXIT(INIT) (#16)
* Clear pending INIT signal

When the INIT signal is translated into corresponding VM-exit/#VMEXIT,
the signal should no longer be marked as pending. Otherwise, the signal
would be (incorrectly) delivered again.

* Remove trailing space and fix an incorrect indent
2022-07-24 07:14:01 +03:00
Satoshi Tanda
0ae5e67894
Fix that the blocking by SMI bit maybe set when a VM-exit ends outside SMM (#15)
* Fix that the blocking by SMI bit is set

The blocking by SMI bit of the guest interruptibility state VMCS should
not be set unless the VM-exit ends in SMM. This only happens under the
dual-monitor treatment, which is not implemented in Bochs.

* Remove trailing whitespaces
2022-07-23 19:36:31 +03:00
Dreg
112afe5693
Add "bt" command to help (#9) 2022-07-18 13:10:22 +03:00
Dreg
35277e61f5
add string argument for instrument command (#8) 2022-07-18 10:25:35 +03:00
Stanislav Shwartsman
a8ef631a39
define and mention newly disclosed CPUID bits (#7)
Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2022-07-17 18:45:36 +03:00
Stanislav Shwartsman
c25b9d3509
fixing coding style in bios source files (#6)
Co-authored-by: Stanislav Shwartsman <sshwarts@users.sourceforge.net>
2022-07-17 18:16:44 +03:00
Dreg
d861786fd3 port instrument/examples to current version 2022-07-16 14:30:00 +02:00
ughoavgfhw
b8f38eb8d3 Fix two bugs around monitor/mwait
MONITOR relies on tickle_read_virtual to set the physical address, but it was
only doing so on TLB miss. So a MONITOR with a TLB hit would arm the most
recently accessed address instead of the requested one.

TLB invalidations disarmed the monitoring range, but didn't wake a CPU that
had already MWAIT-ed. Any instruction that invalidated TLB entries on other
CPUs could have caused an MWAIT-ing CPU to never wake.
2022-07-13 21:51:15 -05:00
Volker Ruppert
92622f16b9 Updated / improved information about configure shortcut scripts. 2021-11-04 17:44:57 +00:00
Volker Ruppert
7356cbce4d Updated developer doc: the legacy disassembler has been removed. 2021-10-25 15:51:36 +00:00
Volker Ruppert
693a8746d7 Added variable CONFIGURE_ARGS to simplify adding/overriding options. 2021-10-24 15:32:23 +00:00
Volker Ruppert
eef679a8a4 Some documentation fixes. 2021-10-18 19:31:16 +00:00
Volker Ruppert
1408de3ad2 Fixed and improved PCI slot config error handling. 2021-10-14 17:59:08 +00:00
Volker Ruppert
631e839046 Added changes after release. 2021-09-12 15:47:28 +00:00
Volker Ruppert
3e333a0d79 Removed APIC timer handles from save/restore list. They are set by the
constructor and should not be modified. Timer activation after restore is not
necessary.
2021-09-12 15:13:20 +00:00
Volker Ruppert
26914d0058 MWAIT timer fixes (to be completed).
- Fixed MWAIT timer activation.
- A timer handle should not appear in the save/restore list.
- TODO: Activate MWAIT timer after restore if necessary.
2021-09-10 16:54:54 +00:00
Volker Ruppert
52b0000db7 Applied two patches from Debian.
- Apply standard flags from environment everywhere (SF patch #546).
- Allow overriding ld and objcopy for building bios on non-x86 platforms.
2021-09-10 15:33:22 +00:00
Stanislav Shwartsman
f074c10b75 merge memory handling fix by Nikolai Zhubr 2021-08-25 17:42:08 +00:00
Volker Ruppert
412285baed Fixed compilation for big endian architectures (SF patch #563). 2021-08-24 19:06:01 +00:00
Volker Ruppert
d684c5cd57 Added missing updates after release. 2021-08-08 16:03:16 +00:00
Volker Ruppert
c9c3416098 Regenerated configure script. 2021-08-01 21:45:35 +00:00
Volker Ruppert
fbb7e29154 Updates after release. 2021-08-01 21:44:37 +00:00
Volker Ruppert
50b0ab2895 Regenerated configure script and recompiled BIOS images for release. 2021-08-01 08:12:28 +00:00
Volker Ruppert
b924b92ecc Preparing final release 2.7. 2021-08-01 08:07:38 +00:00
Volker Ruppert
0a956e2cf1 Fixed two external links. 2021-08-01 07:40:18 +00:00
Volker Ruppert
4c32ca7b16 Fixed some MSVC warnings in the cpu code (unsafe use of bool type). 2021-07-27 19:18:34 +00:00
Volker Ruppert
a1058990ba Trailing '../\' breaks compilation with MSVC nmake. Regenerated dependencies. 2021-07-27 18:13:26 +00:00
Volker Ruppert
452201a231 Fixed two compiler warnings in the cpu code. 2021-07-27 15:36:11 +00:00
Stanislav Shwartsman
1455788fe4 remove cpudb.h from some Makefile dependencies. it should be only in cpu/init.cc and config.cc 2021-07-25 18:21:41 +00:00
Stanislav Shwartsman
214220763f remove cpudb.h from some Makefile dependencies. it should be only in cpu/init.cc and config.cc 2021-07-25 18:10:39 +00:00
Stanislav Shwartsman
021f3794fa remove cpudb.h from some Makefile dependencies. TODO: it should be only in cpu/init.cc and config.cc 2021-07-25 18:08:54 +00:00
Stanislav Shwartsman
2cb9bb4e44 remove cpudb.h from some Makefile dependencies. TODO: it should be only in cpu/init.cc and config.cc 2021-07-25 18:06:31 +00:00
Stanislav Shwartsman
7129b1d7c5 fixed number of arguments for BX_INFO 2021-07-25 18:02:36 +00:00
Stanislav Shwartsman
da21b16d7f remove cpudb.h from bochs.h 2021-07-25 18:01:28 +00:00
Stanislav Shwartsman
7b2bb50722 fixed VMX exit qualification info for INVEPT/INVVPID/INVPCID instructions 2021-07-23 10:13:48 +00:00
Stanislav Shwartsman
0cba8b66c9 more robust handling of SVM VMCB host ptr 2021-07-23 09:30:17 +00:00
Stanislav Shwartsman
daaab792b6 added SVM vmcbptr to save/restore image 2021-07-23 08:06:58 +00:00
Volker Ruppert
6b08329fa2 Voodoo 1/2: Always reset 'swaps_pending' counter when switching to Voodoo mode.
This fixes a possible deadlock in accelerated Direct3D test.
2021-07-18 07:25:08 +00:00
Volker Ruppert
a216fc71a3 Recompiled BIOS images. 2021-07-14 16:11:51 +00:00
Volker Ruppert
7ed5d6447a Fixed two SF bugs in the Bochs BIOS code.
- MS-DOS 4.01 caused a stack overflow in the int15_function(). Now handle all
  functions that simply return success in the ASM code. Fixes SF bug #1439.
- Added two delay loops in keyboard_init(). Fixes SF bug #1438.
2021-07-14 16:10:19 +00:00
Volker Ruppert
bf8dda4e06 Regenerated configure script. 2021-07-12 19:06:38 +00:00
Volker Ruppert
e34d017f60 Some fixes for compiling for WIN64 with MSVC.
- Added check in config.h whether or not Bochs is configured and compiled for
  the same target platform (WIN32 / WIN64).
- Fixed some warnings that occur in the MSVC WIN64 case.
2021-07-12 19:05:25 +00:00
Volker Ruppert
61f24a0727 Updated gui makefile dependencies. 2021-07-08 20:16:51 +00:00
Volker Ruppert
7c8b1c5f28 Some small changes in the Voodoo Banshee code.
- Report some more unimplemented bits of the vidProcCfg register.
- Code cleanup in some bitblt methods.
2021-07-08 14:43:18 +00:00
Volker Ruppert
a38f0fdb02 The 2D destination x/y positions are signed values. Modified code to handle
negative values properly.
2021-07-07 06:54:30 +00:00
Volker Ruppert
44288f603d Fixed and cleaned up pattern fill methods. 2021-07-06 12:09:38 +00:00
Volker Ruppert
e17539861c Fixed and simplified setup of source and destination pitch. 2021-07-06 09:08:12 +00:00
Volker Ruppert
4bf3b23983 Added support for drawing polygon with pattern. 2021-07-06 06:40:53 +00:00
Volker Ruppert
0262b100a5 Some Banshee bitblt fixes.
- Fixed screen-to-screen code in the right-to-left case.
- Some pattern handling fixes (pattern origin is always destination x0, y0).
2021-07-05 10:30:04 +00:00
Volker Ruppert
8de6206ab6 Some Banshee bitblt clip code changes.
- Fixed screen-to-screen stretch code using new clip check.
- Simplified line / polygon drawing code using new clip check.
2021-07-04 15:06:50 +00:00
Volker Ruppert
fe9198b5a7 Fixed clipping related issues in host-to-screen methods.
- Added simple clip check method to be called for each destination x / y change.
- Use the new clip check in both host-to-screen methods.
- Some related changes.
- TODO: verify other bitblt methods for clipping correctness.
2021-07-04 08:17:55 +00:00
Volker Ruppert
e0cc76af53 Some changes in the Voodoo Banshee code.
- Calculate host-to-screen data size for "source stride packing" in color mode
  similar to the monochrome mode.
- Set up data swizzle mode for all launch area operations.
- Temporarily draw polygon in normal mode in case the currently unsupported
  pattern mode is selected.
- TODO #1: Rewrite of the clipping code at least for host-to-screen functions.
- TODO #2: Drawing polygon with pattern if requested.
2021-07-03 20:54:38 +00:00
Stanislav Shwartsman
01e785f479 minor tab2space 2021-07-03 19:00:41 +00:00
Stanislav Shwartsman
25ad0b804a VMX: fixed exit qualification info for VMREAD/VMWRITE instructions 2021-07-03 14:31:14 +00:00
Volker Ruppert
3062a14ef4 The i440BX chipset now reports 66 MHz DRAM clock. 2021-07-03 08:33:09 +00:00
Volker Ruppert
69c4758fbb New attempt to fix the Banshee bitblt issues in host-to-screen mode with
monochrome source and "source stride" packing. Now adding the source stride
converted to pixels to the 5-bit srcX value.
TODO #1: color source needs to be handled in a similar way (no test case yet).
TODO #2: clipping needs to be rewritten at least for host-to-screen blts.
2021-07-02 17:29:22 +00:00