Added DACR32_EL2 definition and converted dacr fields to uint64_t in v9.

On 31 October 2014 10:38, Peter Maydell <peter.mayd...@linaro.org> wrote:

> On 30 October 2014 21:28, Greg Bellows <greg.bell...@linaro.org> wrote:
> > From: Fabian Aggeler <aggel...@ethz.ch>
> >
> > When EL3 is running in AArch32 (or ARMv7 with Security Extensions)
> > DACR has a secure and a non-secure instance.
> >
> > Signed-off-by: Fabian Aggeler <aggel...@ethz.ch>
> > Signed-off-by: Greg Bellows <greg.bell...@linaro.org>
> > ---
> >  hw/arm/pxa2xx.c     |  2 +-
> >  target-arm/cpu.h    | 13 +++++++++++--
> >  target-arm/helper.c | 19 +++++++++++--------
> >  3 files changed, 23 insertions(+), 11 deletions(-)
> >
> > diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
> > index 641b148..ac13d0b 100644
> > --- a/hw/arm/pxa2xx.c
> > +++ b/hw/arm/pxa2xx.c
> > @@ -276,7 +276,7 @@ static void pxa2xx_pwrmode_write(CPUARMState *env,
> const ARMCPRegInfo *ri,
> >          s->cpu->env.cp15.sctlr_ns = 0;
> >          s->cpu->env.cp15.c1_coproc = 0;
> >          s->cpu->env.cp15.ttbr0_el[1] = 0;
> > -        s->cpu->env.cp15.c3 = 0;
> > +        s->cpu->env.cp15.dacr_ns = 0;
> >          s->pm_regs[PSSR >> 2] |= 0x8; /* Set STS */
> >          s->pm_regs[RCSR >> 2] |= 0x8; /* Set GPR */
> >
> > diff --git a/target-arm/cpu.h b/target-arm/cpu.h
> > index 6e9f1c3..6d39af1 100644
> > --- a/target-arm/cpu.h
> > +++ b/target-arm/cpu.h
> > @@ -236,8 +236,17 @@ typedef struct CPUARMState {
> >          };
> >          uint32_t c2_data; /* MPU data cachable bits.  */
> >          uint32_t c2_insn; /* MPU instruction cachable bits.  */
> > -        uint32_t c3; /* MMU domain access control register
> > -                        MPU write buffer control.  */
> > +        union { /* MMU domain access control register
> > +                 * MPU write buffer control.
> > +                 */
> > +            struct {
> > +                uint32_t dacr_ns;
> > +                uint32_t dacr_s;
> > +            };
> > +            struct {
> > +                uint32_t dacr32_el2;
> > +            };
>
> If we're going to define a dacr32_el2 field here we should
> actually implement the reginfo for it (it just has to be a
> simple reads-as-written PL2_RW register). It's also going to
> have to be uint64_t, which means the dacr_ns/dacr_s fields
> also should be 64 bit.
>
> Someday we should split out the MPU use of this encoding
> properly into its own field because it isn't anything to
> do with the DACR. I guess not today, though.
>
> -- PMM
>

Reply via email to