[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/2] target-arm: Correct condition for taking VI
From: |
Edgar E. Iglesias |
Subject: |
Re: [Qemu-devel] [PATCH 2/2] target-arm: Correct condition for taking VIRQ and VFIQ |
Date: |
Tue, 28 Oct 2014 09:25:41 +1000 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Mon, Oct 27, 2014 at 12:58:07PM +0000, Peter Maydell wrote:
> The VIRQ and VFIQ exceptions are (as the comments say) only
> taken if the CPU is in Non-secure state and the IMO/FMO bits
> are set to enable virtualized interrupts. Correct the code
> to actually implement this by using '||' rather than '&&'.
Hi Peter,
Shouldn't this be:
if (secure || ....
?
Cheers,
Edgar
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> target-arm/cpu.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/target-arm/cpu.h b/target-arm/cpu.h
> index 97eaf79..6145403 100644
> --- a/target-arm/cpu.h
> +++ b/target-arm/cpu.h
> @@ -1269,13 +1269,13 @@ static inline bool arm_excp_unmasked(CPUState *cs,
> unsigned int excp_idx)
> }
> return !(env->daif & PSTATE_I);
> case EXCP_VFIQ:
> - if (!secure && !(env->cp15.hcr_el2 & HCR_FMO)) {
> + if (!secure || !(env->cp15.hcr_el2 & HCR_FMO)) {
> /* VFIQs are only taken when hypervized and non-secure. */
> return false;
> }
> return !(env->daif & PSTATE_F);
> case EXCP_VIRQ:
> - if (!secure && !(env->cp15.hcr_el2 & HCR_IMO)) {
> + if (!secure || !(env->cp15.hcr_el2 & HCR_IMO)) {
> /* VIRQs are only taken when hypervized and non-secure. */
> return false;
> }
> --
> 1.9.1
>