Re: [Qemu-devel] [PATCH v4] s390: Implement dump-guest-memory support for target s390x

2013-07-10 Thread Christian Borntraeger
On 05/07/13 14:02, Jens Freimann wrote:
 With this patch dump-guest-memory on s390 produces an ELF formatted,
 crash-readable dump.
 In order to implement this, the arch-specific part of dump-guest-memory
 was added:
 target-s390x/arch_dump.c contains the whole set of function for writing
 Elf note sections of all types for s390x.
 
 Signed-off-by: Ekaterina Tumanova tuman...@linux.vnet.ibm.com
 Signed-off-by: Jens Freimann jf...@linux.vnet.ibm.com
Acked-by: Christian Borntraeger borntrae...@de.ibm.com

I can confirm that this patch creates proper dumps readable by crash with valid
memory and valid register content. Would be good to see this upstream.

Meanwhile this patch no longer cleanly applies due to
commit 878096eeb278a8ac1ccd6667af73e026f29b4cf5
cpu: Turn cpu_dump_{state,statistics}() into CPUState hooks

The fixup is trivial.
Alex, please apply.




 [fixed indentation, use CamelCase, rename note_t to Note, use S390CPU]
 ---
  include/elf.h  |   6 ++
  target-s390x/Makefile.objs |   2 +-
  target-s390x/arch_dump.c   | 213 
 +
  target-s390x/cpu-qom.h |   5 ++
  target-s390x/cpu.c |   4 +
  5 files changed, 229 insertions(+), 1 deletion(-)
  create mode 100644 target-s390x/arch_dump.c
 
 diff --git a/include/elf.h b/include/elf.h
 index cf0d3e2..58bfbf8 100644
 --- a/include/elf.h
 +++ b/include/elf.h
 @@ -1348,11 +1348,17 @@ typedef struct elf64_shdr {
 
  /* Notes used in ET_CORE */
  #define NT_PRSTATUS  1
 +#define NT_FPREGSET 2
  #define NT_PRFPREG   2
  #define NT_PRPSINFO  3
  #define NT_TASKSTRUCT4
  #define NT_AUXV  6
  #define NT_PRXFPREG 0x46e62b7f  /* copied from 
 gdb5.1/include/elf/common.h */
 +#define NT_S390_PREFIX  0x305   /* s390 prefix register */
 +#define NT_S390_CTRS0x304   /* s390 control registers */
 +#define NT_S390_TODPREG 0x303   /* s390 TOD programmable register */
 +#define NT_S390_TODCMP  0x302   /* s390 TOD clock comparator 
 register */
 +#define NT_S390_TIMER   0x301   /* s390 timer register */
 
 
  /* Note header in a PT_NOTE section */
 diff --git a/target-s390x/Makefile.objs b/target-s390x/Makefile.objs
 index 4e63417..c34f654 100644
 --- a/target-s390x/Makefile.objs
 +++ b/target-s390x/Makefile.objs
 @@ -1,4 +1,4 @@
  obj-y += translate.o helper.o cpu.o interrupt.o
  obj-y += int_helper.o fpu_helper.o cc_helper.o mem_helper.o misc_helper.o
 -obj-$(CONFIG_SOFTMMU) += ioinst.o
 +obj-$(CONFIG_SOFTMMU) += ioinst.o arch_dump.o
  obj-$(CONFIG_KVM) += kvm.o
 diff --git a/target-s390x/arch_dump.c b/target-s390x/arch_dump.c
 new file mode 100644
 index 000..bc8db62
 --- /dev/null
 +++ b/target-s390x/arch_dump.c
 @@ -0,0 +1,213 @@
 +/*
 + * writing ELF notes for s390x arch
 + *
 + *
 + * Copyright IBM Corp. 2012, 2013
 + *
 + * Ekaterina Tumanova tuman...@linux.vnet.ibm.com
 + *
 + * This work is licensed under the terms of the GNU GPL, version 2 or later.
 + * See the COPYING file in the top-level directory.
 + *
 + */
 +
 +#include cpu.h
 +#include cpu-qom.h
 +#include elf.h
 +#include exec/cpu-all.h
 +#include sysemu/dump.h
 +#include sysemu/kvm.h
 +
 +
 +struct S390xUserRegsStruct {
 +uint64_t psw[2];
 +uint64_t gprs[16];
 +uint32_t acrs[16];
 +} QEMU_PACKED;
 +
 +typedef struct S390xUserRegsStruct S390xUserRegs;
 +
 +struct S390xElfPrstatusStruct {
 +uint8_t pad1[32];
 +uint32_t pid;
 +uint8_t pad2[76];
 +S390xUserRegs regs;
 +uint8_t pad3[16];
 +} QEMU_PACKED;
 +
 +typedef struct S390xElfPrstatusStruct S390xElfPrstatus;
 +
 +struct S390xElfFpregsetStruct {
 +uint32_t fpc;
 +uint32_t pad;
 +uint64_t fprs[16];
 +} QEMU_PACKED;
 +
 +typedef struct S390xElfFpregsetStruct S390xElfFpregset;
 +
 +typedef struct noteStruct {
 +Elf64_Nhdr hdr;
 +char name[5];
 +char pad3[3];
 +union {
 +S390xElfPrstatus prstatus;
 +S390xElfFpregset fpregset;
 +uint32_t prefix;
 +uint64_t timer;
 +uint64_t todcmp;
 +uint32_t todpreg;
 +uint64_t ctrs[16];
 +} contents;
 +} QEMU_PACKED Note;
 +
 +static void s390x_write_elf64_prstatus(Note *note, S390CPU *cpu)
 +{
 +int i;
 +S390xUserRegs *regs;
 +
 +note-hdr.n_type = cpu_to_be32(NT_PRSTATUS);
 +
 +regs = (note-contents.prstatus.regs);
 +regs-psw[0] = cpu_to_be64(cpu-env.psw.mask);
 +regs-psw[1] = cpu_to_be64(cpu-env.psw.addr);
 +for (i = 0; i = 15; i++) {
 +regs-acrs[i] = cpu_to_be32(cpu-env.aregs[i]);
 +regs-gprs[i] = cpu_to_be64(cpu-env.regs[i]);
 +}
 +}
 +
 +static void s390x_write_elf64_fpregset(Note *note, S390CPU *cpu)
 +{
 +int i;
 +
 +note-hdr.n_type = cpu_to_be32(NT_FPREGSET);
 +note-contents.fpregset.fpc = cpu_to_be32(cpu-env.fpc);
 +for (i = 0; i = 15; i++) {
 +note-contents.fpregset.fprs[i] = cpu_to_be64(cpu-env.fregs[i].ll);
 +}
 +}
 +
 +
 +static void s390x_write_elf64_timer(Note 

Re: [Qemu-devel] [PATCH v4] s390: Implement dump-guest-memory support for target s390x

2013-07-10 Thread Alexander Graf

On 10.07.2013, at 12:27, Christian Borntraeger wrote:

 On 05/07/13 14:02, Jens Freimann wrote:
 With this patch dump-guest-memory on s390 produces an ELF formatted,
 crash-readable dump.
 In order to implement this, the arch-specific part of dump-guest-memory
 was added:
 target-s390x/arch_dump.c contains the whole set of function for writing
 Elf note sections of all types for s390x.
 
 Signed-off-by: Ekaterina Tumanova tuman...@linux.vnet.ibm.com
 Signed-off-by: Jens Freimann jf...@linux.vnet.ibm.com
 Acked-by: Christian Borntraeger borntrae...@de.ibm.com
 
 I can confirm that this patch creates proper dumps readable by crash with 
 valid
 memory and valid register content. Would be good to see this upstream.
 
 Meanwhile this patch no longer cleanly applies due to
 commit 878096eeb278a8ac1ccd6667af73e026f29b4cf5
cpu: Turn cpu_dump_{state,statistics}() into CPUState hooks
 
 The fixup is trivial.
 Alex, please apply.

I'd like to get an Ack from Andreas too :). But then I'll happily apply it.


Alex




Re: [Qemu-devel] [PATCH v4] s390: Implement dump-guest-memory support for target s390x

2013-07-10 Thread Andreas Färber
Am 10.07.2013 12:37, schrieb Alexander Graf:
 On 10.07.2013, at 12:27, Christian Borntraeger wrote:
 On 05/07/13 14:02, Jens Freimann wrote:
 With this patch dump-guest-memory on s390 produces an ELF formatted,
 crash-readable dump.
 In order to implement this, the arch-specific part of dump-guest-memory
 was added:
 target-s390x/arch_dump.c contains the whole set of function for writing
 Elf note sections of all types for s390x.

 Signed-off-by: Ekaterina Tumanova tuman...@linux.vnet.ibm.com
 Signed-off-by: Jens Freimann jf...@linux.vnet.ibm.com
 Acked-by: Christian Borntraeger borntrae...@de.ibm.com

 I can confirm that this patch creates proper dumps readable by crash with 
 valid
 memory and valid register content. Would be good to see this upstream.

 Meanwhile this patch no longer cleanly applies due to
 commit 878096eeb278a8ac1ccd6667af73e026f29b4cf5
cpu: Turn cpu_dump_{state,statistics}() into CPUState hooks

 The fixup is trivial.
 Alex, please apply.
 
 I'd like to get an Ack from Andreas too :). But then I'll happily apply it.

I am mostly happy and had offered Alex to reply with a fixup patch to
squash on top, but am still buried in downstream work and didn't get to
preparing that yet: v4 started #including cpu-qom.h, which it shouldn't
(only cpu.h does in the tree) - if Alex wants to drop that line himself,
please add my Reviewed-by on top, Alex. I did not check whether the
s390x implementation is functionally correct, just the changed API and
any style issues.

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



Re: [Qemu-devel] [PATCH v4] s390: Implement dump-guest-memory support for target s390x

2013-07-10 Thread Alexander Graf

On 10.07.2013, at 14:15, Andreas Färber wrote:

 Am 10.07.2013 12:37, schrieb Alexander Graf:
 On 10.07.2013, at 12:27, Christian Borntraeger wrote:
 On 05/07/13 14:02, Jens Freimann wrote:
 With this patch dump-guest-memory on s390 produces an ELF formatted,
 crash-readable dump.
 In order to implement this, the arch-specific part of dump-guest-memory
 was added:
 target-s390x/arch_dump.c contains the whole set of function for writing
 Elf note sections of all types for s390x.
 
 Signed-off-by: Ekaterina Tumanova tuman...@linux.vnet.ibm.com
 Signed-off-by: Jens Freimann jf...@linux.vnet.ibm.com
 Acked-by: Christian Borntraeger borntrae...@de.ibm.com
 
 I can confirm that this patch creates proper dumps readable by crash with 
 valid
 memory and valid register content. Would be good to see this upstream.
 
 Meanwhile this patch no longer cleanly applies due to
 commit 878096eeb278a8ac1ccd6667af73e026f29b4cf5
   cpu: Turn cpu_dump_{state,statistics}() into CPUState hooks
 
 The fixup is trivial.
 Alex, please apply.
 
 I'd like to get an Ack from Andreas too :). But then I'll happily apply it.
 
 I am mostly happy and had offered Alex to reply with a fixup patch to
 squash on top, but am still buried in downstream work and didn't get to
 preparing that yet: v4 started #including cpu-qom.h, which it shouldn't
 (only cpu.h does in the tree) - if Alex wants to drop that line himself,
 please add my Reviewed-by on top, Alex. I did not check whether the
 s390x implementation is functionally correct, just the changed API and
 any style issues.

The patch needs one more round to apply on top of current master anyway, so I'd 
prefer if Ekaterina or Christian could quickly do a respin with your comment 
addressed.


Alex




[Qemu-devel] [PATCH v4] s390: Implement dump-guest-memory support for target s390x

2013-07-05 Thread Jens Freimann
With this patch dump-guest-memory on s390 produces an ELF formatted,
crash-readable dump.
In order to implement this, the arch-specific part of dump-guest-memory
was added:
target-s390x/arch_dump.c contains the whole set of function for writing
Elf note sections of all types for s390x.

Signed-off-by: Ekaterina Tumanova tuman...@linux.vnet.ibm.com
Signed-off-by: Jens Freimann jf...@linux.vnet.ibm.com
[fixed indentation, use CamelCase, rename note_t to Note, use S390CPU]
---
 include/elf.h  |   6 ++
 target-s390x/Makefile.objs |   2 +-
 target-s390x/arch_dump.c   | 213 +
 target-s390x/cpu-qom.h |   5 ++
 target-s390x/cpu.c |   4 +
 5 files changed, 229 insertions(+), 1 deletion(-)
 create mode 100644 target-s390x/arch_dump.c

diff --git a/include/elf.h b/include/elf.h
index cf0d3e2..58bfbf8 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -1348,11 +1348,17 @@ typedef struct elf64_shdr {
 
 /* Notes used in ET_CORE */
 #define NT_PRSTATUS1
+#define NT_FPREGSET 2
 #define NT_PRFPREG 2
 #define NT_PRPSINFO3
 #define NT_TASKSTRUCT  4
 #define NT_AUXV6
 #define NT_PRXFPREG 0x46e62b7f  /* copied from 
gdb5.1/include/elf/common.h */
+#define NT_S390_PREFIX  0x305   /* s390 prefix register */
+#define NT_S390_CTRS0x304   /* s390 control registers */
+#define NT_S390_TODPREG 0x303   /* s390 TOD programmable register */
+#define NT_S390_TODCMP  0x302   /* s390 TOD clock comparator register 
*/
+#define NT_S390_TIMER   0x301   /* s390 timer register */
 
 
 /* Note header in a PT_NOTE section */
diff --git a/target-s390x/Makefile.objs b/target-s390x/Makefile.objs
index 4e63417..c34f654 100644
--- a/target-s390x/Makefile.objs
+++ b/target-s390x/Makefile.objs
@@ -1,4 +1,4 @@
 obj-y += translate.o helper.o cpu.o interrupt.o
 obj-y += int_helper.o fpu_helper.o cc_helper.o mem_helper.o misc_helper.o
-obj-$(CONFIG_SOFTMMU) += ioinst.o
+obj-$(CONFIG_SOFTMMU) += ioinst.o arch_dump.o
 obj-$(CONFIG_KVM) += kvm.o
diff --git a/target-s390x/arch_dump.c b/target-s390x/arch_dump.c
new file mode 100644
index 000..bc8db62
--- /dev/null
+++ b/target-s390x/arch_dump.c
@@ -0,0 +1,213 @@
+/*
+ * writing ELF notes for s390x arch
+ *
+ *
+ * Copyright IBM Corp. 2012, 2013
+ *
+ * Ekaterina Tumanova tuman...@linux.vnet.ibm.com
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#include cpu.h
+#include cpu-qom.h
+#include elf.h
+#include exec/cpu-all.h
+#include sysemu/dump.h
+#include sysemu/kvm.h
+
+
+struct S390xUserRegsStruct {
+uint64_t psw[2];
+uint64_t gprs[16];
+uint32_t acrs[16];
+} QEMU_PACKED;
+
+typedef struct S390xUserRegsStruct S390xUserRegs;
+
+struct S390xElfPrstatusStruct {
+uint8_t pad1[32];
+uint32_t pid;
+uint8_t pad2[76];
+S390xUserRegs regs;
+uint8_t pad3[16];
+} QEMU_PACKED;
+
+typedef struct S390xElfPrstatusStruct S390xElfPrstatus;
+
+struct S390xElfFpregsetStruct {
+uint32_t fpc;
+uint32_t pad;
+uint64_t fprs[16];
+} QEMU_PACKED;
+
+typedef struct S390xElfFpregsetStruct S390xElfFpregset;
+
+typedef struct noteStruct {
+Elf64_Nhdr hdr;
+char name[5];
+char pad3[3];
+union {
+S390xElfPrstatus prstatus;
+S390xElfFpregset fpregset;
+uint32_t prefix;
+uint64_t timer;
+uint64_t todcmp;
+uint32_t todpreg;
+uint64_t ctrs[16];
+} contents;
+} QEMU_PACKED Note;
+
+static void s390x_write_elf64_prstatus(Note *note, S390CPU *cpu)
+{
+int i;
+S390xUserRegs *regs;
+
+note-hdr.n_type = cpu_to_be32(NT_PRSTATUS);
+
+regs = (note-contents.prstatus.regs);
+regs-psw[0] = cpu_to_be64(cpu-env.psw.mask);
+regs-psw[1] = cpu_to_be64(cpu-env.psw.addr);
+for (i = 0; i = 15; i++) {
+regs-acrs[i] = cpu_to_be32(cpu-env.aregs[i]);
+regs-gprs[i] = cpu_to_be64(cpu-env.regs[i]);
+}
+}
+
+static void s390x_write_elf64_fpregset(Note *note, S390CPU *cpu)
+{
+int i;
+
+note-hdr.n_type = cpu_to_be32(NT_FPREGSET);
+note-contents.fpregset.fpc = cpu_to_be32(cpu-env.fpc);
+for (i = 0; i = 15; i++) {
+note-contents.fpregset.fprs[i] = cpu_to_be64(cpu-env.fregs[i].ll);
+}
+}
+
+
+static void s390x_write_elf64_timer(Note *note, S390CPU *cpu)
+{
+note-hdr.n_type = cpu_to_be32(NT_S390_TIMER);
+note-contents.timer = cpu_to_be64((uint64_t)(cpu-env.cputm));
+}
+
+static void s390x_write_elf64_todcmp(Note *note, S390CPU *cpu)
+{
+note-hdr.n_type = cpu_to_be32(NT_S390_TODCMP);
+note-contents.todcmp = cpu_to_be64((uint64_t)(cpu-env.ckc));
+}
+
+static void s390x_write_elf64_todpreg(Note *note, S390CPU *cpu)
+{
+note-hdr.n_type = cpu_to_be32(NT_S390_TODPREG);
+note-contents.todpreg = cpu_to_be32((uint32_t)(cpu-env.todpr));
+}
+
+static void s390x_write_elf64_ctrs(Note *note, S390CPU *cpu)
+{
+int i;

[Qemu-devel] [PATCH v4] s390: Implement dump-guest-memory support for target s390x

2013-06-26 Thread Jens Freimann
With this patch dump-guest-memory on s390 produces an ELF formatted,
crash-readable dump.
In order to implement this, the arch-specific part of dump-guest-memory
was added:
target-s390x/arch_dump.c contains the whole set of function for writing
Elf note sections of all types for s390x.

Signed-off-by: Ekaterina Tumanova tuman...@linux.vnet.ibm.com
Signed-off-by: Jens Freimann jf...@linux.vnet.ibm.com
[fixed indentation, use CamelCase, rename note_t to Note, use S390CPU]
---
 include/elf.h  |   6 ++
 target-s390x/Makefile.objs |   2 +-
 target-s390x/arch_dump.c   | 213 +
 target-s390x/cpu-qom.h |   5 ++
 target-s390x/cpu.c |   4 +
 5 files changed, 229 insertions(+), 1 deletion(-)
 create mode 100644 target-s390x/arch_dump.c

diff --git a/include/elf.h b/include/elf.h
index cf0d3e2..58bfbf8 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -1348,11 +1348,17 @@ typedef struct elf64_shdr {
 
 /* Notes used in ET_CORE */
 #define NT_PRSTATUS1
+#define NT_FPREGSET 2
 #define NT_PRFPREG 2
 #define NT_PRPSINFO3
 #define NT_TASKSTRUCT  4
 #define NT_AUXV6
 #define NT_PRXFPREG 0x46e62b7f  /* copied from 
gdb5.1/include/elf/common.h */
+#define NT_S390_PREFIX  0x305   /* s390 prefix register */
+#define NT_S390_CTRS0x304   /* s390 control registers */
+#define NT_S390_TODPREG 0x303   /* s390 TOD programmable register */
+#define NT_S390_TODCMP  0x302   /* s390 TOD clock comparator register 
*/
+#define NT_S390_TIMER   0x301   /* s390 timer register */
 
 
 /* Note header in a PT_NOTE section */
diff --git a/target-s390x/Makefile.objs b/target-s390x/Makefile.objs
index 4e63417..c34f654 100644
--- a/target-s390x/Makefile.objs
+++ b/target-s390x/Makefile.objs
@@ -1,4 +1,4 @@
 obj-y += translate.o helper.o cpu.o interrupt.o
 obj-y += int_helper.o fpu_helper.o cc_helper.o mem_helper.o misc_helper.o
-obj-$(CONFIG_SOFTMMU) += ioinst.o
+obj-$(CONFIG_SOFTMMU) += ioinst.o arch_dump.o
 obj-$(CONFIG_KVM) += kvm.o
diff --git a/target-s390x/arch_dump.c b/target-s390x/arch_dump.c
new file mode 100644
index 000..bc8db62
--- /dev/null
+++ b/target-s390x/arch_dump.c
@@ -0,0 +1,213 @@
+/*
+ * writing ELF notes for s390x arch
+ *
+ *
+ * Copyright IBM Corp. 2012, 2013
+ *
+ * Ekaterina Tumanova tuman...@linux.vnet.ibm.com
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#include cpu.h
+#include cpu-qom.h
+#include elf.h
+#include exec/cpu-all.h
+#include sysemu/dump.h
+#include sysemu/kvm.h
+
+
+struct S390xUserRegsStruct {
+uint64_t psw[2];
+uint64_t gprs[16];
+uint32_t acrs[16];
+} QEMU_PACKED;
+
+typedef struct S390xUserRegsStruct S390xUserRegs;
+
+struct S390xElfPrstatusStruct {
+uint8_t pad1[32];
+uint32_t pid;
+uint8_t pad2[76];
+S390xUserRegs regs;
+uint8_t pad3[16];
+} QEMU_PACKED;
+
+typedef struct S390xElfPrstatusStruct S390xElfPrstatus;
+
+struct S390xElfFpregsetStruct {
+uint32_t fpc;
+uint32_t pad;
+uint64_t fprs[16];
+} QEMU_PACKED;
+
+typedef struct S390xElfFpregsetStruct S390xElfFpregset;
+
+typedef struct noteStruct {
+Elf64_Nhdr hdr;
+char name[5];
+char pad3[3];
+union {
+S390xElfPrstatus prstatus;
+S390xElfFpregset fpregset;
+uint32_t prefix;
+uint64_t timer;
+uint64_t todcmp;
+uint32_t todpreg;
+uint64_t ctrs[16];
+} contents;
+} QEMU_PACKED Note;
+
+static void s390x_write_elf64_prstatus(Note *note, S390CPU *cpu)
+{
+int i;
+S390xUserRegs *regs;
+
+note-hdr.n_type = cpu_to_be32(NT_PRSTATUS);
+
+regs = (note-contents.prstatus.regs);
+regs-psw[0] = cpu_to_be64(cpu-env.psw.mask);
+regs-psw[1] = cpu_to_be64(cpu-env.psw.addr);
+for (i = 0; i = 15; i++) {
+regs-acrs[i] = cpu_to_be32(cpu-env.aregs[i]);
+regs-gprs[i] = cpu_to_be64(cpu-env.regs[i]);
+}
+}
+
+static void s390x_write_elf64_fpregset(Note *note, S390CPU *cpu)
+{
+int i;
+
+note-hdr.n_type = cpu_to_be32(NT_FPREGSET);
+note-contents.fpregset.fpc = cpu_to_be32(cpu-env.fpc);
+for (i = 0; i = 15; i++) {
+note-contents.fpregset.fprs[i] = cpu_to_be64(cpu-env.fregs[i].ll);
+}
+}
+
+
+static void s390x_write_elf64_timer(Note *note, S390CPU *cpu)
+{
+note-hdr.n_type = cpu_to_be32(NT_S390_TIMER);
+note-contents.timer = cpu_to_be64((uint64_t)(cpu-env.cputm));
+}
+
+static void s390x_write_elf64_todcmp(Note *note, S390CPU *cpu)
+{
+note-hdr.n_type = cpu_to_be32(NT_S390_TODCMP);
+note-contents.todcmp = cpu_to_be64((uint64_t)(cpu-env.ckc));
+}
+
+static void s390x_write_elf64_todpreg(Note *note, S390CPU *cpu)
+{
+note-hdr.n_type = cpu_to_be32(NT_S390_TODPREG);
+note-contents.todpreg = cpu_to_be32((uint32_t)(cpu-env.todpr));
+}
+
+static void s390x_write_elf64_ctrs(Note *note, S390CPU *cpu)
+{
+int i;