. Fix compiler warnings on macOS.
. Fix compiler warnings on GCC 12.
. Use performance cores on Apple Silicon. (Enrico Sorichetti)
. Save maxprio/minprio in sysblk so impl() doesn't clobber them. (Tyler Mitchell)
. Handle non-GNU Linuxes properly. (Tyler Mitchell)
. getprotobyname: some Linuxes want "tcp" not "TCP". (Tyler Mitchell)
. Fix for occasional crash on exit. (Tyler Mitchell):
In POSIX, detach_thread() is neither needed nor valid
after a return from join_thread(). When the latter returns,
the thread has exited and its resources are released,
so detach_thread() not only is not needed, but references
deallocated resources. This can be harmless, but not always.
New 'tf' command to direct all instruction and I/O tracing to a disk file instead of immediately formatting and displaying on the console (which slows down Hercules execution to a CRAWL). Only the raw data is written to the trace file and a new 'tfprint' utility is provided to produce the actual trace report (identical to what would normally be displayed on the Hercules console).
Closes issue #33
A fix for an SIE problem was originally committed by jj (Jan Jaeger) on 2008-12-05 (spinhawk commit 9331efc23a, SDL Hyperion commit deefb175d1) that was later "fixed" by a bad commit from IanWorthington (spinhawk commit 5df8c6a9de, SDL Hyperion commit 1382d73b24).
This bad "fix" ended up causing incorrect behavior for at least VM/ESA 2.4.0 ADCD and quite likely all subsequent VMs ever since (e.g. z/VM, etc).
This commit reverts the bad fix and restores proper VM (SIE) functionality. VM/ESA 2.4.0 ADCD now behaves correctly (i.e. the way it did *before* the bad "fix" was made).
TXF assistance shouldn't be applied (enforced) when there's no transaction currently executing. TXF assistance only applies to transactions, not to non-transactional code.
Note: "txf_PPA" should continue to *only* be reset at successful transaction end (TEND). If no transaction is currently active, then its value should simply be ignored, but *not* reset, as that would negate its whole purpose.
Provide rubato timer assist first, and then if that still doesn't help enough, provide interrupt suppression second as a last resort (the complete opposite of the way TXF PPA assists were previously actuated).
This seems to result in far fewer transaction failures (and as a consequence, retries), resulting in a significant positive/beneficial improvement in overall TXF reliability.
1. Don't start rubato thread unless TXF (facility 73) is enabled, and stop rubato thread when TXF is disabled.
2. Increase *minimum* TIMERINT value to 50 usecs (same as our current default) to prevent severe negative impact to host system performance that otherwise occurs when smaller values are used.
The constraint will always be checked before the branch's target instruction is executed, so there's no need to check in either of the successful branch functions.
Provides PPA (Perform Processor Assist) support for TXF by:
1. Conditionally suppressing interrupts during transaction retry
2. Conditionally decreasing frequency of timer interrupts during transaction retry (by automatically increasing the active "timerint" value) during periods of high transactional load (as controlled by the new timer.c "rubato_thread").
based on the amount of assistance requested by the PPA instruction's transactional-abort-assist operand-1 value.
This is a more proper fix for GitHub Issue #340, which itself identified a problem with commit 7a52a4bbd7, so this is a more proper fix for commit 7a52a4bbd7 as well.
It enhances the OSTAILOR command in such a way as to make the test for z/VM in cpu.c a bit more reliable so as to resolve GitHub Issue #340.
I don't particularly like relying on an OSTAILOR setting to determine whether the guest is running z/VM or not, but we don't have much choice as there is really no other reliable way to do so.
The following research build options are now permanent:
OPTION_DEPRECATE_AIM (Deprecate regs->aim usage)
OPTION_DEPRECATE_TXF_LASTACC (Deprecate 'txf_lastacc')
OPTION_FIX_SIE_ICODE_BUG (Fix possible SIE icode bug)
The following research build options has been removed:
OPTION_TXF_SINGLE_THREAD (One transaction at a time)