unicorn/qemu/target-arm
Julian Brown 86670028f7
Correct value of ARM Cortex-A8 MVFR1 register.
The value of the MVFR1 (Media and VFP Feature Register 1) register for
the Cortex-A8 appears to be incorrect (according to the TRM, DDI0344K),
with the "full denormal arithmetic" and "propagation of NaN" fields
holding both 0 instead of both 1.

I had a go tracing the history of the use of this value, and it seems
it's always just been wrong in QEMU: maybe it was derived from early
documentation, or guessed based on the use of a "VFP Lite" implementation
in the Cortex-A8.

Depending on the startup/early-boot code in use, this can manifest as
failure to perform denormal arithmetic properly: in our case, selecting
a Cortex-A8 CPU when using QEMU as an instruction-set simulator for
bare-metal GCC testing caused tests using denormal arithmetic to
fail. Problems might be masked (or not occur) when using a full OS kernel
with suitable trap handlers (I'm not sure).

Backports commit 0f1944735b6bac810b067e8a7a5154744536fd59 from qemu
2018-03-01 11:07:08 -05:00
..
arm_ldst.h cpu: move exec-all.h inclusion out of cpu.h 2018-02-24 02:39:08 -05:00
cpu-qom.h target-arm: make cpu-qom.h not target specific 2018-02-24 00:48:59 -05:00
cpu.c Correct value of ARM Cortex-A8 MVFR1 register. 2018-03-01 11:07:08 -05:00
cpu.h target-arm: remove EXCP_STREX + cpu_exclusive_{test, info} 2018-02-28 00:24:20 -05:00
cpu64.c arm: Add an option to turn on/off vPMU support 2018-02-28 08:49:23 -05:00
crypto_helper.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
helper-a64.c target-arm: emulate aarch64's LL/SC using cmpxchg helpers 2018-02-28 00:21:27 -05:00
helper-a64.h target-arm: emulate aarch64's LL/SC using cmpxchg helpers 2018-02-28 00:21:27 -05:00
helper.c target-arm: Implement new HLT trap for semihosting 2018-02-26 15:28:45 -05:00
helper.h target-arm: Implement MRS (banked) and MSR (banked) instructions 2018-02-21 21:50:42 -05:00
internals.h target-arm: remove EXCP_STREX + cpu_exclusive_{test, info} 2018-02-28 00:24:20 -05:00
iwmmxt_helper.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
kvm-consts.h arm: Add an option to turn on/off vPMU support 2018-02-28 08:49:23 -05:00
Makefile.objs delete sparc32_dma.h & arm-semi.c 2017-01-19 15:10:41 +08:00
neon_helper.c target-arm: Fix warn about implicit conversion 2018-02-25 22:44:43 -05:00
op_addsub.h import 2015-08-21 15:04:50 +08:00
op_helper.c Fix masking of PC lower bits when doing exception returns 2018-02-26 08:09:28 -05:00
psci.c Use #include "..." for our own headers, <...> for others 2018-02-25 04:10:33 -05:00
translate-a64.c target-arm: Fix aarch64 vec_reg_offset 2018-03-01 09:36:03 -05:00
translate.c target-arm: remove EXCP_STREX + cpu_exclusive_{test, info} 2018-02-28 00:24:20 -05:00
translate.h target-arm: Infrastucture changes to enable handling of tagged address loading into PC 2018-02-26 07:58:17 -05:00
unicorn.h arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
unicorn_aarch64.c qemu-common: push cpu.h inclusion out of qemu-common.h 2018-02-24 01:50:56 -05:00
unicorn_arm.c qemu-common: push cpu.h inclusion out of qemu-common.h 2018-02-24 01:50:56 -05:00