Commit b3c7724cbc70109630227c92df2d59deca4dab64

Authored by pbrook
1 parent 6913ba56

Move CPU save/load registration to common code.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4808 c046a42c-6fe2-441c-8c8c-71466251a162
... ... @@ -37,6 +37,7 @@
37 37 #include "exec-all.h"
38 38 #include "qemu-common.h"
39 39 #include "tcg.h"
  40 +#include "hw/hw.h"
40 41 #if defined(CONFIG_USER_ONLY)
41 42 #include <qemu.h>
42 43 #endif
... ... @@ -457,6 +458,10 @@ void cpu_exec_init(CPUState *env)
457 458 env->cpu_index = cpu_index;
458 459 env->nb_watchpoints = 0;
459 460 *penv = env;
  461 +#if defined(CPU_SAVE_VERSION) && !defined(CONFIG_USER_ONLY)
  462 + register_savevm("cpu", cpu_index, CPU_SAVE_VERSION,
  463 + cpu_save, cpu_load, env);
  464 +#endif
460 465 }
461 466  
462 467 static inline void invalidate_page_bitmap(PageDesc *p)
... ...
hw/etraxfs.c
... ... @@ -67,7 +67,6 @@ void bareetraxfs_init (ram_addr_t ram_size, int vga_ram_size,
67 67 cpu_model = "crisv32";
68 68 }
69 69 env = cpu_init(cpu_model);
70   - register_savevm("cpu", 0, 1, cpu_save, cpu_load, env);
71 70 qemu_register_reset(main_cpu_reset, env);
72 71  
73 72 /* allocate RAM */
... ...
hw/mips_jazz.c
... ... @@ -146,7 +146,6 @@ void mips_jazz_init (ram_addr_t ram_size, int vga_ram_size,
146 146 fprintf(stderr, "Unable to find CPU definition\n");
147 147 exit(1);
148 148 }
149   - register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
150 149 qemu_register_reset(main_cpu_reset, env);
151 150  
152 151 /* allocate RAM */
... ...
hw/mips_malta.c
... ... @@ -802,7 +802,6 @@ void mips_malta_init (ram_addr_t ram_size, int vga_ram_size,
802 802 fprintf(stderr, "Unable to find CPU definition\n");
803 803 exit(1);
804 804 }
805   - register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
806 805 qemu_register_reset(main_cpu_reset, env);
807 806  
808 807 /* allocate RAM */
... ...
hw/mips_mipssim.c
... ... @@ -129,7 +129,6 @@ mips_mipssim_init (ram_addr_t ram_size, int vga_ram_size,
129 129 fprintf(stderr, "Unable to find CPU definition\n");
130 130 exit(1);
131 131 }
132   - register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
133 132 qemu_register_reset(main_cpu_reset, env);
134 133  
135 134 /* Allocate RAM. */
... ...
hw/mips_r4k.c
... ... @@ -175,7 +175,6 @@ void mips_r4k_init (ram_addr_t ram_size, int vga_ram_size,
175 175 fprintf(stderr, "Unable to find CPU definition\n");
176 176 exit(1);
177 177 }
178   - register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
179 178 qemu_register_reset(main_cpu_reset, env);
180 179  
181 180 /* allocate RAM */
... ...
... ... @@ -764,7 +764,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
764 764 /* XXX: enable it in all cases */
765 765 env->cpuid_features |= CPUID_APIC;
766 766 }
767   - register_savevm("cpu", i, 5, cpu_save, cpu_load, env);
768 767 qemu_register_reset(main_cpu_reset, env);
769 768 if (pci_enabled) {
770 769 apic_init(env);
... ...
hw/ppc4xx_devs.c
... ... @@ -56,7 +56,6 @@ CPUState *ppc4xx_init (const unsigned char *cpu_model,
56 56 ppc_dcr_init(env, NULL, NULL);
57 57 /* Register qemu callbacks */
58 58 qemu_register_reset(&cpu_ppc_reset, env);
59   - register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
60 59  
61 60 return env;
62 61 }
... ...
hw/ppc_chrp.c
... ... @@ -103,7 +103,6 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size,
103 103 env->osi_call = vga_osi_call;
104 104 #endif
105 105 qemu_register_reset(&cpu_ppc_reset, env);
106   - register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
107 106 envs[i] = env;
108 107 }
109 108 if (env->nip < 0xFFF80000) {
... ...
hw/ppc_oldworld.c
... ... @@ -143,7 +143,6 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size,
143 143 cpu_ppc_tb_init(env, 100UL * 1000UL * 1000UL);
144 144 env->osi_call = vga_osi_call;
145 145 qemu_register_reset(&cpu_ppc_reset, env);
146   - register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
147 146 envs[i] = env;
148 147 }
149 148 if (env->nip < 0xFFF80000) {
... ...
hw/ppc_prep.c
... ... @@ -580,7 +580,6 @@ static void ppc_prep_init (ram_addr_t ram_size, int vga_ram_size,
580 580 cpu_ppc_tb_init(env, 100UL * 1000UL * 1000UL);
581 581 }
582 582 qemu_register_reset(&cpu_ppc_reset, env);
583   - register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
584 583 envs[i] = env;
585 584 }
586 585  
... ...
hw/pxa2xx.c
... ... @@ -2046,9 +2046,6 @@ struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size,
2046 2046 fprintf(stderr, "Unable to find CPU definition\n");
2047 2047 exit(1);
2048 2048 }
2049   - register_savevm("cpu", 0, ARM_CPU_SAVE_VERSION, cpu_save, cpu_load,
2050   - s->env);
2051   -
2052 2049 s->reset = qemu_allocate_irqs(pxa2xx_reset, s, 1)[0];
2053 2050  
2054 2051 /* SDRAM & Internal Memory Storage */
... ... @@ -2173,9 +2170,6 @@ struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size,
2173 2170 fprintf(stderr, "Unable to find CPU definition\n");
2174 2171 exit(1);
2175 2172 }
2176   - register_savevm("cpu", 0, ARM_CPU_SAVE_VERSION, cpu_save, cpu_load,
2177   - s->env);
2178   -
2179 2173 s->reset = qemu_allocate_irqs(pxa2xx_reset, s, 1)[0];
2180 2174  
2181 2175 /* SDRAM & Internal Memory Storage */
... ...
hw/sun4m.c
... ... @@ -426,7 +426,6 @@ static void sun4m_hw_init(const struct hwdef *hwdef, ram_addr_t RAM_size,
426 426 qemu_register_reset(secondary_cpu_reset, env);
427 427 env->halted = 1;
428 428 }
429   - register_savevm("cpu", i, 4, cpu_save, cpu_load, env);
430 429 cpu_irqs[i] = qemu_allocate_irqs(cpu_set_irq, envs[i], MAX_PILS);
431 430 env->prom_addr = hwdef->slavio_base;
432 431 }
... ... @@ -601,7 +600,6 @@ static void sun4c_hw_init(const struct hwdef *hwdef, ram_addr_t RAM_size,
601 600 cpu_sparc_set_id(env, 0);
602 601  
603 602 qemu_register_reset(main_cpu_reset, env);
604   - register_savevm("cpu", 0, 4, cpu_save, cpu_load, env);
605 603 cpu_irqs = qemu_allocate_irqs(cpu_set_irq, env, MAX_PILS);
606 604 env->prom_addr = hwdef->slavio_base;
607 605  
... ... @@ -1413,7 +1411,6 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size,
1413 1411 qemu_register_reset(secondary_cpu_reset, env);
1414 1412 env->halted = 1;
1415 1413 }
1416   - register_savevm("cpu", i, 4, cpu_save, cpu_load, env);
1417 1414 cpu_irqs[i] = qemu_allocate_irqs(cpu_set_irq, envs[i], MAX_PILS);
1418 1415 env->prom_addr = hwdef->slavio_base;
1419 1416 }
... ...
hw/sun4u.c
... ... @@ -282,7 +282,6 @@ static void sun4u_init(ram_addr_t RAM_size, int vga_ram_size,
282 282 bh = qemu_bh_new(hstick_irq, env);
283 283 env->hstick = ptimer_init(bh);
284 284 ptimer_set_period(env->hstick, 1ULL);
285   - register_savevm("cpu", 0, 4, cpu_save, cpu_load, env);
286 285 qemu_register_reset(main_cpu_reset, env);
287 286 main_cpu_reset(env);
288 287  
... ...
qemu-common.h
... ... @@ -132,4 +132,8 @@ typedef struct SerialState SerialState;
132 132 typedef struct IRQState *qemu_irq;
133 133 struct pcmcia_card_s;
134 134  
  135 +/* CPU save/load. */
  136 +void cpu_save(QEMUFile *f, void *opaque);
  137 +int cpu_load(QEMUFile *f, void *opaque, int version_id);
  138 +
135 139 #endif
... ...
sysemu.h
... ... @@ -41,9 +41,6 @@ void qemu_system_powerdown(void);
41 41 #endif
42 42 void qemu_system_reset(void);
43 43  
44   -void cpu_save(QEMUFile *f, void *opaque);
45   -int cpu_load(QEMUFile *f, void *opaque, int version_id);
46   -
47 44 void do_savevm(const char *name);
48 45 void do_loadvm(const char *name);
49 46 void do_delvm(const char *name);
... ...
target-arm/cpu.h
... ... @@ -397,7 +397,7 @@ void cpu_arm_set_cp_io(CPUARMState *env, int cpnum,
397 397 #define cpu_signal_handler cpu_arm_signal_handler
398 398 #define cpu_list arm_cpu_list
399 399  
400   -#define ARM_CPU_SAVE_VERSION 1
  400 +#define CPU_SAVE_VERSION 1
401 401  
402 402 /* MMU modes definitions */
403 403 #define MMU_MODE0_SUFFIX _kernel
... ...
target-arm/machine.c
... ... @@ -120,7 +120,7 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id)
120 120 CPUARMState *env = (CPUARMState *)opaque;
121 121 int i;
122 122  
123   - if (version_id != ARM_CPU_SAVE_VERSION)
  123 + if (version_id != CPU_SAVE_VERSION)
124 124 return -EINVAL;
125 125  
126 126 for (i = 0; i < 16; i++) {
... ...
target-cris/cpu.h
... ... @@ -210,6 +210,8 @@ enum {
210 210 #define cpu_gen_code cpu_cris_gen_code
211 211 #define cpu_signal_handler cpu_cris_signal_handler
212 212  
  213 +#define CPU_SAVE_VERSION 1
  214 +
213 215 /* MMU modes definitions */
214 216 #define MMU_MODE0_SUFFIX _kernel
215 217 #define MMU_MODE1_SUFFIX _user
... ...
target-i386/cpu.h
... ... @@ -726,6 +726,8 @@ static inline int cpu_get_time_fast(void)
726 726 #define cpu_signal_handler cpu_x86_signal_handler
727 727 #define cpu_list x86_cpu_list
728 728  
  729 +#define CPU_SAVE_VERSION 5
  730 +
729 731 /* MMU modes definitions */
730 732 #define MMU_MODE0_SUFFIX _kernel
731 733 #define MMU_MODE1_SUFFIX _user
... ...
target-mips/cpu.h
... ... @@ -489,6 +489,8 @@ void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
489 489 #define cpu_signal_handler cpu_mips_signal_handler
490 490 #define cpu_list mips_cpu_list
491 491  
  492 +#define CPU_SAVE_VERSION 3
  493 +
492 494 /* MMU modes definitions. We carefully match the indices with our
493 495 hflags layout. */
494 496 #define MMU_MODE0_SUFFIX _kernel
... ...
target-ppc/cpu.h
... ... @@ -813,6 +813,8 @@ int ppc_dcr_write (ppc_dcr_t *dcr_env, int dcrn, target_ulong val);
813 813 #define cpu_signal_handler cpu_ppc_signal_handler
814 814 #define cpu_list ppc_cpu_list
815 815  
  816 +#define CPU_SAVE_VERSION 3
  817 +
816 818 /* MMU modes definitions */
817 819 #define MMU_MODE0_SUFFIX _user
818 820 #define MMU_MODE1_SUFFIX _kernel
... ...
target-sparc/cpu.h
... ... @@ -388,6 +388,8 @@ void cpu_check_irqs(CPUSPARCState *env);
388 388 #define cpu_signal_handler cpu_sparc_signal_handler
389 389 #define cpu_list sparc_cpu_list
390 390  
  391 +#define CPU_SAVE_VERSION 4
  392 +
391 393 /* MMU modes definitions */
392 394 #define MMU_MODE0_SUFFIX _user
393 395 #define MMU_MODE1_SUFFIX _kernel
... ...