Patchwork [qom-cpu,v3,3/6] cpu: Introduce VMSTATE_CPU() macro for CPUState

login
register
mail settings
Submitter Andreas Färber
Date June 18, 2013, 12:29 a.m.
Message ID <1371515385-32203-4-git-send-email-afaerber@suse.de>
Download mbox | patch
Permalink /patch/252074/
State New
Headers show

Comments

Andreas Färber - June 18, 2013, 12:29 a.m.
To be used to embed common CPU state into CPU subclasses.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 exec.c            |  5 ++---
 include/qom/cpu.h | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 3 deletions(-)

Patch

diff --git a/exec.c b/exec.c
index 5b8b40d..0bee004 100644
--- a/exec.c
+++ b/exec.c
@@ -246,7 +246,7 @@  static int cpu_common_post_load(void *opaque, int version_id)
     return 0;
 }
 
-static const VMStateDescription vmstate_cpu_common = {
+const VMStateDescription vmstate_cpu_common = {
     .name = "cpu_common",
     .version_id = 1,
     .minimum_version_id = 1,
@@ -258,8 +258,7 @@  static const VMStateDescription vmstate_cpu_common = {
         VMSTATE_END_OF_LIST()
     }
 };
-#else
-#define vmstate_cpu_common vmstate_dummy
+
 #endif
 
 CPUState *qemu_get_cpu(int index)
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 397219b..3e8cc47 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -378,4 +378,18 @@  void cpu_reset_interrupt(CPUState *cpu, int mask);
  */
 void cpu_resume(CPUState *cpu);
 
+#ifdef CONFIG_SOFTMMU
+extern const struct VMStateDescription vmstate_cpu_common;
+#else
+#define vmstate_cpu_common vmstate_dummy
+#endif
+
+#define VMSTATE_CPU() {                                                     \
+    .name = "parent_obj",                                                   \
+    .size = sizeof(CPUState),                                               \
+    .vmsd = &vmstate_cpu_common,                                            \
+    .flags = VMS_STRUCT,                                                    \
+    .offset = 0,                                                            \
+}
+
 #endif