xemu/target/arm
Peter Maydell ac656b166b target/arm: Provide accessor functions for HCR_EL2.{IMO, FMO, AMO}
The IMO, FMO and AMO bits in HCR_EL2 are defined to "behave as
1 for all purposes other than direct reads" if HCR_EL2.TGE
is set and HCR_EL2.E2H is 0, and to "behave as 0 for all
purposes other than direct reads" if HCR_EL2.TGE is set
and HRC_EL2.E2H is 1.

To avoid having to check E2H and TGE everywhere where we test IMO and
FMO, provide accessors arm_hcr_el2_imo(), arm_hcr_el2_fmo()and
arm_hcr_el2_amo().  We don't implement ARMv8.1-VHE yet, so the E2H
case will never be true, but we include the logic to save effort when
we eventually do get to that.

(Note that in several of these callsites the change doesn't
actually make a difference as either the callsite is handling
TGE specially anyway, or the CPU can't get into that situation
with TGE set; we change everywhere for consistency.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20180724115950.17316-5-peter.maydell@linaro.org
2018-08-14 17:17:21 +01:00
..
Makefile.objs target/arm: Implement SVE predicate test 2018-05-18 17:48:08 +01:00
arch_dump.c target/arm: Add aa{32, 64}_vfp_{dreg, qreg} helpers 2018-01-25 11:45:29 +00:00
arm-powerctl.c target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
arm-powerctl.h target-arm/powerctl: defer cpu reset work to CPU context 2017-02-24 10:32:46 +00:00
arm-semi.c Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
arm_ldst.h target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
cpu-qom.h target/arm: Add "-cpu max" support 2018-03-09 17:09:44 +00:00
cpu.c arm: Add ARMv6-M programmer's model support 2018-08-14 17:17:19 +01:00
cpu.h target/arm: Provide accessor functions for HCR_EL2.{IMO, FMO, AMO} 2018-08-14 17:17:21 +01:00
cpu64.c target/arm: Add ID_ISAR6 2018-06-29 15:30:54 +01:00
crypto_helper.c target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
gdbstub.c arm: fix malloc type mismatch 2018-05-31 14:50:52 +01:00
gdbstub64.c Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
helper-a64.c tcg: Fix helper function vs host abi for float16 2018-05-31 14:50:51 +01:00
helper-a64.h target/arm: Implement FCMP for fp16 2018-05-15 14:58:43 +01:00
helper-sve.h target/arm: Implement SVE fp complex multiply add 2018-06-29 15:11:12 +01:00
helper.c target/arm: Provide accessor functions for HCR_EL2.{IMO, FMO, AMO} 2018-08-14 17:17:21 +01:00
helper.h target/arm: Implement SVE dot product (indexed) 2018-06-29 15:11:15 +01:00
idau.h target/arm: Define an IDAU interface 2018-03-02 11:03:45 +00:00
internals.h target/arm: Add pre-EL change hooks 2018-04-26 11:04:39 +01:00
iwmmxt_helper.c target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
kvm-consts.h arm: add trailing ; after MISMATCH_CHECK 2017-02-01 03:37:18 +02:00
kvm-stub.c Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
kvm.c target/arm: Allow KVM device address overwriting 2018-06-22 13:28:35 +01:00
kvm32.c target/arm: Remove redundant DIV detection for KVM 2018-06-29 15:11:18 +01:00
kvm64.c target/arm: Query host CPU features on-demand at instance init 2018-03-09 17:09:44 +00:00
kvm_arm.h target/arm: Allow KVM device address overwriting 2018-06-22 13:28:35 +01:00
machine.c target/arm: Add dummy needed functions to M profile vmstate subsections 2018-08-06 16:19:33 +01:00
monitor.c qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
neon_helper.c target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
op_addsub.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
op_helper.c target/arm: Honour HCR_EL2.TGE when raising synchronous exceptions 2018-08-14 17:17:21 +01:00
psci.c target: Do not include "exec/exec-all.h" if it is not necessary 2018-06-01 14:15:10 +02:00
sve.decode target/arm: Implement SVE dot product (indexed) 2018-06-29 15:11:15 +01:00
sve_helper.c target/arm: Fix LD1W and LDFF1W (scalar plus vector) 2018-07-16 17:18:41 +01:00
trace-events target/arm/kvm: Translate the MSI doorbell in kvm_arch_fixup_msi_route 2018-05-04 18:52:58 +01:00
translate-a64.c target/arm: Fix SVE system register access checks 2018-06-29 15:30:53 +01:00
translate-a64.h target/arm: Extend vec_reg_offset to larger sizes 2018-06-15 15:23:34 +01:00
translate-sve.c target/arm: Fix do_predset for large VL 2018-07-09 14:51:34 +01:00
translate.c target/arm: Implement ARMv8.2-DotProd 2018-06-29 15:11:15 +01:00
translate.h target/arm: convert conversion helpers to fpst/ahp_flag 2018-05-17 15:27:09 -07:00
vec_helper.c target/arm: Implement SVE dot product (indexed) 2018-06-29 15:11:15 +01:00