qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-2.4] target-arm: Fix broken SCTLR_EL3 reset


From: Edgar E. Iglesias
Subject: Re: [Qemu-devel] [PATCH for-2.4] target-arm: Fix broken SCTLR_EL3 reset
Date: Tue, 14 Jul 2015 00:41:54 +1000
User-agent: Mutt/1.5.21 (2010-09-15)

On Mon, Jul 13, 2015 at 03:24:25PM +0100, Peter Maydell wrote:
> The SCTLR_EL3 cpreg definition was implicitly resetting the
> register state to 0, which is both wrong and clashes with
> the reset done via the SCTLR definition (since sctlr[3]
> is unioned with sctlr_s). This went unnoticed until recently,
> when an unrelated change (commit a903c449b41f105aa) happened to
> perturb the order of enumeration through the cpregs hashtable for
> reset such that the erroneous reset happened after the correct one
> rather than before it. Fix this by marking SCTLR_EL3 as an alias,
> so its reset is left up to the AArch32 view.
> 
> Signed-off-by: Peter Maydell <address@hidden>


Ouch! Thanks!

Reviewed-by: Edgar E. Iglesias <address@hidden>

Cheers,
Edgar

> ---
> This was causing Greg's trustzone testsuite to fail.
> 
>  target-arm/helper.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/target-arm/helper.c b/target-arm/helper.c
> index b87afe7..01f0d0d 100644
> --- a/target-arm/helper.c
> +++ b/target-arm/helper.c
> @@ -2752,6 +2752,7 @@ static const ARMCPRegInfo el3_cp_reginfo[] = {
>        .access = PL3_RW, .writefn = vbar_write, .resetvalue = 0,
>        .fieldoffset = offsetof(CPUARMState, cp15.mvbar) },
>      { .name = "SCTLR_EL3", .state = ARM_CP_STATE_AA64,
> +      .type = ARM_CP_ALIAS, /* reset handled by AArch32 view */
>        .opc0 = 3, .opc1 = 6, .crn = 1, .crm = 0, .opc2 = 0,
>        .access = PL3_RW, .raw_writefn = raw_write, .writefn = sctlr_write,
>        .fieldoffset = offsetof(CPUARMState, cp15.sctlr_el[3]) },
> -- 
> 1.9.1
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]