mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-21 21:12:31 +00:00
hw/intc/arm_gicv3_cpuif: Don't recalculate maintenance irq unnecessarily
The maintenance interrupt state depends only on: * ICH_HCR_EL2 * ICH_LR<n>_EL2 * ICH_VMCR_EL2 fields VENG0 and VENG1 Now we have a separate function that updates only the vIRQ and vFIQ lines, use that in places that only change state that affects vIRQ and vFIQ but not the maintenance interrupt. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220408141550.1271295-27-peter.maydell@linaro.org
This commit is contained in:
parent
c3f21b065a
commit
189d1d9d57
@ -543,7 +543,7 @@ static void icv_ap_write(CPUARMState *env, const ARMCPRegInfo *ri,
|
||||
|
||||
cs->ich_apr[grp][regno] = value & 0xFFFFFFFFU;
|
||||
|
||||
gicv3_cpuif_virt_update(cs);
|
||||
gicv3_cpuif_virt_irq_fiq_update(cs);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -588,7 +588,7 @@ static void icv_bpr_write(CPUARMState *env, const ARMCPRegInfo *ri,
|
||||
|
||||
write_vbpr(cs, grp, value);
|
||||
|
||||
gicv3_cpuif_virt_update(cs);
|
||||
gicv3_cpuif_virt_irq_fiq_update(cs);
|
||||
}
|
||||
|
||||
static uint64_t icv_pmr_read(CPUARMState *env, const ARMCPRegInfo *ri)
|
||||
@ -615,7 +615,7 @@ static void icv_pmr_write(CPUARMState *env, const ARMCPRegInfo *ri,
|
||||
cs->ich_vmcr_el2 = deposit64(cs->ich_vmcr_el2, ICH_VMCR_EL2_VPMR_SHIFT,
|
||||
ICH_VMCR_EL2_VPMR_LENGTH, value);
|
||||
|
||||
gicv3_cpuif_virt_update(cs);
|
||||
gicv3_cpuif_virt_irq_fiq_update(cs);
|
||||
}
|
||||
|
||||
static uint64_t icv_igrpen_read(CPUARMState *env, const ARMCPRegInfo *ri)
|
||||
@ -682,7 +682,7 @@ static void icv_ctlr_write(CPUARMState *env, const ARMCPRegInfo *ri,
|
||||
cs->ich_vmcr_el2 = deposit64(cs->ich_vmcr_el2, ICH_VMCR_EL2_VEOIM_SHIFT,
|
||||
1, value & ICC_CTLR_EL1_EOIMODE ? 1 : 0);
|
||||
|
||||
gicv3_cpuif_virt_update(cs);
|
||||
gicv3_cpuif_virt_irq_fiq_update(cs);
|
||||
}
|
||||
|
||||
static uint64_t icv_rpr_read(CPUARMState *env, const ARMCPRegInfo *ri)
|
||||
@ -2452,7 +2452,7 @@ static void ich_ap_write(CPUARMState *env, const ARMCPRegInfo *ri,
|
||||
trace_gicv3_ich_ap_write(ri->crm & 1, regno, gicv3_redist_affid(cs), value);
|
||||
|
||||
cs->ich_apr[grp][regno] = value & 0xFFFFFFFFU;
|
||||
gicv3_cpuif_virt_update(cs);
|
||||
gicv3_cpuif_virt_irq_fiq_update(cs);
|
||||
}
|
||||
|
||||
static uint64_t ich_hcr_read(CPUARMState *env, const ARMCPRegInfo *ri)
|
||||
|
Loading…
x
Reference in New Issue
Block a user