diff mbox series

[6/9] target/s390x: Honor CPU_DUMP_FPU

Message ID 20180511035240.4016-7-richard.henderson@linaro.org
State Superseded
Headers show
Series Honor CPU_DUMP_FPU | expand

Commit Message

Richard Henderson May 11, 2018, 3:52 a.m. UTC
Also do not dump both "fpu" and "vector" registers
as the former overlaps the latter.

Cc: Alexander Graf <agraf@suse.de>
Cc: David Hildenbrand <david@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

---
 target/s390x/helper.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

-- 
2.17.0

Comments

David Hildenbrand May 11, 2018, 6:57 a.m. UTC | #1
On 11.05.2018 05:52, Richard Henderson wrote:
> Also do not dump both "fpu" and "vector" registers

> as the former overlaps the latter.

> 

> Cc: Alexander Graf <agraf@suse.de>

> Cc: David Hildenbrand <david@redhat.com>

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

> ---

>  target/s390x/helper.c | 23 ++++++++++++-----------

>  1 file changed, 12 insertions(+), 11 deletions(-)

> 

> diff --git a/target/s390x/helper.c b/target/s390x/helper.c

> index e8548f340a..fd5791f134 100644

> --- a/target/s390x/helper.c

> +++ b/target/s390x/helper.c

> @@ -327,21 +327,22 @@ void s390_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,

>          }

>      }

>  

> -    for (i = 0; i < 16; i++) {

> -        cpu_fprintf(f, "F%02d=%016" PRIx64, i, get_freg(env, i)->ll);

> -        if ((i % 4) == 3) {

> -            cpu_fprintf(f, "\n");

> +    if (flags & CPU_DUMP_FPU) {

> +        if (s390_has_feat(S390_FEAT_VECTOR)) {


CPU model should always be initialized at this point, so this check
actually returns the right thing.

Reviewed-by: David Hildenbrand <david@redhat.com>


> +            for (i = 0; i < 32; i++) {

> +                cpu_fprintf(f, "V%02d=%016" PRIx64 "%016" PRIx64 "%c",

> +                            i, env->vregs[i][0].ll, env->vregs[i][1].ll,

> +                            i % 2 ? '\n' : ' ');

> +            }

>          } else {

> -            cpu_fprintf(f, " ");

> +            for (i = 0; i < 16; i++) {

> +                cpu_fprintf(f, "F%02d=%016" PRIx64 "%c",

> +                            i, get_freg(env, i)->ll,

> +                            (i % 4) == 3 ? '\n' : ' ');

> +            }

>          }

>      }

>  

> -    for (i = 0; i < 32; i++) {

> -        cpu_fprintf(f, "V%02d=%016" PRIx64 "%016" PRIx64, i,

> -                    env->vregs[i][0].ll, env->vregs[i][1].ll);

> -        cpu_fprintf(f, (i % 2) ? "\n" : " ");

> -    }

> -

>  #ifndef CONFIG_USER_ONLY

>      for (i = 0; i < 16; i++) {

>          cpu_fprintf(f, "C%02d=%016" PRIx64, i, env->cregs[i]);

> 



-- 

Thanks,

David / dhildenb
diff mbox series

Patch

diff --git a/target/s390x/helper.c b/target/s390x/helper.c
index e8548f340a..fd5791f134 100644
--- a/target/s390x/helper.c
+++ b/target/s390x/helper.c
@@ -327,21 +327,22 @@  void s390_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
         }
     }
 
-    for (i = 0; i < 16; i++) {
-        cpu_fprintf(f, "F%02d=%016" PRIx64, i, get_freg(env, i)->ll);
-        if ((i % 4) == 3) {
-            cpu_fprintf(f, "\n");
+    if (flags & CPU_DUMP_FPU) {
+        if (s390_has_feat(S390_FEAT_VECTOR)) {
+            for (i = 0; i < 32; i++) {
+                cpu_fprintf(f, "V%02d=%016" PRIx64 "%016" PRIx64 "%c",
+                            i, env->vregs[i][0].ll, env->vregs[i][1].ll,
+                            i % 2 ? '\n' : ' ');
+            }
         } else {
-            cpu_fprintf(f, " ");
+            for (i = 0; i < 16; i++) {
+                cpu_fprintf(f, "F%02d=%016" PRIx64 "%c",
+                            i, get_freg(env, i)->ll,
+                            (i % 4) == 3 ? '\n' : ' ');
+            }
         }
     }
 
-    for (i = 0; i < 32; i++) {
-        cpu_fprintf(f, "V%02d=%016" PRIx64 "%016" PRIx64, i,
-                    env->vregs[i][0].ll, env->vregs[i][1].ll);
-        cpu_fprintf(f, (i % 2) ? "\n" : " ");
-    }
-
 #ifndef CONFIG_USER_ONLY
     for (i = 0; i < 16; i++) {
         cpu_fprintf(f, "C%02d=%016" PRIx64, i, env->cregs[i]);