Setting VBE memory size to 4, 8, 16 and 32 MB is now possible. Since a memory
size change can also change the number of available modes and the value for
"number of image pages" in the mode info it is required to use the latest
VGABIOS binary.
Related changes:
- Make sure the VBE entry appears at index 1 of VGA extension option list.
- Removed all memory size constants and use BX_VGA_THIS s.memsize instead.
TODO: Remove the static mode info table and create it dynamicly similar to
Banshee and Cirrus.
after checking agains Intel reference decoder (Xed) it shown few mismatches.
The mismatches are not functionally important - some very long instructions with lock prefix would cause #UD (due to badly placed lock prefix) insetad of #GP due to excessive opcode length
Seems like Xed evaluates entire instruction to the end and only then converts it to #UD due to lock prefix
This allows the `usb` option to be used in the `boot:` parameter. Of
course there is not support for booting from a USB, but this allows for
a (probably much) further down the road addition.
This will break the current bios when booting from a network. However,
the bios is already broken in this manner, especially when
`BX_ELTORITO_BOOT` is not defined. The current bios code assumes and
hard codes the BEV entry to 4. However, if the `BX_ELTORITO_BOOT` define
is missing, the BEV will be added to the third entry, not the fourth
entry.
For the BIOS to be updated correctly, things like the following will
need to be updated instead of hard coded to `[4]`.
54961f0326/bochs/bios/rombios.c (L2205)
The following will need to be not hard coded to 4.
54961f0326/bochs/bios/rombios.c (L2253-L2257)
The following will need "usb" added.
54961f0326/bochs/bios/rombios.c (L2102)
The following assumes the next entry will be the fourth entry, not
checking to see if `BX_ELTORITO_BOOT` was defined.
54961f0326/bochs/bios/rombios.c (L10851-L10857)
The following comment will need to be updated.
54961f0326/bochs/bios/rombios.c (L8365-L8371)
As well as a few other fixes and updates.
This PR simply allows the value of '4' (`BX_BOOT_USB`) to be placed in
the boot sequence options, moving the network (`BX_BOOT_NETWORK`) to the
next number.
The boot sequence option still only allows three parameters.
`boot: cdrom, floppy, disk`
or
`boot: cdrom, usb, disk`
I don't think it is necessary to add a fourth.
---------
Co-authored-by: Volker Ruppert <Volker.Ruppert@t-online.de>
The current code would panic if booting from network is selected.
Added two empty items for PCMCIA and USB as a workaround.
FIXME 1: The config interfaces win32paramdialog and wxdialog now showing
two empty lines in combo box.
FIXME 2: The Bochs BIOS can only boot from network if selected in boot menu
(press F12).
biggest issue was:
A supervisor-mode data access causes a LASS violation only if supervisor-mode access protection is enabled
(CR4.SMAP = 1) and RFLAGS.AC = 0 or the access implicitly accesses a system data structure
AVX10.1 includes the following AVX extensions:
x86_feature(BX_ISA_AVX512, "avx512") /* AVX-512 instruction */
x86_feature(BX_ISA_AVX512_DQ, "avx512dq") /* AVX-512DQ instruction */
x86_feature(BX_ISA_AVX512_BW, "avx512bw") /* AVX-512 Byte/Word instruction */
x86_feature(BX_ISA_AVX512_CD, "avx512cd") /* AVX-512 Conflict Detection instruction */
x86_feature(BX_ISA_AVX512_VBMI, "avx512vbmi") /* AVX-512 VBMI : Vector Bit Manipulation Instructions */
x86_feature(BX_ISA_AVX512_VBMI2, "avx512vbmi2") /* AVX-512 VBMI2 : Vector Bit Manipulation Instructions */
x86_feature(BX_ISA_AVX512_IFMA52, "avx512ifma52") /* AVX-512 IFMA52 Instructions */
x86_feature(BX_ISA_AVX512_VPOPCNTDQ, "avx512vpopcnt") /* AVX-512 VPOPCNTD/VPOPCNTQ Instructions */
x86_feature(BX_ISA_AVX512_VNNI, "avx512vnni") /* AVX-512 VNNI Instructions */
x86_feature(BX_ISA_AVX512_BITALG, "avx512bitalg") /* AVX-512 BITALG Instructions */
x86_feature(BX_ISA_AVX512_BF16, "avx512bf16") /* AVX-512 BF16 Instructions */
x86_feature(BX_ISA_AVX512_FP16, "avx512fp16") /* AVX-512 FP16 Instructions */
And it could be handling 256-bit only, in this case avx10_1 will be enabled but avx10_vl512 will not.
Bochs will support all relevant instructions but without 512 bit mode in this case, attemp to encode VL512 in EVEX will result in #UD
also added support for AVX10 CPUID leaf 0x24
TODO: VMX support