Commit Graph

10259 Commits

Author SHA1 Message Date
Volker Ruppert
061339b57b Rewrite of the DHCP option handling including support for a parameter list,
host name, lease time and other options (ported from Bochs 'vnet' DHCP server).
2014-03-30 18:54:50 +00:00
Volker Ruppert
3e280ae594 Fixed MSVC warnings 2014-03-29 15:23:49 +00:00
Volker Ruppert
31e10bb527 TFTP session handling now using pointers for allocate and find. 2014-03-28 20:08:56 +00:00
Volker Ruppert
6b8d425a7f Some work on the Slirp TFTP server
- copied some defines from osdep.h to fix compilation on all Windows build systems
- ported TFTP option handling from the Bochs 'vnet' TFTP server
2014-03-27 21:09:09 +00:00
Volker Ruppert
5257e253ae Added broadcast IP address and server name "slirp" to DHCP reply.
TODO: port more features from the Bochs 'vnet' DHCP server to Slirp.
2014-03-26 17:01:07 +00:00
Stanislav Shwartsman
ae936e086f fixed compilation err under cygwin 2014-03-25 20:09:48 +00:00
Volker Ruppert
eb3f567f4a Added basic write support to the Slirp TFTP server.
TODO #1: implement all features of the existing (vnet) TFTP support in Slirp.
TODO #2: make the slirp DHCP server work like the vnet one.
TODO #3: finally remove the slirp backend and rename the new one to "slirp".
2014-03-24 20:36:50 +00:00
Stanislav Shwartsman
be368f54d1 remove redundant type conversions 2014-03-23 20:01:58 +00:00
Volker Ruppert
db5f3d4fed regenerated after device options reorg 2014-03-23 12:02:16 +00:00
Volker Ruppert
5ca0a003b6 Configure script and config.h.in reorganization: put all device-related config
options in one section and added busmouse option.
2014-03-23 12:00:58 +00:00
Volker Ruppert
8159a00b3e Added access() check before detecting image mode to get an accurate panic
message in case of failure.
2014-03-23 09:19:44 +00:00
Volker Ruppert
02905d9aaf Fixed RPM build (bximage_old should be removed after next release) 2014-03-22 10:39:06 +00:00
Stanislav Shwartsman
c079702a4d Finish softfloat implementation of float32/64_scalef. This checkin completes AVX-512 implementation. 2014-03-21 20:18:03 +00:00
Volker Ruppert
9052c65049 Added support to specify the IP address of the SMB server.
Handle special value "none" for the slirp.conf to avoid error message.
2014-03-21 18:47:14 +00:00
Volker Ruppert
159228db5d Slirp: added SMB support for non-Windows platforms. The new slirp.conf option
'smb_export' can be used to set up shared folder. TODO: the location of 'smbd'
and IP address of the SMB server is currently hardcoded.
2014-03-20 18:02:44 +00:00
Stanislav Shwartsman
1e7b6ff2cd check if XMM reg is clear using dedicated function 2014-03-17 20:50:59 +00:00
Stanislav Shwartsman
ab6230a9a8 Implemented XSAVEC instruction emulation and XINUSE optimization in the XSAVEOPT instruction 2014-03-17 20:29:44 +00:00
Stanislav Shwartsman
d8fa7aa28a implemented INIT optimization for XSAVEOPT instruction 2014-03-16 21:56:30 +00:00
Stanislav Shwartsman
72b715e5f0 fixed XSAVE to match spec, implemented first look into XINUSE. TODO: use XINUSE to optimize XSAVEOPT as well 2014-03-16 21:03:13 +00:00
Stanislav Shwartsman
97d2965d58 continue xsave code rework 2014-03-16 20:37:47 +00:00
Volker Ruppert
798596c4c0 Slirp: added sanity check for correctly packed networking structures.
Cygwin shortcut script: option -mno-cygwin is obsolete and -mno-ms-bitfields is
required for Bochs as of GCC version 4.7.
2014-03-16 12:13:52 +00:00
Stanislav Shwartsman
9d8d895b52 cpuid fixes 2014-03-15 20:19:30 +00:00
Stanislav Shwartsman
378e7e16eb fixed major code duplication in CPUDB classes 2014-03-15 19:24:42 +00:00
Stanislav Shwartsman
d18cabc7a9 add new CPUDB files 2014-03-15 18:31:33 +00:00
Stanislav Shwartsman
c87605722b CPUDB: added AMD Trinity to the database 2014-03-15 18:30:13 +00:00
Stanislav Shwartsman
d10fa93d89 fixed to VSCALEF instruction + one more step in the implementation in the softfloat 2014-03-14 20:26:50 +00:00
Volker Ruppert
4a78dffb24 Cleaned up disk sector offset variables used for the seek latency feature. Now
using names similar to the cdrom ones.
2014-03-11 18:29:32 +00:00
Volker Ruppert
76a03aa1f0 Networking-related fixes
- bx_param_string_c method isempty() didn't work for raw byte strings. Now using
  it to check whether or not the current value matches the initial one. The
  parameter handling of the network adapters now use this method to check if
  the MAC address is already initialized to avoid incorrect BX_ERRORs.
- small documentation update
2014-03-10 19:05:46 +00:00
Stanislav Shwartsman
08f5383831 fix for x87 2014-03-09 22:06:13 +00:00
Stanislav Shwartsman
02e19de346 Added shape of implementation for last missing VSCALEF* AVX-512 instructons.
The softfloat implementation is still missing (only corner cases are supported).
Extend softfloat floatNN_class methods to distinguish between SNaN and QNaN.
2014-03-09 21:42:11 +00:00
Volker Ruppert
aad090d03c Slirp dnssearch: added support for comma-separated list of DNS suffixes 2014-03-09 16:41:36 +00:00
Stanislav Shwartsman
211208dc30 zero masking is not allowed for all forms of vsib, including gather 2014-03-08 20:27:10 +00:00
Stanislav Shwartsman
48ab171b79 enumerate possible fetchdecode failures leading to #UD decoding. TODO: add this info to BX_IA_ERROR as immediate 2014-03-08 20:09:00 +00:00
Stanislav Shwartsman
069498eef6 zero masking is not allowed for mem destination instructions 2014-03-08 19:49:35 +00:00
Volker Ruppert
46037ee5f5 Slirp: added basic 'dnssearch' option (currently only 1 entry supported).
TODO: 'dnssearch' option should accept a comma-separated list of suffixes.
Other slirp TODOs: SMB support on Linux, reduce code duplication (ARP, DHCP, TFTP)
2014-03-08 08:54:33 +00:00
Stanislav Shwartsman
bfe6ecabb8 xsave sse state using same interface as all other advanced states 2014-03-04 21:06:29 +00:00
Volker Ruppert
0c4e5eb6c5 Renamed slirp option 'dhcp' to 'dhcpstart' (similar to Qemu)
Ignore case when checking for slirp options
Improved slirp documentation
2014-03-04 18:58:51 +00:00
Volker Ruppert
25f9b4346a Added support for the bootfile option in the slirp config file.
Moved slirp config parameters to the ethernet module object.
Added initial documentation for the built-in slirp support
2014-03-03 16:32:11 +00:00
Volker Ruppert
f62c8f158f Some work on the "Bochs side" of the new slirp module
- added support for a separate slirp config file specified with the "script"
  parameter. Added sample config in the "misc" subdirectory.
- now creating one logfunctions object per slirp instance and added new function
  slirp_warning() to send error messages to the Bochs log.
- regenerated dependencies for the iodev/network Makefile and updated command
  line example for generating them.
2014-03-02 20:24:26 +00:00
Stanislav Shwartsman
39bb48cd69 added missing includes 2014-03-02 19:18:05 +00:00
Stanislav Shwartsman
c544e82c43 fixed code duplication in BEXTR implementations 2014-03-02 19:16:13 +00:00
Stanislav Shwartsman
bc5af269b7 Fix some more code duplication with sclaar_arith.h
Do not clear IA32_FEATURE_CTRL MSR on soft reset (will clear the VMX lock bit)
On real HW XSAVE/XRSTOR which is not 4-byte aligned cause #AC(0) intead of #GP(0) when alignment check is enabled
2014-03-02 16:40:13 +00:00
Volker Ruppert
c1fa1a4b32 vVFAT: use path relative to the vVFAT root folder when saving file attributes.
This is required when sharing one folder between different guest installations.
2014-03-02 11:30:03 +00:00
Volker Ruppert
479d0477cf Slirp: added symbols required for win32 plugin DLLs.
Updated workspace files after adding slirp and avx sources
Updated slirp TODO list:
- reduce code duplication with 'vnet' module (DHCP, TFTP, ARP)
- add separate config file for slirp to make it more flexible (using the
  'script' parameter)
- add SMB support on Linux
- remove slirp backend module after next Bochs release
2014-03-02 09:53:42 +00:00
Volker Ruppert
6bfc3e4bd8 Slirp: added SVN Id on top of each source file 2014-03-02 07:42:24 +00:00
Volker Ruppert
2d4d3aaa56 Slirp: fixed MSVC warnings 2014-03-01 23:52:08 +00:00
Volker Ruppert
3f5d670384 Some work on the new slirp module
- applied remaining updates from Qemu slirp
- add #if blocks to all slirp .cc files for conditional compilation
- fixed some uninitialized variable warnings
2014-02-27 21:15:31 +00:00
Stanislav Shwartsman
402b2c01c9 Implemented AVX-512 conflict detection instructions (VPCONFLICT, VPLZCNT, VPBROADCASTMB2Q, VPBROADCASTMW2D)
Only missed AVX-512 opcodes are:

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD
2014-02-27 21:12:02 +00:00
Volker Ruppert
5ea6e8c941 Some work on the new slirp module
- added dnssearch sources from latest Qemu slirp (currently unused feature)
- minor other updates from Qemu slirp
- add #if blocks around already up-to-date slirp sources for conditional compilation
- TODO: finish updating from Qemu and start fixing compiler warnings
2014-02-27 19:11:18 +00:00
Stanislav Shwartsman
695d245116 Implemented VRNDSCALE AVX-512 instructions.
Now only missed AVX-512 opcodes now are:

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD
2014-02-27 18:27:57 +00:00
Stanislav Shwartsman
f282fc4e75 use names instead of magic numbers 2014-02-26 20:49:23 +00:00
Stanislav Shwartsman
2f906d844c fix vmexit reason descriptions 2014-02-25 19:56:10 +00:00
Volker Ruppert
87bf69dcd1 regenerated after adding MSVC slirp support 2014-02-25 19:46:15 +00:00
Volker Ruppert
e62076e53d Somw work to make the new slirp module compile and work with MSVC
- added container_of() macro replacement
- fixed unresolved symbol in netmod.cc
- added MSVC-style structure packing pragmas
- check for the presence of min / max macros
- enabled slirp_new for MSVC in configure script
TODO list:
- check for more updates from Qemu
- fix lots of compiler warnings
- reduce code duplication with 'vnet' module (DHCP, TFTP, ARP)
- add separate config file for slirp to make it more flexible (using the
  'script' parameter)
- update MSVC workspace files
- add SMB support on Linux
- remove slirp backend module after next Bochs release
2014-02-25 19:44:14 +00:00
Stanislav Shwartsman
01af7f5346 Implemented VRSQRT14 AVX-512 instructions & optimized legacy SSE RSQRTSS/PS instructions handling
//
// The table lookup was reverse-engineered from VRSQRT14SS instruction implementation available
// in the Intel Software Development Emulator rev6.20 (released February 13, 2014)
// http://software.intel.com/en-us/articles/intel-software-development-emulator/
//

// TODO: find better way to emulate these instructions, I am sure the HW doesn't have 64K entry lookup tables

Now only missed AVX-512 opcodes now are:

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD

512.66.0F3A.W0 08 VRNDSCALEPS
512.66.0F3A.W1 09 VRNDSCALEPD
NDS.LIG.66.0F3A.W1 0A VRNDSCALESS
NDS.LIG.66.0F3A.W1 0B VRNDSCALESD
2014-02-25 18:57:49 +00:00
Stanislav Shwartsman
47b56a2174 regen dependencies in Makefile 2014-02-24 21:36:11 +00:00
Stanislav Shwartsman
38bcc164a7 Implemented VRCP14 AVX-512 instructions.
//
// The table lookup was reverse-engineered from VRCP14SS instruction implementation available
// in the Intel Software Development Emulator rev6.20 (released February 13, 2014)
// http://software.intel.com/en-us/articles/intel-software-development-emulator/
//

// TODO: find better way to emulate these instructions, I am sure the HW doesn't have 64K entry lookup table

Now only missed AVX-512 opcodes now are:

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD

512.66.0F38.W0 4E VRSQRT14PS
512.66.0F38.W1 4E VRSQRT14PD
NDS.LIG.66.0F38.W0 4F VRSQRT14SS
NDS.LIG.66.0F38.W1 4F VRSQRT14SD

512.66.0F3A.W0 08 VRNDSCALEPS
512.66.0F3A.W1 09 VRNDSCALEPD
NDS.LIG.66.0F3A.W1 0A VRNDSCALESS
NDS.LIG.66.0F3A.W1 0B VRNDSCALESD
2014-02-24 21:31:52 +00:00
Volker Ruppert
c4f722cd28 Improved CD-ROM save/restore support
Set current LBA value after seek completion (faked)
2014-02-24 18:16:21 +00:00
Volker Ruppert
b7238798fc Explicitly disable the new slirp module for the MSVC case until the
container_of() macros is fixed (required for Cygwin).
2014-02-23 21:22:41 +00:00
Volker Ruppert
92c6120d7a Some work on the seek latency feature
- rewrite of the logical sector handling code to make seek latency support possible
- implemented variable HD seek latency for seek and read commands
- TODO #1: CD-ROM seek command returns status immediately, but it clears the DSC bit
  and sets it at completion. Device should not accept ATAPI commands until DSC is set.
- TODO #2: clean up the seek latency code
2014-02-23 20:06:02 +00:00
Volker Ruppert
c7f57b5547 Some work on the seek latency feature
- temporarily disabled seek latency support for ATAPI command 0x2b until the
  seeking status is implemented correctly
- fix for the MSVC compilation fix (result was always 0.0)
2014-02-23 13:56:23 +00:00
Volker Ruppert
c0fc06b433 Fixed VS2013 compilation error and GCC warning
Still TODO: make HD seek latency variable
2014-02-23 08:49:44 +00:00
Stanislav Shwartsman
648221d419 rewritten xsave/xrestor for more modular functionality. todo: replace walk through state using simple for loop 2014-02-22 21:00:47 +00:00
Volker Ruppert
93d9590f3b Some work on the ATA/ATAPI seek latency feature
- seek-only commands now using this feature
- fixed possible strange error message at hard disk DMA reads caused by wrong
  bmdma_start_transfer() call.
2014-02-21 21:37:33 +00:00
Volker Ruppert
e5e594129c Fixed saving global sound options to bochsrc 2014-02-19 16:39:32 +00:00
Volker Ruppert
6b39b6971f Slirp: reduce differences to latest Qemu sources 2014-02-18 20:34:14 +00:00
Stanislav Shwartsman
0a1b4f1c7e added template for missing avx-512 instructions 2014-02-17 20:21:58 +00:00
Stanislav Shwartsman
5ab2bb363c fix of compilation err 2014-02-17 16:19:43 +00:00
Volker Ruppert
8f3695aedf Some work on the builtin slirp support
- fixed Windows netmod plugin
- reduce differences to latest Qemu sources (to be continued)
2014-02-16 20:35:28 +00:00
Volker Ruppert
ec4b7d717e Patch applied to the main trunk with some additions 2014-02-16 13:34:18 +00:00
Volker Ruppert
c54dadc891 Regenerated after adding builtin "slirp" support 2014-02-16 13:33:07 +00:00
Volker Ruppert
dfc71f8ae4 Applied patch for builtin "slirp" (user-mode networking) support. This version
is almost a port of the Qemu 1.1.2 implementation. It has been tested successfully
on Linux and Windows (MinGW/MSYS). The networking module is currently called
"slirp_new", since the "slirp" backend module still exists.

TODO list:
  - MSVC support (requires container_of() macro replacement)
  - apply fixes and improvements from recent Qemu releases
  - use our TFTP implementation to reduce code duplication
  - check if we can share ARP and DHCP support with "vnet"
  - add SMB support on Linux
  - finally remove the slirp backend module support
2014-02-16 13:31:53 +00:00
Stanislav Shwartsman
7775483d5e Implemented VCVTPS2PH AVX-512 instruction
Now only missed AVX-512 opcodes now are:

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD

512.66.0F38.W0 4C VRCP14PS
512.66.0F38.W1 4C VRCP14PD
NDS.LIG.66.0F38.W0 4D VRCP14SS
NDS.LIG.66.0F38.W1 4D VRCP14SD
512.66.0F38.W0 4E VRSQRT14PS
512.66.0F38.W1 4E VRSQRT14PD
NDS.LIG.66.0F38.W0 4F VRSQRT14SS
NDS.LIG.66.0F38.W1 4F VRSQRT14SD

512.66.0F3A.W0 08 VRNDSCALEPS
512.66.0F3A.W1 09 VRNDSCALEPD
NDS.LIG.66.0F3A.W1 0A VRNDSCALESS
NDS.LIG.66.0F3A.W1 0B VRNDSCALESD
2014-02-15 19:21:08 +00:00
Volker Ruppert
6c9d08f756 Some work on the slirp patch (MinGW/MSYS version now working) 2014-02-15 15:57:09 +00:00
Volker Ruppert
169754f509 Switch to Winsock2 library for all Windows cases 2014-02-15 12:18:46 +00:00
Volker Ruppert
7ec9adbb2d Switch to Winsock2 library for all Windows cases 2014-02-15 12:18:15 +00:00
Volker Ruppert
cf93269380 Define WIN32_LEAN_AND_MEAN to make using Winsock2 possible (for vncsrv and slirp).
TODO: change include statements to winsock2.h and link with ws2_32.dll.
2014-02-15 00:23:36 +00:00
Volker Ruppert
12ce16285c Moved seek timing calculation to a separate method
Improved CD-ROM save/restore support
TODO: variable seek latency for hard disk
2014-02-14 18:27:36 +00:00
Stanislav Shwartsman
b572e80818 bugfix and code cleanup 2014-02-12 20:31:22 +00:00
Stanislav Shwartsman
09414f2f4b implemented access to opmask AVX-512 registers from debugger, fixed enhdbg buffer overflow with EVEX enabled 2014-02-11 20:51:18 +00:00
Stanislav Shwartsman
41f926628c fixed bug in LOAD_BROADCAST_MASK_Half_VectorD method 2014-02-11 20:13:42 +00:00
Stanislav Shwartsman
9d97013067 bugfixes in softfloat unsigned conversions 2014-02-11 18:03:51 +00:00
Stanislav Shwartsman
18e9f1e70e bugfix 2014-02-11 17:47:52 +00:00
Stanislav Shwartsman
b510cf794b complete compressed displ feature support, bugfixes in AVX-512 code 2014-02-11 16:10:31 +00:00
Stanislav Shwartsman
ca4d2b5e6f cover some more opcodes with compressed displ 2014-02-10 21:49:41 +00:00
Stanislav Shwartsman
d257bf3e7d cover some more opcodes with compressed displ 2014-02-10 21:34:26 +00:00
Stanislav Shwartsman
9613e4b402 implementation of AVX-512 compressed displacement feature which is required for AVX-512 emu correctness (first step). todo: fix rest of EVEX opcodes 2014-02-10 21:12:08 +00:00
Volker Ruppert
4e7a0e06f8 Slirp patch: configure script and Makefile fixes 2014-02-10 18:56:47 +00:00
Volker Ruppert
54138f294e Some work on the ATA/ATAPI seek feature and related changes
- now using the more accurate name "seek latency"
- fixed CD-ROM LBA address range checks and renamed limit to "max_lba"
- make the latency for CD-ROM access variable depending on the distance between
  current and new block address, Maximum value should only occur at first access
  or after media change.
- TODO: make hard disk seek timing variable, too.
- still TODO: seek latency for USB drives (requires asynchronus packet support).
2014-02-09 20:28:42 +00:00
Volker Ruppert
f6dcd04696 Some work on the patch for builtin slirp support
- some fixes for compiling with Cygwin
- enabled compilation of new slirp module in MinGW/MSYS and Cygwin
- TODO: slirp slows down Bochs emulation on Windows (Linux version is okay)
2014-02-09 09:59:46 +00:00
Stanislav Shwartsman
37330682ad remove code duplication, prepare for 512-bit evrsion of cvtps2ph 2014-02-08 19:18:17 +00:00
Volker Ruppert
a9e3a657f7 MSVC compilation fix 2014-02-06 22:00:29 +00:00
Volker Ruppert
349dba4b46 Some fixes for MinGW/MSYS (not yet complete) 2014-02-06 20:58:20 +00:00
Stanislav Shwartsman
550e6bd307 moved (c) to year 2014 for few files 2014-02-06 17:06:25 +00:00
Stanislav Shwartsman
aea9ae1976 added definitions (CPUID bit, VMX fields and VMXEXIT reasons, etc) from recently published Intel SDM rev049 2014-02-06 17:05:20 +00:00
Stanislav Shwartsman
7a6727da34 implemented AVX-512 version of VCVTPH2PS 2014-02-04 20:32:54 +00:00
Volker Ruppert
6a0a5a9577 Initial version of the "slirp" user-mode networking support ported from Qemu
added as a gzip'd patch. Please see patch description.
2014-02-04 19:42:47 +00:00
Stanislav Shwartsman
f047fef2a6 fixed gcc warning 2014-02-03 21:12:24 +00:00
Stanislav Shwartsman
ea390abd3c bugfixes in new GETMANT* instrs 2014-02-03 21:10:44 +00:00
Stanislav Shwartsman
b33f93b9f3 Implemented VGETMANT* AVX-512 instructions
Now only missed AVX-512 opcodes now are:

512.66.0F38.W0 13 VCVTPH2PS
512.66.0F3A.W0 1D VCVTPS2PH

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD

512.66.0F38.W0 4C VRCP14PS
512.66.0F38.W1 4C VRCP14PD
NDS.LIG.66.0F38.W0 4D VRCP14SS
NDS.LIG.66.0F38.W1 4D VRCP14SD
512.66.0F38.W0 4E VRSQRT14PS
512.66.0F38.W1 4E VRSQRT14PD
NDS.LIG.66.0F38.W0 4F VRSQRT14SS
NDS.LIG.66.0F38.W1 4F VRSQRT14SD

512.66.0F3A.W0 08 VRNDSCALEPS
512.66.0F3A.W1 09 VRNDSCALEPD
NDS.LIG.66.0F3A.W1 0A VRNDSCALESS
NDS.LIG.66.0F3A.W1 0B VRNDSCALESD
2014-02-03 20:40:46 +00:00
Stanislav Shwartsman
ac06ee46ae Implemented VPMOVSX*/VPMOVZX* AVX-512 instructions
Now only missed AVX-512 opcodes now are:

512.66.0F38.W0 13 VCVTPH2PS
512.66.0F3A.W0 1D VCVTPS2PH

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD

512.66.0F38.W0 4C VRCP14PS
512.66.0F38.W1 4C VRCP14PD
NDS.LIG.66.0F38.W0 4D VRCP14SS
NDS.LIG.66.0F38.W1 4D VRCP14SD
512.66.0F38.W0 4E VRSQRT14PS
512.66.0F38.W1 4E VRSQRT14PD
NDS.LIG.66.0F38.W0 4F VRSQRT14SS
NDS.LIG.66.0F38.W1 4F VRSQRT14SD

512.66.0F3A.W0 08 VRNDSCALEPS
512.66.0F3A.W1 09 VRNDSCALEPD
NDS.LIG.66.0F3A.W1 0A VRNDSCALESS
NDS.LIG.66.0F3A.W1 0B VRNDSCALESD

512.66.0F3A.W0 26 VGETMANTPS
512.66.0F3A.W1 26 VGETMANTPD
NDS.LIG.66.0F3A.W0 27 VGETMANTSS
NDS.LIG.66.0F3A.W1 27 VGETMANTSD
2014-02-02 19:56:08 +00:00
Stanislav Shwartsman
55e1d53a48 implement DPPS/DPPD ops using existing primitives; added some missing defs 2014-02-02 18:57:25 +00:00
Stanislav Shwartsman
ca1b496efc small optimization 2014-02-01 19:23:41 +00:00
Stanislav Shwartsman
ef130ca145 convert some defines to enum 2014-01-31 19:40:34 +00:00
Volker Ruppert
785b4bed1b Restore code for SCSI requests implemented.
Handle the CD-ROM drive lock status at save/restore.
2014-01-31 18:49:10 +00:00
Stanislav Shwartsman
6eb1c7d255 fixed swapped sources of VEXTRACTF* with mask 2014-01-30 21:46:25 +00:00
Stanislav Shwartsman
ccb003b0e1 fixed swapped sources of VEXTRACTF* 2014-01-30 20:48:41 +00:00
Stanislav Shwartsman
41e13703a3 Implemented VEXTRACT* AVX-512 instructions
Now only missed AVX-512 opcodes now are:

512.66.0F38.W0 13 VCVTPH2PS
512.66.0F3A.W0 1D VCVTPS2PH

512.66.0F38.WIG 21 VPMOVSXBD
512.66.0F38.WIG 22 VPMOVSXBQ
512.66.0F38.WIG 23 VPMOVSXWD
512.66.0F38.WIG 24 VPMOVSXWQ
512.66.0F38.W0  25 VPMOVSXDQ

512.66.0F38.WIG 31 VPMOVSZBD
512.66.0F38.WIG 32 VPMOVSZBQ
512.66.0F38.WIG 33 VPMOVSZWD
512.66.0F38.WIG 34 VPMOVSZWQ
512.66.0F38.W0  35 VPMOVSzDQ

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD

512.66.0F38.W0 4C VRCP14PS
512.66.0F38.W1 4C VRCP14PD
NDS.LIG.66.0F38.W0 4D VRCP14SS
NDS.LIG.66.0F38.W1 4D VRCP14SD
512.66.0F38.W0 4E VRSQRT14PS
512.66.0F38.W1 4E VRSQRT14PD
NDS.LIG.66.0F38.W0 4F VRSQRT14SS
NDS.LIG.66.0F38.W1 4F VRSQRT14SD

512.66.0F3A.W0 08 VRNDSCALEPS
512.66.0F3A.W1 09 VRNDSCALEPD
NDS.LIG.66.0F3A.W1 0A VRNDSCALESS
NDS.LIG.66.0F3A.W1 0B VRNDSCALESD

512.66.0F3A.W0 26 VGETMANTPS
512.66.0F3A.W1 26 VGETMANTPD
NDS.LIG.66.0F3A.W0 27 VGETMANTSS
NDS.LIG.66.0F3A.W1 27 VGETMANTSD
2014-01-30 20:31:08 +00:00
Volker Ruppert
f5944a0b7c Another mouse detection fix: restart rx timer on detection request 2014-01-30 16:54:52 +00:00
Volker Ruppert
c217470150 Started implementing save/restore support for SCSI requests
- save function implemented using a dummy parameter that only receives the
  result of the save operation. The parameter's save/restore handlers doing
  the main job. The numerical values of the requests are saved in a separate
  text file. The data transfer buffers are saved as binary files.
- the request data buffers are now created dynamicly
- TODO: restore SCSI requests
2014-01-28 20:29:12 +00:00
Stanislav Shwartsman
d990911cea bugfix 2014-01-28 19:52:51 +00:00
Stanislav Shwartsman
63e99da4af Implemented VALIGN* AVX-512 instructions
Now only missed AVX-512 opcodes now are:

512.66.0F38.W0 13 VCVTPH2PS
512.66.0F3A.W0 1D VCVTPS2PH

512.66.0F38.WIG 21 VPMOVSXBD
512.66.0F38.WIG 22 VPMOVSXBQ
512.66.0F38.WIG 23 VPMOVSXWD
512.66.0F38.WIG 24 VPMOVSXWQ
512.66.0F38.W0  25 VPMOVSXDQ

512.66.0F38.WIG 31 VPMOVSZBD
512.66.0F38.WIG 32 VPMOVSZBQ
512.66.0F38.WIG 33 VPMOVSZWD
512.66.0F38.WIG 34 VPMOVSZWQ
512.66.0F38.W0  35 VPMOVSzDQ

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD

512.66.0F38.W0 4C VRCP14PS
512.66.0F38.W1 4C VRCP14PD
NDS.LIG.66.0F38.W0 4D VRCP14SS
NDS.LIG.66.0F38.W1 4D VRCP14SD
512.66.0F38.W0 4E VRSQRT14PS
512.66.0F38.W1 4E VRSQRT14PD
NDS.LIG.66.0F38.W0 4F VRSQRT14SS
NDS.LIG.66.0F38.W1 4F VRSQRT14SD

512.66.0F3A.W0 08 VRNDSCALEPS
512.66.0F3A.W1 09 VRNDSCALEPD
NDS.LIG.66.0F3A.W1 0A VRNDSCALESS
NDS.LIG.66.0F3A.W1 0B VRNDSCALESD

512.66.0F3A.W0 19 VEXTRACTF32x4
512.66.0F3A.W1 1B VEXTRACTF64x4
512.66.0F3A.W0 39 VEXTRACTI32x4
512.66.0F3A.W1 3B VEXTRACTI64x4

512.66.0F3A.W0 26 VGETMANTPS
512.66.0F3A.W1 26 VGETMANTPD
NDS.LIG.66.0F3A.W0 27 VGETMANTSS
NDS.LIG.66.0F3A.W1 27 VGETMANTSD
2014-01-28 19:36:46 +00:00
Stanislav Shwartsman
36ba25847f Implemented last missed AVX-512 unsigned convert instructions
The only missed AVX-512 opcodes now are:

512.66.0F38.W0 13 VCVTPH2PS
512.66.0F3A.W0 1D VCVTPS2PH

512.66.0F38.WIG 21 VPMOVSXBD
512.66.0F38.WIG 22 VPMOVSXBQ
512.66.0F38.WIG 23 VPMOVSXWD
512.66.0F38.WIG 24 VPMOVSXWQ
512.66.0F38.W0  25 VPMOVSXDQ

512.66.0F38.WIG 31 VPMOVSZBD
512.66.0F38.WIG 32 VPMOVSZBQ
512.66.0F38.WIG 33 VPMOVSZWD
512.66.0F38.WIG 34 VPMOVSZWQ
512.66.0F38.W0  35 VPMOVSzDQ

512.66.0F38.W0 2C VSCALEFPS
512.66.0F38.W1 2C VSCALEFPD
NDS.LIG.66.0F38.W0 2D VSCALESS
NDS.LIG.66.0F38.W1 2D VSCALESD

512.66.0F38.W0 4C VRCP14PS
 512.66.0F38.W1 4C VRCP14PD
NDS.LIG.66.0F38.W0 4D VRCP14SS
 NDS.LIG.66.0F38.W1 4D VRCP14SD
512.66.0F38.W0 4E VRSQRT14PS
 512.66.0F38.W1 4E VRSQRT14PD
NDS.LIG.66.0F38.W0 4F VRSQRT14SS
 NDS.LIG.66.0F38.W1 4F VRSQRT14SD

NDS.512.66.0F3A.W0 03 VALIGND
NDS.512.66.0F3A.W1 03 VALIGNQ

512.66.0F3A.W0 08 VRNDSCALEPS
512.66.0F3A.W1 09 VRNDSCALEPD
NDS.LIG.66.0F3A.W1 0A VRNDSCALESS
NDS.LIG.66.0F3A.W1 0B VRNDSCALESD

512.66.0F3A.W0 19 VEXTRACTF32x4
512.66.0F3A.W1 1B VEXTRACTF64x4
512.66.0F3A.W0 39 VEXTRACTI32x4
512.66.0F3A.W1 3B VEXTRACTI64x4

512.66.0F3A.W0 26 VGETMANTPS
 512.66.0F3A.W1 26 VGETMANTPD
NDS.LIG.66.0F3A.W0 27 VGETMANTSS
 NDS.LIG.66.0F3A.W1 27 VGETMANTSD
2014-01-28 12:57:38 +00:00
Stanislav Shwartsman
15979a52b6 implemented avx-512 getexp instructions 2014-01-27 21:25:07 +00:00
Volker Ruppert
6a5e91bfbd regenerated after wsock32 change 2014-01-26 22:12:23 +00:00
Volker Ruppert
67b5ed240b Enabled linking with wsock32.dll for all Windows again. Cygwin doesn't complain
when we use -lwsock32, but don't include it's header if __CYGWIN__ is defined.
Moved DEVICE_LINK_OPTS to a separate variable instead of appending options to
GUI_LINK_OPTS.
2014-01-26 22:11:31 +00:00
Stanislav Shwartsman
3798ed66b5 new function for disasm. todo: support it independently of CPU 2014-01-26 20:01:50 +00:00
Stanislav Shwartsman
2379590dde do not compile AVX objects if AVX support is not enabled in configure 2014-01-26 19:20:44 +00:00
Volker Ruppert
7475fbc4c9 Rewrite of the mouse data handling (similar to the bus / usb mouse code) 2014-01-26 13:48:10 +00:00
Volker Ruppert
e3574dabe0 Serial timer code rewritten (no functional changes)
Minor related cleanups
2014-01-25 21:05:49 +00:00
Volker Ruppert
b8d6862dfa Fixed some MSVC warnings 2014-01-25 17:07:10 +00:00
Stanislav Shwartsman
4d4d194c16 implemented missed vpmul* avx-512 opcodes 2014-01-24 20:04:36 +00:00
Stanislav Shwartsman
8d6c6a4545 added one more missed perm* avx-512 opcode 2014-01-24 19:42:08 +00:00
Stanislav Shwartsman
7beb85b850 implemented vperm* avx-512 opcodes 2014-01-24 19:23:19 +00:00
Volker Ruppert
a5984f7cd0 Some work on the USB MSD emulation
- prepared seek timer feature
- removed error handling that would cause a segfault
- better error handling for CD-ROM read errors
2014-01-24 19:07:51 +00:00
Stanislav Shwartsman
fd8ddd8069 downgrade VMEXIT message to BX_DEBUG 2014-01-24 18:58:57 +00:00
Volker Ruppert
35c0724c50 Some work on the Bochs timer code
- add timer parameter to the save/restore tree
- change timer parameter type to Bit32u
- don't call timer function if set to NULL
- optimized loop that calls the timer functions
- minor cleanups
2014-01-24 17:22:34 +00:00
Stanislav Shwartsman
407681c98a implemented some more avx-512 opcodes 2014-01-24 12:02:47 +00:00
Stanislav Shwartsman
fa60a654c8 bugfix for avx-512 2014-01-23 19:59:39 +00:00
Volker Ruppert
a8f72a7575 Added support for multiple sector transfers to the 'concat' image mode.
Renamed 'flat' image mode C++ class.
2014-01-23 18:35:18 +00:00
Stanislav Shwartsman
79c11cacbe fixed compilation err without avx 2014-01-23 17:08:30 +00:00
Stanislav Shwartsman
33889cd02e implemented avx-512 vpermq opcode 2014-01-22 21:21:32 +00:00
Stanislav Shwartsman
99f7107dd1 code reorg 2014-01-22 19:59:13 +00:00
Volker Ruppert
570a35a568 Fixed critical bug in the USB CD-ROM emulation: multiple block reads now working 2014-01-22 17:56:20 +00:00
Stanislav Shwartsman
a21f03e69b implemented few more avx-512 cvt opcodes 2014-01-21 21:00:40 +00:00
Volker Ruppert
39890d308d Connecting USB CD-ROM without media present now supported
TODO #1: implement seek timing similar to ATA/ATAPI
TODO #2: implement asynchronus i/o in lowlevel cdrom
2014-01-21 20:56:50 +00:00
Stanislav Shwartsman
d591c1dd34 implemented few more avx-512 cvt opcodes 2014-01-21 20:31:10 +00:00
Stanislav Shwartsman
9e90d9d9ae bugfix in cvtpd2udq opcode decoding with kmask 2014-01-20 22:07:35 +00:00
Stanislav Shwartsman
2ed0e91dfe fixed writing half vector for avx-512 2014-01-20 21:52:48 +00:00
Stanislav Shwartsman
4705ed6bdd more fixes for uint conversions based on latest QEMU patches by Tom Musta 2014-01-20 21:22:29 +00:00
Stanislav Shwartsman
649075527e fixes for convert to unsigned functions 2014-01-20 20:50:28 +00:00
Volker Ruppert
fd86a060d5 Updated devices tree 2014-01-20 18:01:27 +00:00
Stanislav Shwartsman
cc112767a2 bugfixes 2014-01-19 21:19:41 +00:00
Stanislav Shwartsman
ee8d500ec0 fix for float32/64_to_uint32 cvt functions in softfloat 2014-01-19 20:47:48 +00:00
Stanislav Shwartsman
086fefeb29 cleanups 2014-01-19 20:30:40 +00:00
Stanislav Shwartsman
a63280a6d1 implemented few more AVX-512 cvt opcodes 2014-01-19 20:23:14 +00:00
Volker Ruppert
7cb5729365 Seek delay implemented for ATA/ATAPI DMA read commands
TODO: seek delay for write commands
2014-01-19 18:13:12 +00:00
Volker Ruppert
cdf3facaf4 ATAPI CD-ROM emulation fixes
- BSY status bit must be set during seek
- report active MDMA mode in 'identify' command
- improved a debug message
2014-01-19 14:15:43 +00:00
Stanislav Shwartsman
ba52890538 implemented few more AVX-512 floating point convert instructions 2014-01-18 20:10:05 +00:00
Volker Ruppert
78509d637b Implemented seek delay for hard disk and CD-ROM PIO read commands using fixed
values for the average access time (hd: 5 msec / cd: 80 msec). Hard disk write
and DMA mode commands are not affected yet.
2014-01-18 16:16:42 +00:00
Volker Ruppert
29d40bf9fe Added an optional device-specific Bit8u parameter to the timer structure.
A device can set it with setTimerParam() and read it in the timer handled using
triggeredTimerParam(). Simplified some timer handler by using these methods.
TODO: implement HD / CD seek timer
2014-01-17 18:25:13 +00:00
Volker Ruppert
dfae4b45de Voodoo vertical retrace fixes
- vertical retrace bit in status register must be inverted
- implemented registers vRetrace and hvRetrace (vSyncOff only)
2014-01-15 17:29:28 +00:00
Volker Ruppert
63cb7f93bf Small bugfix for Windows: set / clear menu item check mark for log viewer 2014-01-13 22:04:39 +00:00
Volker Ruppert
4c6481578d Added capability to use the gui debugger output window as a log viewer 2014-01-13 21:31:14 +00:00
Volker Ruppert
05de03bf59 Small optimization in the log viewer code 2014-01-13 18:03:40 +00:00
Volker Ruppert
71feea84ed Implemented log viewer dialog for the wx gui
- added new class LogViewDialog based on the already removed DebugLogDialog
- log output is only sent to the viewer if visible to avoid performance trouble
- text buffer is limited to 48k, older lines are removed if necessary
- red text color is used for error and panic messages and black for others
- minor related code cleanups
2014-01-12 19:27:01 +00:00
Stanislav Shwartsman
a1e397b5a2 fixed decoding bug in avx-512 instruction tables 2014-01-12 13:37:29 +00:00
Stanislav Shwartsman
ce8c520c09 fixed operands for new instructions 2014-01-12 13:20:41 +00:00
Stanislav Shwartsman
5cdcd7bef7 Implemented AVX-512 VPMOV* down-conversion stores 2014-01-12 13:08:16 +00:00
Stanislav Shwartsman
72c710947c code cleanups 2014-01-12 09:31:22 +00:00
Volker Ruppert
bace4d0c6b Prepared siminterface and logio code for the implementation of a log viewer
for watching the log output at simulation time. This feature has been prepared
and described in the code (BX_ASYNC_EVT_LOG_MSG), but it was never implemented.
A viewer window could be implemented easily in wx. The gui debugger could also
have an option to view the log output while debugging.
2014-01-12 08:26:04 +00:00
Stanislav Shwartsman
af29c8bd60 infrastructure change for avx-512: before going to more new instructions modelling 2014-01-10 19:40:38 +00:00
Volker Ruppert
fc5c22d78f Implemented more accurate screen update timing calculation using the RAMDAC
video clock. Removed dependencies to the cpu / memory clock.
2014-01-07 22:32:22 +00:00
Volker Ruppert
ed163dd846 The option -export-dynamic is not supported for PE targets 2014-01-07 16:52:03 +00:00
Volker Ruppert
63a86148bf wxWidgets toolbar fixes
- moving ToggleMouse() call to the gui thread fixes two issue: possible deadlock
  in wxGTK after showing message box, mouse cursor not hidden in wxMSW
- don't add undefined toolbar events to the queue
- removed unused / unhandled cases from the toolbar code
2014-01-05 19:38:57 +00:00
Volker Ruppert
0b43928f6a Fixed possible segfault caused by Voodoo2 control panel applet.
Added some reserved register names for debug output and minor code cleanup.
2014-01-05 14:01:10 +00:00
Volker Ruppert
35789633e8 Fixed some warnings 2014-01-04 15:42:17 +00:00
Volker Ruppert
4bc681d0cc regenerated after no-libtool bugfix 2014-01-03 21:58:59 +00:00
Volker Ruppert
23a2ded526 Fixed build process without libtool and plugins 2014-01-03 21:58:04 +00:00
Volker Ruppert
8c66e91f81 Some work on wx dialogs
- disable log file options at runtime
- fixed vertical alignment of label text
- added license, tab2space and minor other changes
2014-01-03 20:46:59 +00:00
Volker Ruppert
2a8a45748f Some fixes for the Voodoo emulation (Voodoo2 still not usable in Win95)
- fixed clock values (assigned to wrong model)
- LFB read/write: don't limit y values to 1023 (4MB now usable this way)
- additional Voodoo2 fbiInit* register writes now handled like the Voodoo1 ones
2014-01-03 16:42:31 +00:00
Volker Ruppert
7173b6ee0f Some work on the Voodoo emulation
- fixed behaviour of the initEnable register
- fixed some uninitialized variables
- some other small fixes and cleanups
2014-01-02 22:34:01 +00:00
Volker Ruppert
98634946e6 Set up the correct clock value for the selected Voodoo model. 2014-01-01 18:23:37 +00:00
Stanislav Shwartsman
58470763fa implement few more avx-512 opcodes 2013-12-31 23:51:25 +00:00
Volker Ruppert
401321d500 Added symbol BX_NULL_PREFIX and fixed textconfig log options table.
If log module name not specified, use device log prefix converted to lower
case as the name and simplified setting up some short prefixes.
2013-12-31 09:20:08 +00:00
Volker Ruppert
c6dd095321 Added new method for the init of the readonly registers in the PCI config space
and cleaned up the PCI devices code.
2013-12-30 22:39:21 +00:00
Volker Ruppert
eced151cde Use data conversion macros based on bx_bswap* and remove temporary code 2013-12-30 17:13:18 +00:00
Volker Ruppert
ae659d14fd Changed initial value of the parameter "enabled" to 1 for network, sound and
usb device plugins. Loading the plugin means that the user wants to enable it.
Disabling the device on the command line and in the config interface is still
possible.
2013-12-30 14:37:04 +00:00
Volker Ruppert
e5ed796acf Some work on the Voodoo emulation
- destructor: free memory only when initialized
- parameter 'enabled' must be initialized with 1 (TODO: fix other plugins)
- PCI register fixes (Voodoo2 now detected, but not usable)
2013-12-30 12:50:34 +00:00
Volker Ruppert
59b07e4b61 The plugin version now uses the native DLL handling code for all Windows ports.
Skip configure checks for libtool / ltdl and no longer link with mingwex.
2013-12-29 20:04:44 +00:00
Volker Ruppert
a767ec0b1b The plugin version now uses the native DLL handling code for all Windows ports.
Skip configure checks for libtool / ltdl and no longer link with mingwex.
2013-12-29 20:04:16 +00:00
Volker Ruppert
443f04703c Added / modified device log prefixes 2013-12-29 12:56:52 +00:00
Volker Ruppert
fc4538a131 Some fixes / improvements in logging system
- fixed pluginlog init in non-plugin mode
- reduced logprefix length limit and use it for the related string parameter
- increase the device prefix size to 6
- TODO: change some more device prefixes
2013-12-29 10:41:11 +00:00
Volker Ruppert
acc4c6c2c8 Some fixes and cleanups
- in wx we had two logfunctions for the siminterface (removed duplicate init)
- renamed siminterface prefix to "SIM"
- moved variable "pluginlog" to the plugin interface
- fixed / removed some forward declarations
2013-12-29 08:45:28 +00:00
Volker Ruppert
2666953de9 Modified win32 resource files based on patch.mingw-resources. We already use
forward slashes partly in the rc files without errors in MSVC, so we should
use it for all include paths to fix MinGW warnings. Removed original patch.
2013-12-28 15:11:13 +00:00
Stanislav Shwartsman
350e3544ae fixed #UD condition for multi-byte prefix opcodes VEX/EVEX/XOP 2013-12-28 12:57:21 +00:00
Volker Ruppert
98545762b6 Keyboard code cleanup
- BX_CPU_LEVEL < 3 doesn't exist in Bochs
- verbose debug output removed
- tab2space and minor coding style changes
2013-12-28 12:00:19 +00:00
Volker Ruppert
a208a86aa0 Mention the now working bus mouse in the docs 2013-12-28 08:41:57 +00:00
Volker Ruppert
59faa4d3ae Rewrite of the MS busmouse support to make it work with DOS and Win95 drivers.
The device exists for some years now, but it was never functional and it is not
yet mentioned in the docs. After studying Linux kernel sources and a lot of
tests it is now usable. A configure option doesn't exist, so it must be enabled
in config.h. At runtime it is only loaded if the mouse type is set to 'bus'.
2013-12-27 17:47:44 +00:00
Volker Ruppert
49c639e00d Removed obsolete stuff from the gui code 2013-12-26 20:51:46 +00:00
Volker Ruppert
bd89ed053d Some work on the wx toolbar
- disable most of the buttons if no simulation is running
- save/restore button calls restore function at configuration time
- disable code related to the config button
2013-12-26 08:37:51 +00:00
Volker Ruppert
a603fe4471 Added mouse wheel support to the rfb and vncsrv guis 2013-12-25 09:48:53 +00:00
Volker Ruppert
bb90270b8d Use WIN32 thread functions for Cygwin, too. 2013-12-24 22:43:49 +00:00
Volker Ruppert
1ce8d5de2f Several wxWidgets fixes and improvements
- send wheel data to the PS/2 mouse emulation (wx mouse wheel support works now)
- show selected mouse toggle method in toolbar help and message box
- added capability to start the simulation with the power button
2013-12-24 17:18:46 +00:00
Stanislav Shwartsman
e6af0565bd convert BX_INFO message to BX_DEBUG 2013-12-24 14:59:00 +00:00
Volker Ruppert
67b3157e13 Domumentation updates and cleanups 2013-12-24 08:55:07 +00:00
Volker Ruppert
2aa810012a Some work on the Voodoo Graphics emulation (Voodoo2 still not detected)
- assign the correct register access map for the Voodoo2 model
- improved debug and error message output
- minor coding style changes
2013-12-23 21:58:29 +00:00
Volker Ruppert
8f5408e653 Fixed some gcc 4.8.1 warnings 2013-12-23 11:31:32 +00:00
Stanislav Shwartsman
e902a83a60 fixed segfault in AVX emulation 2013-12-22 21:16:10 +00:00
Stanislav Shwartsman
ada455c4b9 just coding style 2013-12-22 20:48:26 +00:00