diff mbox

[v2,1/4] target-arm: Allow raw_read() and raw_write() to handle 64 bit regs

Message ID 1376065080-26661-2-git-send-email-peter.maydell@linaro.org
State Accepted
Commit 22d9e1a986a671ebfacb21555b7533336f3e8259
Headers show

Commit Message

Peter Maydell Aug. 9, 2013, 4:17 p.m. UTC
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.

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(-)

Comments

Edgar E. Iglesias Aug. 14, 2013, 5:42 a.m. UTC | #1
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 mbox

Patch

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;
 }