[PATCH 7/7] sparc: Use FIELD_PTR at nwindows getter/setter

Eduardo Habkost posted 7 patches 5 years ago
Maintainers: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Artyom Tarasenko <atar4qemu@gmail.com>
[PATCH 7/7] sparc: Use FIELD_PTR at nwindows getter/setter
Posted by Eduardo Habkost 5 years ago
This makes the nwindows getter and setter more consistent with
the other field getters and setters (which work with any struct
field).

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: Artyom Tarasenko <atar4qemu@gmail.com>
Cc: qemu-devel@nongnu.org
---
 target/sparc/cpu.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index 3acc99c29c..8bf02a4fe0 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -789,8 +789,8 @@ static void sparc_cpu_initfn(Object *obj)
 static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name,
                                Property *prop, Error **errp)
 {
-    SPARCCPU *cpu = SPARC_CPU(obj);
-    int64_t value = cpu->env.def.nwindows;
+    uint32_t *ptr = FIELD_PTR(obj, prop, uint32_t);
+    int64_t value = *ptr;
 
     visit_type_int(v, name, &value, errp);
 }
@@ -798,9 +798,9 @@ static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name,
 static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name,
                                Property *prop, Error **errp)
 {
+    uint32_t *ptr = FIELD_PTR(obj, prop, uint32_t);
     const int64_t min = MIN_NWINDOWS;
     const int64_t max = MAX_NWINDOWS;
-    SPARCCPU *cpu = SPARC_CPU(obj);
     int64_t value;
 
     if (!visit_type_int(v, name, &value, errp)) {
@@ -814,7 +814,7 @@ static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name,
                    value, min, max);
         return;
     }
-    cpu->env.def.nwindows = value;
+    *ptr = value;
 }
 
 static PropertyInfo qdev_prop_nwindows = {
-- 
2.28.0


Re: [PATCH 7/7] sparc: Use FIELD_PTR at nwindows getter/setter
Posted by Mark Cave-Ayland 5 years ago
On 04/11/2020 17:25, Eduardo Habkost wrote:

> This makes the nwindows getter and setter more consistent with
> the other field getters and setters (which work with any struct
> field).
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Cc: Artyom Tarasenko <atar4qemu@gmail.com>
> Cc: qemu-devel@nongnu.org
> ---
>   target/sparc/cpu.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
> index 3acc99c29c..8bf02a4fe0 100644
> --- a/target/sparc/cpu.c
> +++ b/target/sparc/cpu.c
> @@ -789,8 +789,8 @@ static void sparc_cpu_initfn(Object *obj)
>   static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name,
>                                  Property *prop, Error **errp)
>   {
> -    SPARCCPU *cpu = SPARC_CPU(obj);
> -    int64_t value = cpu->env.def.nwindows;
> +    uint32_t *ptr = FIELD_PTR(obj, prop, uint32_t);
> +    int64_t value = *ptr;
>   
>       visit_type_int(v, name, &value, errp);
>   }
> @@ -798,9 +798,9 @@ static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name,
>   static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name,
>                                  Property *prop, Error **errp)
>   {
> +    uint32_t *ptr = FIELD_PTR(obj, prop, uint32_t);
>       const int64_t min = MIN_NWINDOWS;
>       const int64_t max = MAX_NWINDOWS;
> -    SPARCCPU *cpu = SPARC_CPU(obj);
>       int64_t value;
>   
>       if (!visit_type_int(v, name, &value, errp)) {
> @@ -814,7 +814,7 @@ static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name,
>                      value, min, max);
>           return;
>       }
> -    cpu->env.def.nwindows = value;
> +    *ptr = value;
>   }
>   
>   static PropertyInfo qdev_prop_nwindows = {

This looks correct to me:

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>


ATB,

Mark.