unicorn/qemu/target/arm
Peter Maydell 8d34a271f6
target/arm: Implement tailchaining for M profile cores
Tailchaining is an optimization in handling of exception return
for M-profile cores: if we are about to pop the exception stack
for an exception return, but there is a pending exception which
is higher priority than the priority we are returning to, then
instead of unstacking and then immediately taking the exception
and stacking registers again, we can chain to the pending
exception without unstacking and stacking.

For v6M and v7M it is IMPDEF whether tailchaining happens for pending
exceptions; for v8M this is architecturally required. Implement it
in QEMU for all M-profile cores, since in practice v6M and v7M
hardware implementations generally do have it.

(We were already doing tailchaining for derived exceptions which
happened during exception return, like the validity checks and
stack access failures; these have always been required to be
tailchained for all versions of the architecture.)

Backports commit 5f62d3b9e67bfc3deb970e3c7fb7df7e57d46fc3 from qemu
2018-08-16 07:03:51 -04:00
..
arm-powerctl.c ARM: Factor out ARM on/off PSCI control functions 2018-03-01 23:31:47 -05:00
arm-powerctl.h ARM: Factor out ARM on/off PSCI control functions 2018-03-01 23:31:47 -05:00
arm_ldst.h Fix Thumb-1 BE32 execution and disassembly. 2018-03-02 00:20:11 -05:00
cpu-qom.h target/arm: Add "-cpu max" support 2018-03-12 10:11:49 -04:00
cpu.c arm: Add ARMv6-M programmer's model support 2018-08-16 06:36:27 -04:00
cpu.h target/arm: Provide accessor functions for HCR_EL2.{IMO, FMO, AMO} 2018-08-16 06:41:45 -04:00
cpu64.c target/arm: Add ID_ISAR6 2018-07-03 05:15:47 -04:00
crypto_helper.c target/arm/cpu and crypto_helper: Correct bad merge and adjust to qemu code style 2018-03-12 11:57:24 -04:00
helper-a64.c tcg: Fix helper function vs host abi for float16 2018-06-02 10:10:12 -04:00
helper-a64.h target/arm: Implement FCMP for fp16 2018-05-15 22:24:39 -04:00
helper-sve.h target/arm: Implement SVE fp complex multiply add 2018-07-03 04:21:41 -04:00
helper.c target/arm: Implement tailchaining for M profile cores 2018-08-16 07:03:51 -04:00
helper.h target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
internals.h target/arm: Add pre-EL change hooks 2018-04-26 09:21:54 -04:00
iwmmxt_helper.c Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
kvm-consts.h arm: better stub version for MISMATCH_CHECK 2018-03-02 00:13:45 -05:00
Makefile.objs target/arm: Implement SVE predicate test 2018-05-20 01:16:16 -04:00
neon_helper.c target/*/cpu.h: remove softfloat.h 2018-03-08 09:58:47 -05:00
op_addsub.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
op_helper.c target/arm: Honour HCR_EL2.TGE when raising synchronous exceptions 2018-08-16 06:41:57 -04:00
psci.c fix WFI/WFE length in syndrome register 2018-03-05 11:21:51 -05:00
sve.decode target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00
sve_helper.c target/arm: Fix LD1W and LDFF1W (scalar plus vector) 2018-07-17 12:33:00 -04:00
translate-a64.c target/arm: Fix SVE system register access checks 2018-07-03 05:07:53 -04:00
translate-a64.h target/arm: Extend vec_reg_offset to larger sizes 2018-06-15 12:23:35 -04:00
translate-sve.c target/arm: Fix do_predset for large VL 2018-07-09 16:43:15 -04:00
translate.c target/arm: Implement ARMv8.2-DotProd 2018-07-03 04:55:43 -04:00
translate.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-19 22:58:25 -04:00
unicorn.h Move target-* CPU file into a target/ folder 2018-03-01 22:50:58 -05:00
unicorn_aarch64.c unicorn/aarch64: Use qemu-provided helpers for accessing VFP/NEON/SIMD registers 2018-03-07 11:25:41 -05:00
unicorn_arm.c Use DEFINE_MACHINE() to register all machines 2018-03-11 15:12:46 -04:00
vec_helper.c target/arm: Implement SVE dot product (indexed) 2018-07-03 04:42:41 -04:00