Message ID | 1376065080-26661-2-git-send-email-peter.maydell@linaro.org |
---|---|
State | Accepted |
Commit | 22d9e1a986a671ebfacb21555b7533336f3e8259 |
Headers | show |
On Fri, Aug 09, 2013 at 05:17:57PM +0100, Peter Maydell wrote: > Extend the raw_read() and raw_write() helper accessors so that > they can be used for 64 bit registers as well as 32 bit registers. > Reviewed-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > Tested-by: Laurent Desnogues <laurent.desnogues@gmail.com> > --- > target-arm/helper.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/target-arm/helper.c b/target-arm/helper.c > index 4968391..fc5f757 100644 > --- a/target-arm/helper.c > +++ b/target-arm/helper.c > @@ -67,14 +67,22 @@ static int vfp_gdb_set_reg(CPUARMState *env, uint8_t *buf, int reg) > static int raw_read(CPUARMState *env, const ARMCPRegInfo *ri, > uint64_t *value) > { > - *value = CPREG_FIELD32(env, ri); > + if (ri->type & ARM_CP_64BIT) { > + *value = CPREG_FIELD64(env, ri); > + } else { > + *value = CPREG_FIELD32(env, ri); > + } > return 0; > } > > static int raw_write(CPUARMState *env, const ARMCPRegInfo *ri, > uint64_t value) > { > - CPREG_FIELD32(env, ri) = value; > + if (ri->type & ARM_CP_64BIT) { > + CPREG_FIELD64(env, ri) = value; > + } else { > + CPREG_FIELD32(env, ri) = value; > + } > return 0; > } > > -- > 1.7.9.5 > >
diff --git a/target-arm/helper.c b/target-arm/helper.c index 4968391..fc5f757 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -67,14 +67,22 @@ static int vfp_gdb_set_reg(CPUARMState *env, uint8_t *buf, int reg) static int raw_read(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t *value) { - *value = CPREG_FIELD32(env, ri); + if (ri->type & ARM_CP_64BIT) { + *value = CPREG_FIELD64(env, ri); + } else { + *value = CPREG_FIELD32(env, ri); + } return 0; } static int raw_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { - CPREG_FIELD32(env, ri) = value; + if (ri->type & ARM_CP_64BIT) { + CPREG_FIELD64(env, ri) = value; + } else { + CPREG_FIELD32(env, ri) = value; + } return 0; }