During the kernel timer calibration routine A/UX performs an unaligned access across the T1CL and T1CH registers to read the entire 16-bit value in a single memory access. This triggers a bug in the QEMU softtlb implementation whereby the 2 separate accesses are combined incorrectly losing the high byte of the counter (see https://gitlab.com/qemu-project/qemu/-/issues/360 for more detail). Since A/UX requires a minimum difference of 0x500 between 2 subsequent reads to succeed then this causes the timer calibration routine to get stuck in an infinite loop. Add a temporary workaround for the QEMU unaligned MMIO access bug whereby these special accesses are detected and the 8-byte result copied into both halves of the 16-bit access which allows the existing softtlb implementation to return the correct result. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
71d4010