On 07/24/2018 04:59 AM, Peter Maydell wrote: > 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 <[email protected]> > --- > target/arm/cpu.h | 64 +++++++++++++++++++++++++++++++++++---- > hw/intc/arm_gicv3_cpuif.c | 19 ++++++------ > target/arm/helper.c | 6 ++-- > 3 files changed, 71 insertions(+), 18 deletions(-)
Reviewed-by: Richard Henderson <[email protected]> r~
