Commit 8217606e6edb49591b4a6fd5a0d1229cebe470a9

Authored by Jan Kiszka
Committed by Anthony Liguori
1 parent 93102fd6

Introduce reset notifier order

Add the parameter 'order' to qemu_register_reset and sort callbacks on
registration. On system reset, callbacks with lower order will be
invoked before those with higher order. Update all existing users to the
standard order 0.

Note: At least for x86, the existing users seem to assume that handlers
are called in their registration order. Therefore, the patch preserves
this property. If someone feels bored, (s)he could try to identify this
dependency and express it properly on callback registration.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
hw/ac97.c
@@ -1369,7 +1369,7 @@ int ac97_init (PCIBus *bus) @@ -1369,7 +1369,7 @@ int ac97_init (PCIBus *bus)
1369 pci_register_io_region (&d->dev, 0, 256 * 4, PCI_ADDRESS_SPACE_IO, ac97_map); 1369 pci_register_io_region (&d->dev, 0, 256 * 4, PCI_ADDRESS_SPACE_IO, ac97_map);
1370 pci_register_io_region (&d->dev, 1, 64 * 4, PCI_ADDRESS_SPACE_IO, ac97_map); 1370 pci_register_io_region (&d->dev, 1, 64 * 4, PCI_ADDRESS_SPACE_IO, ac97_map);
1371 register_savevm ("ac97", 0, 2, ac97_save, ac97_load, s); 1371 register_savevm ("ac97", 0, 2, ac97_save, ac97_load, s);
1372 - qemu_register_reset (ac97_on_reset, s); 1372 + qemu_register_reset (ac97_on_reset, 0, s);
1373 AUD_register_card ("ac97", &s->card); 1373 AUD_register_card ("ac97", &s->card);
1374 ac97_on_reset (s); 1374 ac97_on_reset (s);
1375 return 0; 1375 return 0;
hw/acpi.c
@@ -550,7 +550,7 @@ i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base, @@ -550,7 +550,7 @@ i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
550 550
551 s->smbus = i2c_init_bus(); 551 s->smbus = i2c_init_bus();
552 s->irq = sci_irq; 552 s->irq = sci_irq;
553 - qemu_register_reset(piix4_reset, s); 553 + qemu_register_reset(piix4_reset, 0, s);
554 554
555 return s->smbus; 555 return s->smbus;
556 } 556 }
hw/adb.c
@@ -122,7 +122,7 @@ ADBDevice *adb_register_device(ADBBusState *s, int devaddr, @@ -122,7 +122,7 @@ ADBDevice *adb_register_device(ADBBusState *s, int devaddr,
122 d->devreq = devreq; 122 d->devreq = devreq;
123 d->devreset = devreset; 123 d->devreset = devreset;
124 d->opaque = opaque; 124 d->opaque = opaque;
125 - qemu_register_reset((QEMUResetHandler *)devreset, d); 125 + qemu_register_reset((QEMUResetHandler *)devreset, 0, d);
126 d->devreset(d); 126 d->devreset(d);
127 return d; 127 return d;
128 } 128 }
hw/apic.c
@@ -924,7 +924,7 @@ int apic_init(CPUState *env) @@ -924,7 +924,7 @@ int apic_init(CPUState *env)
924 s->timer = qemu_new_timer(vm_clock, apic_timer, s); 924 s->timer = qemu_new_timer(vm_clock, apic_timer, s);
925 925
926 register_savevm("apic", s->id, 2, apic_save, apic_load, s); 926 register_savevm("apic", s->id, 2, apic_save, apic_load, s);
927 - qemu_register_reset(apic_reset, s); 927 + qemu_register_reset(apic_reset, 0, s);
928 928
929 local_apics[s->id] = s; 929 local_apics[s->id] = s;
930 return 0; 930 return 0;
hw/arm_boot.c
@@ -203,7 +203,7 @@ void arm_load_kernel(CPUState *env, struct arm_boot_info *info) @@ -203,7 +203,7 @@ void arm_load_kernel(CPUState *env, struct arm_boot_info *info)
203 if (info->nb_cpus == 0) 203 if (info->nb_cpus == 0)
204 info->nb_cpus = 1; 204 info->nb_cpus = 1;
205 env->boot_info = info; 205 env->boot_info = info;
206 - qemu_register_reset(main_cpu_reset, env); 206 + qemu_register_reset(main_cpu_reset, 0, env);
207 } 207 }
208 208
209 /* Assume that raw images are linux kernels, and ELF images are not. */ 209 /* Assume that raw images are linux kernels, and ELF images are not. */
hw/axis_dev88.c
@@ -271,7 +271,7 @@ void axisdev88_init (ram_addr_t ram_size, @@ -271,7 +271,7 @@ void axisdev88_init (ram_addr_t ram_size,
271 cpu_model = "crisv32"; 271 cpu_model = "crisv32";
272 } 272 }
273 env = cpu_init(cpu_model); 273 env = cpu_init(cpu_model);
274 - qemu_register_reset(main_cpu_reset, env); 274 + qemu_register_reset(main_cpu_reset, 0, env);
275 275
276 /* allocate RAM */ 276 /* allocate RAM */
277 phys_ram = qemu_ram_alloc(ram_size); 277 phys_ram = qemu_ram_alloc(ram_size);
hw/cirrus_vga.c
@@ -3228,7 +3228,7 @@ static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci) @@ -3228,7 +3228,7 @@ static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci)
3228 s->vga.cursor_invalidate = cirrus_cursor_invalidate; 3228 s->vga.cursor_invalidate = cirrus_cursor_invalidate;
3229 s->vga.cursor_draw_line = cirrus_cursor_draw_line; 3229 s->vga.cursor_draw_line = cirrus_cursor_draw_line;
3230 3230
3231 - qemu_register_reset(cirrus_reset, s); 3231 + qemu_register_reset(cirrus_reset, 0, s);
3232 cirrus_reset(s); 3232 cirrus_reset(s);
3233 register_savevm("cirrus_vga", 0, 2, cirrus_vga_save, cirrus_vga_load, s); 3233 register_savevm("cirrus_vga", 0, 2, cirrus_vga_save, cirrus_vga_load, s);
3234 } 3234 }
hw/cs4231.c
@@ -175,6 +175,6 @@ void cs_init(target_phys_addr_t base, int irq, void *intctl) @@ -175,6 +175,6 @@ void cs_init(target_phys_addr_t base, int irq, void *intctl)
175 cs_io_memory = cpu_register_io_memory(0, cs_mem_read, cs_mem_write, s); 175 cs_io_memory = cpu_register_io_memory(0, cs_mem_read, cs_mem_write, s);
176 cpu_register_physical_memory(base, CS_SIZE, cs_io_memory); 176 cpu_register_physical_memory(base, CS_SIZE, cs_io_memory);
177 register_savevm("cs4231", base, 1, cs_save, cs_load, s); 177 register_savevm("cs4231", base, 1, cs_save, cs_load, s);
178 - qemu_register_reset(cs_reset, s); 178 + qemu_register_reset(cs_reset, 0, s);
179 cs_reset(s); 179 cs_reset(s);
180 } 180 }
hw/cs4231a.c
@@ -656,7 +656,7 @@ int cs4231a_init (qemu_irq *pic) @@ -656,7 +656,7 @@ int cs4231a_init (qemu_irq *pic)
656 DMA_register_channel (s->dma, cs_dma_read, s); 656 DMA_register_channel (s->dma, cs_dma_read, s);
657 657
658 register_savevm ("cs4231a", 0, 1, cs_save, cs_load, s); 658 register_savevm ("cs4231a", 0, 1, cs_save, cs_load, s);
659 - qemu_register_reset (cs_reset, s); 659 + qemu_register_reset (cs_reset, 0, s);
660 cs_reset (s); 660 cs_reset (s);
661 661
662 AUD_register_card ("cs4231a", &s->card); 662 AUD_register_card ("cs4231a", &s->card);
hw/cuda.c
@@ -762,6 +762,6 @@ void cuda_init (int *cuda_mem_index, qemu_irq irq) @@ -762,6 +762,6 @@ void cuda_init (int *cuda_mem_index, qemu_irq irq)
762 s->adb_poll_timer = qemu_new_timer(vm_clock, cuda_adb_poll, s); 762 s->adb_poll_timer = qemu_new_timer(vm_clock, cuda_adb_poll, s);
763 *cuda_mem_index = cpu_register_io_memory(0, cuda_read, cuda_write, s); 763 *cuda_mem_index = cpu_register_io_memory(0, cuda_read, cuda_write, s);
764 register_savevm("cuda", -1, 1, cuda_save, cuda_load, s); 764 register_savevm("cuda", -1, 1, cuda_save, cuda_load, s);
765 - qemu_register_reset(cuda_reset, s); 765 + qemu_register_reset(cuda_reset, 0, s);
766 cuda_reset(s); 766 cuda_reset(s);
767 } 767 }
hw/dma.c
@@ -493,7 +493,7 @@ static void dma_init2(struct dma_cont *d, int base, int dshift, @@ -493,7 +493,7 @@ static void dma_init2(struct dma_cont *d, int base, int dshift,
493 register_ioport_read (base + ((i + 8) << dshift), 1, 1, 493 register_ioport_read (base + ((i + 8) << dshift), 1, 1,
494 read_cont, d); 494 read_cont, d);
495 } 495 }
496 - qemu_register_reset(dma_reset, d); 496 + qemu_register_reset(dma_reset, 0, d);
497 dma_reset(d); 497 dma_reset(d);
498 for (i = 0; i < ARRAY_SIZE (d->regs); ++i) { 498 for (i = 0; i < ARRAY_SIZE (d->regs); ++i) {
499 d->regs[i].transfer_handler = dma_phony_handler; 499 d->regs[i].transfer_handler = dma_phony_handler;
hw/dp8393x.c
@@ -892,7 +892,7 @@ void dp83932_init(NICInfo *nd, target_phys_addr_t base, int it_shift, @@ -892,7 +892,7 @@ void dp83932_init(NICInfo *nd, target_phys_addr_t base, int it_shift,
892 nic_receive, nic_can_receive, nic_cleanup, s); 892 nic_receive, nic_can_receive, nic_cleanup, s);
893 893
894 qemu_format_nic_info_str(s->vc, nd->macaddr); 894 qemu_format_nic_info_str(s->vc, nd->macaddr);
895 - qemu_register_reset(nic_reset, s); 895 + qemu_register_reset(nic_reset, 0, s);
896 nic_reset(s); 896 nic_reset(s);
897 897
898 s->mmio_index = cpu_register_io_memory(0, dp8393x_read, dp8393x_write, s); 898 s->mmio_index = cpu_register_io_memory(0, dp8393x_read, dp8393x_write, s);
hw/eccmemctl.c
@@ -334,7 +334,7 @@ void * ecc_init(target_phys_addr_t base, qemu_irq irq, uint32_t version) @@ -334,7 +334,7 @@ void * ecc_init(target_phys_addr_t base, qemu_irq irq, uint32_t version)
334 ecc_io_memory); 334 ecc_io_memory);
335 } 335 }
336 register_savevm("ECC", base, 3, ecc_save, ecc_load, s); 336 register_savevm("ECC", base, 3, ecc_save, ecc_load, s);
337 - qemu_register_reset(ecc_reset, s); 337 + qemu_register_reset(ecc_reset, 0, s);
338 ecc_reset(s); 338 ecc_reset(s);
339 return s; 339 return s;
340 } 340 }
hw/eepro100.c
@@ -1771,7 +1771,7 @@ static void nic_init(PCIDevice *pci_dev, uint32_t device) @@ -1771,7 +1771,7 @@ static void nic_init(PCIDevice *pci_dev, uint32_t device)
1771 1771
1772 qemu_format_nic_info_str(s->vc, s->macaddr); 1772 qemu_format_nic_info_str(s->vc, s->macaddr);
1773 1773
1774 - qemu_register_reset(nic_reset, s); 1774 + qemu_register_reset(nic_reset, 0, s);
1775 1775
1776 register_savevm(s->vc->model, -1, 3, nic_save, nic_load, s); 1776 register_savevm(s->vc->model, -1, 3, nic_save, nic_load, s);
1777 } 1777 }
hw/es1370.c
@@ -1055,7 +1055,7 @@ int es1370_init (PCIBus *bus) @@ -1055,7 +1055,7 @@ int es1370_init (PCIBus *bus)
1055 1055
1056 pci_register_io_region (&d->dev, 0, 256, PCI_ADDRESS_SPACE_IO, es1370_map); 1056 pci_register_io_region (&d->dev, 0, 256, PCI_ADDRESS_SPACE_IO, es1370_map);
1057 register_savevm ("es1370", 0, 2, es1370_save, es1370_load, s); 1057 register_savevm ("es1370", 0, 2, es1370_save, es1370_load, s);
1058 - qemu_register_reset (es1370_on_reset, s); 1058 + qemu_register_reset (es1370_on_reset, 0, s);
1059 1059
1060 AUD_register_card ("es1370", &s->card); 1060 AUD_register_card ("es1370", &s->card);
1061 es1370_reset (s); 1061 es1370_reset (s);
hw/escc.c
@@ -758,7 +758,7 @@ int escc_init(target_phys_addr_t base, qemu_irq irqA, qemu_irq irqB, @@ -758,7 +758,7 @@ int escc_init(target_phys_addr_t base, qemu_irq irqA, qemu_irq irqB,
758 register_savevm("escc", base, 2, escc_save, escc_load, s); 758 register_savevm("escc", base, 2, escc_save, escc_load, s);
759 else 759 else
760 register_savevm("escc", -1, 2, escc_save, escc_load, s); 760 register_savevm("escc", -1, 2, escc_save, escc_load, s);
761 - qemu_register_reset(escc_reset, s); 761 + qemu_register_reset(escc_reset, 0, s);
762 escc_reset(s); 762 escc_reset(s);
763 return escc_io_memory; 763 return escc_io_memory;
764 } 764 }
@@ -932,6 +932,6 @@ void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq, @@ -932,6 +932,6 @@ void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq,
932 "QEMU Sun Mouse"); 932 "QEMU Sun Mouse");
933 qemu_add_kbd_event_handler(sunkbd_event, &s->chn[1]); 933 qemu_add_kbd_event_handler(sunkbd_event, &s->chn[1]);
934 register_savevm("slavio_serial_mouse", base, 2, escc_save, escc_load, s); 934 register_savevm("slavio_serial_mouse", base, 2, escc_save, escc_load, s);
935 - qemu_register_reset(escc_reset, s); 935 + qemu_register_reset(escc_reset, 0, s);
936 escc_reset(s); 936 escc_reset(s);
937 } 937 }
hw/esp.c
@@ -682,7 +682,7 @@ static void esp_init1(SysBusDevice *dev) @@ -682,7 +682,7 @@ static void esp_init1(SysBusDevice *dev)
682 esp_reset(s); 682 esp_reset(s);
683 683
684 register_savevm("esp", -1, 3, esp_save, esp_load, s); 684 register_savevm("esp", -1, 3, esp_save, esp_load, s);
685 - qemu_register_reset(esp_reset, s); 685 + qemu_register_reset(esp_reset, 0, s);
686 686
687 qdev_init_irq_sink(&dev->qdev, parent_esp_reset, 1); 687 qdev_init_irq_sink(&dev->qdev, parent_esp_reset, 1);
688 688
hw/etraxfs.c
@@ -64,7 +64,7 @@ void bareetraxfs_init (ram_addr_t ram_size, @@ -64,7 +64,7 @@ void bareetraxfs_init (ram_addr_t ram_size,
64 cpu_model = "crisv32"; 64 cpu_model = "crisv32";
65 } 65 }
66 env = cpu_init(cpu_model); 66 env = cpu_init(cpu_model);
67 - qemu_register_reset(main_cpu_reset, env); 67 + qemu_register_reset(main_cpu_reset, 0, env);
68 68
69 /* allocate RAM */ 69 /* allocate RAM */
70 phys_ram = qemu_ram_alloc(ram_size); 70 phys_ram = qemu_ram_alloc(ram_size);
hw/etraxfs_timer.c
@@ -327,7 +327,7 @@ static void etraxfs_timer_init(SysBusDevice *dev) @@ -327,7 +327,7 @@ static void etraxfs_timer_init(SysBusDevice *dev)
327 timer_regs = cpu_register_io_memory(0, timer_read, timer_write, t); 327 timer_regs = cpu_register_io_memory(0, timer_read, timer_write, t);
328 sysbus_init_mmio(dev, 0x5c, timer_regs); 328 sysbus_init_mmio(dev, 0x5c, timer_regs);
329 329
330 - qemu_register_reset(etraxfs_timer_reset, t); 330 + qemu_register_reset(etraxfs_timer_reset, 0, t);
331 } 331 }
332 332
333 static void etraxfs_timer_register(void) 333 static void etraxfs_timer_register(void)
hw/fdc.c
@@ -1883,7 +1883,7 @@ static fdctrl_t *fdctrl_init_common (qemu_irq irq, int dma_chann, @@ -1883,7 +1883,7 @@ static fdctrl_t *fdctrl_init_common (qemu_irq irq, int dma_chann,
1883 } 1883 }
1884 fdctrl_external_reset(fdctrl); 1884 fdctrl_external_reset(fdctrl);
1885 register_savevm("fdc", io_base, 2, fdc_save, fdc_load, fdctrl); 1885 register_savevm("fdc", io_base, 2, fdc_save, fdc_load, fdctrl);
1886 - qemu_register_reset(fdctrl_external_reset, fdctrl); 1886 + qemu_register_reset(fdctrl_external_reset, 0, fdctrl);
1887 for (i = 0; i < MAX_FD; i++) { 1887 for (i = 0; i < MAX_FD; i++) {
1888 fd_revalidate(&fdctrl->drives[i]); 1888 fd_revalidate(&fdctrl->drives[i]);
1889 } 1889 }
hw/fw_cfg.c
@@ -281,7 +281,7 @@ void *fw_cfg_init(uint32_t ctl_port, uint32_t data_port, @@ -281,7 +281,7 @@ void *fw_cfg_init(uint32_t ctl_port, uint32_t data_port,
281 fw_cfg_add_i16(s, FW_CFG_NB_CPUS, (uint16_t)smp_cpus); 281 fw_cfg_add_i16(s, FW_CFG_NB_CPUS, (uint16_t)smp_cpus);
282 282
283 register_savevm("fw_cfg", -1, 1, fw_cfg_save, fw_cfg_load, s); 283 register_savevm("fw_cfg", -1, 1, fw_cfg_save, fw_cfg_load, s);
284 - qemu_register_reset(fw_cfg_reset, s); 284 + qemu_register_reset(fw_cfg_reset, 0, s);
285 fw_cfg_reset(s); 285 fw_cfg_reset(s);
286 286
287 return s; 287 return s;
hw/g364fb.c
@@ -598,7 +598,7 @@ int g364fb_mm_init(target_phys_addr_t vram_base, @@ -598,7 +598,7 @@ int g364fb_mm_init(target_phys_addr_t vram_base,
598 s->vram = qemu_get_ram_ptr(s->vram_offset); 598 s->vram = qemu_get_ram_ptr(s->vram_offset);
599 s->irq = irq; 599 s->irq = irq;
600 600
601 - qemu_register_reset(g364fb_reset, s); 601 + qemu_register_reset(g364fb_reset, 0, s);
602 register_savevm("g364fb", 0, 1, g364fb_save, g364fb_load, s); 602 register_savevm("g364fb", 0, 1, g364fb_save, g364fb_load, s);
603 g364fb_reset(s); 603 g364fb_reset(s);
604 604
hw/grackle_pci.c
@@ -176,7 +176,7 @@ PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic) @@ -176,7 +176,7 @@ PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic)
176 d->config[0x27] = 0x85; 176 d->config[0x27] = 0x85;
177 #endif 177 #endif
178 register_savevm("grackle", 0, 1, pci_grackle_save, pci_grackle_load, d); 178 register_savevm("grackle", 0, 1, pci_grackle_save, pci_grackle_load, d);
179 - qemu_register_reset(pci_grackle_reset, d); 179 + qemu_register_reset(pci_grackle_reset, 0, d);
180 pci_grackle_reset(d); 180 pci_grackle_reset(d);
181 181
182 return s->bus; 182 return s->bus;
hw/heathrow_pic.c
@@ -230,7 +230,7 @@ qemu_irq *heathrow_pic_init(int *pmem_index, @@ -230,7 +230,7 @@ qemu_irq *heathrow_pic_init(int *pmem_index,
230 230
231 register_savevm("heathrow_pic", -1, 1, heathrow_pic_save, 231 register_savevm("heathrow_pic", -1, 1, heathrow_pic_save,
232 heathrow_pic_load, s); 232 heathrow_pic_load, s);
233 - qemu_register_reset(heathrow_pic_reset, s); 233 + qemu_register_reset(heathrow_pic_reset, 0, s);
234 heathrow_pic_reset(s); 234 heathrow_pic_reset(s);
235 return qemu_allocate_irqs(heathrow_pic_set_irq, s, 64); 235 return qemu_allocate_irqs(heathrow_pic_set_irq, s, 64);
236 } 236 }
hw/hpet.c
@@ -580,7 +580,7 @@ void hpet_init(qemu_irq *irq) { @@ -580,7 +580,7 @@ void hpet_init(qemu_irq *irq) {
580 } 580 }
581 hpet_reset(s); 581 hpet_reset(s);
582 register_savevm("hpet", -1, 1, hpet_save, hpet_load, s); 582 register_savevm("hpet", -1, 1, hpet_save, hpet_load, s);
583 - qemu_register_reset(hpet_reset, s); 583 + qemu_register_reset(hpet_reset, 0, s);
584 /* HPET Area */ 584 /* HPET Area */
585 iomemtype = cpu_register_io_memory(0, hpet_ram_read, 585 iomemtype = cpu_register_io_memory(0, hpet_ram_read,
586 hpet_ram_write, s); 586 hpet_ram_write, s);
@@ -258,7 +258,7 @@ void unregister_savevm(const char *idstr, void *opaque); @@ -258,7 +258,7 @@ void unregister_savevm(const char *idstr, void *opaque);
258 258
259 typedef void QEMUResetHandler(void *opaque); 259 typedef void QEMUResetHandler(void *opaque);
260 260
261 -void qemu_register_reset(QEMUResetHandler *func, void *opaque); 261 +void qemu_register_reset(QEMUResetHandler *func, int order, void *opaque);
262 262
263 /* handler to set the boot_device for a specific type of QEMUMachine */ 263 /* handler to set the boot_device for a specific type of QEMUMachine */
264 /* return 0 if success */ 264 /* return 0 if success */
hw/i8254.c
@@ -497,7 +497,7 @@ PITState *pit_init(int base, qemu_irq irq) @@ -497,7 +497,7 @@ PITState *pit_init(int base, qemu_irq irq)
497 497
498 register_savevm("i8254", base, 1, pit_save, pit_load, pit); 498 register_savevm("i8254", base, 1, pit_save, pit_load, pit);
499 499
500 - qemu_register_reset(pit_reset, pit); 500 + qemu_register_reset(pit_reset, 0, pit);
501 register_ioport_write(base, 4, 1, pit_ioport_write, pit); 501 register_ioport_write(base, 4, 1, pit_ioport_write, pit);
502 register_ioport_read(base, 3, 1, pit_ioport_read, pit); 502 register_ioport_read(base, 3, 1, pit_ioport_read, pit);
503 503
hw/i8259.c
@@ -508,7 +508,7 @@ static void pic_init1(int io_addr, int elcr_addr, PicState *s) @@ -508,7 +508,7 @@ static void pic_init1(int io_addr, int elcr_addr, PicState *s)
508 register_ioport_read(elcr_addr, 1, 1, elcr_ioport_read, s); 508 register_ioport_read(elcr_addr, 1, 1, elcr_ioport_read, s);
509 } 509 }
510 register_savevm("i8259", io_addr, 1, pic_save, pic_load, s); 510 register_savevm("i8259", io_addr, 1, pic_save, pic_load, s);
511 - qemu_register_reset(pic_reset, s); 511 + qemu_register_reset(pic_reset, 0, s);
512 } 512 }
513 513
514 void pic_info(Monitor *mon) 514 void pic_info(Monitor *mon)
hw/ide.c
@@ -3330,7 +3330,7 @@ void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, @@ -3330,7 +3330,7 @@ void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table,
3330 ide_init2(&d->ide_if[2], hd_table[2], hd_table[3], irq[1]); 3330 ide_init2(&d->ide_if[2], hd_table[2], hd_table[3], irq[1]);
3331 3331
3332 register_savevm("ide", 0, 2, pci_ide_save, pci_ide_load, d); 3332 register_savevm("ide", 0, 2, pci_ide_save, pci_ide_load, d);
3333 - qemu_register_reset(cmd646_reset, d); 3333 + qemu_register_reset(cmd646_reset, 0, d);
3334 cmd646_reset(d); 3334 cmd646_reset(d);
3335 } 3335 }
3336 3336
@@ -3373,7 +3373,7 @@ void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, @@ -3373,7 +3373,7 @@ void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn,
3373 pci_config_set_class(pci_conf, PCI_CLASS_STORAGE_IDE); 3373 pci_config_set_class(pci_conf, PCI_CLASS_STORAGE_IDE);
3374 pci_conf[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_NORMAL; // header_type 3374 pci_conf[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_NORMAL; // header_type
3375 3375
3376 - qemu_register_reset(piix3_reset, d); 3376 + qemu_register_reset(piix3_reset, 0, d);
3377 piix3_reset(d); 3377 piix3_reset(d);
3378 3378
3379 pci_register_io_region((PCIDevice *)d, 4, 0x10, 3379 pci_register_io_region((PCIDevice *)d, 4, 0x10,
@@ -3413,7 +3413,7 @@ void pci_piix4_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, @@ -3413,7 +3413,7 @@ void pci_piix4_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn,
3413 pci_config_set_class(pci_conf, PCI_CLASS_STORAGE_IDE); 3413 pci_config_set_class(pci_conf, PCI_CLASS_STORAGE_IDE);
3414 pci_conf[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_NORMAL; // header_type 3414 pci_conf[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_NORMAL; // header_type
3415 3415
3416 - qemu_register_reset(piix3_reset, d); 3416 + qemu_register_reset(piix3_reset, 0, d);
3417 piix3_reset(d); 3417 piix3_reset(d);
3418 3418
3419 pci_register_io_region((PCIDevice *)d, 4, 0x10, 3419 pci_register_io_region((PCIDevice *)d, 4, 0x10,
@@ -3754,7 +3754,7 @@ int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq, @@ -3754,7 +3754,7 @@ int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq,
3754 pmac_ide_memory = cpu_register_io_memory(0, pmac_ide_read, 3754 pmac_ide_memory = cpu_register_io_memory(0, pmac_ide_read,
3755 pmac_ide_write, d); 3755 pmac_ide_write, d);
3756 register_savevm("ide", 0, 1, pmac_ide_save, pmac_ide_load, d); 3756 register_savevm("ide", 0, 1, pmac_ide_save, pmac_ide_load, d);
3757 - qemu_register_reset(pmac_ide_reset, d); 3757 + qemu_register_reset(pmac_ide_reset, 0, d);
3758 pmac_ide_reset(d); 3758 pmac_ide_reset(d);
3759 3759
3760 return pmac_ide_memory; 3760 return pmac_ide_memory;
hw/ioapic.c
@@ -255,7 +255,7 @@ IOAPICState *ioapic_init(void) @@ -255,7 +255,7 @@ IOAPICState *ioapic_init(void)
255 cpu_register_physical_memory(0xfec00000, 0x1000, io_memory); 255 cpu_register_physical_memory(0xfec00000, 0x1000, io_memory);
256 256
257 register_savevm("ioapic", 0, 1, ioapic_save, ioapic_load, s); 257 register_savevm("ioapic", 0, 1, ioapic_save, ioapic_load, s);
258 - qemu_register_reset(ioapic_reset, s); 258 + qemu_register_reset(ioapic_reset, 0, s);
259 259
260 return s; 260 return s;
261 } 261 }
hw/iommu.c
@@ -380,7 +380,7 @@ void *iommu_init(target_phys_addr_t addr, uint32_t version, qemu_irq irq) @@ -380,7 +380,7 @@ void *iommu_init(target_phys_addr_t addr, uint32_t version, qemu_irq irq)
380 cpu_register_physical_memory(addr, IOMMU_NREGS * 4, iommu_io_memory); 380 cpu_register_physical_memory(addr, IOMMU_NREGS * 4, iommu_io_memory);
381 381
382 register_savevm("iommu", addr, 2, iommu_save, iommu_load, s); 382 register_savevm("iommu", addr, 2, iommu_save, iommu_load, s);
383 - qemu_register_reset(iommu_reset, s); 383 + qemu_register_reset(iommu_reset, 0, s);
384 iommu_reset(s); 384 iommu_reset(s);
385 return s; 385 return s;
386 } 386 }
hw/lm832x.c
@@ -501,7 +501,7 @@ static void lm8323_init(i2c_slave *i2c) @@ -501,7 +501,7 @@ static void lm8323_init(i2c_slave *i2c)
501 501
502 lm_kbd_reset(s); 502 lm_kbd_reset(s);
503 503
504 - qemu_register_reset((void *) lm_kbd_reset, s); 504 + qemu_register_reset((void *) lm_kbd_reset, 0, s);
505 register_savevm("LM8323", -1, 0, lm_kbd_save, lm_kbd_load, s); 505 register_savevm("LM8323", -1, 0, lm_kbd_save, lm_kbd_load, s);
506 } 506 }
507 507
hw/m48t59.c
@@ -641,7 +641,7 @@ m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base, @@ -641,7 +641,7 @@ m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base,
641 } 641 }
642 qemu_get_timedate(&s->alarm, 0); 642 qemu_get_timedate(&s->alarm, 0);
643 643
644 - qemu_register_reset(m48t59_reset, s); 644 + qemu_register_reset(m48t59_reset, 0, s);
645 save_base = mem_base ? mem_base : io_base; 645 save_base = mem_base ? mem_base : io_base;
646 register_savevm("m48t59", save_base, 1, m48t59_save, m48t59_load, s); 646 register_savevm("m48t59", save_base, 1, m48t59_save, m48t59_load, s);
647 647
hw/mac_dbdma.c
@@ -839,7 +839,7 @@ void* DBDMA_init (int *dbdma_mem_index) @@ -839,7 +839,7 @@ void* DBDMA_init (int *dbdma_mem_index)
839 839
840 *dbdma_mem_index = cpu_register_io_memory(0, dbdma_read, dbdma_write, s); 840 *dbdma_mem_index = cpu_register_io_memory(0, dbdma_read, dbdma_write, s);
841 register_savevm("dbdma", -1, 1, dbdma_save, dbdma_load, s); 841 register_savevm("dbdma", -1, 1, dbdma_save, dbdma_load, s);
842 - qemu_register_reset(dbdma_reset, s); 842 + qemu_register_reset(dbdma_reset, 0, s);
843 dbdma_reset(s); 843 dbdma_reset(s);
844 844
845 dbdma_bh = qemu_bh_new(DBDMA_run_bh, s); 845 dbdma_bh = qemu_bh_new(DBDMA_run_bh, s);
hw/mac_nvram.c
@@ -142,7 +142,7 @@ MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size, @@ -142,7 +142,7 @@ MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size,
142 *mem_index = s->mem_index; 142 *mem_index = s->mem_index;
143 register_savevm("macio_nvram", -1, 1, macio_nvram_save, macio_nvram_load, 143 register_savevm("macio_nvram", -1, 1, macio_nvram_save, macio_nvram_load,
144 s); 144 s);
145 - qemu_register_reset(macio_nvram_reset, s); 145 + qemu_register_reset(macio_nvram_reset, 0, s);
146 macio_nvram_reset(s); 146 macio_nvram_reset(s);
147 147
148 return s; 148 return s;
hw/mips_jazz.c
@@ -146,7 +146,7 @@ void mips_jazz_init (ram_addr_t ram_size, @@ -146,7 +146,7 @@ void mips_jazz_init (ram_addr_t ram_size,
146 fprintf(stderr, "Unable to find CPU definition\n"); 146 fprintf(stderr, "Unable to find CPU definition\n");
147 exit(1); 147 exit(1);
148 } 148 }
149 - qemu_register_reset(main_cpu_reset, env); 149 + qemu_register_reset(main_cpu_reset, 0, env);
150 150
151 /* allocate RAM */ 151 /* allocate RAM */
152 ram_offset = qemu_ram_alloc(ram_size); 152 ram_offset = qemu_ram_alloc(ram_size);
hw/mips_malta.c
@@ -447,7 +447,7 @@ static MaltaFPGAState *malta_fpga_init(target_phys_addr_t base, qemu_irq uart_ir @@ -447,7 +447,7 @@ static MaltaFPGAState *malta_fpga_init(target_phys_addr_t base, qemu_irq uart_ir
447 s->uart = serial_mm_init(base + 0x900, 3, uart_irq, 230400, uart_chr, 1); 447 s->uart = serial_mm_init(base + 0x900, 3, uart_irq, 230400, uart_chr, 1);
448 448
449 malta_fpga_reset(s); 449 malta_fpga_reset(s);
450 - qemu_register_reset(malta_fpga_reset, s); 450 + qemu_register_reset(malta_fpga_reset, 0, s);
451 451
452 return s; 452 return s;
453 } 453 }
@@ -792,7 +792,7 @@ void mips_malta_init (ram_addr_t ram_size, @@ -792,7 +792,7 @@ void mips_malta_init (ram_addr_t ram_size,
792 fprintf(stderr, "Unable to find CPU definition\n"); 792 fprintf(stderr, "Unable to find CPU definition\n");
793 exit(1); 793 exit(1);
794 } 794 }
795 - qemu_register_reset(main_cpu_reset, env); 795 + qemu_register_reset(main_cpu_reset, 0, env);
796 796
797 /* allocate RAM */ 797 /* allocate RAM */
798 if (ram_size > (256 << 20)) { 798 if (ram_size > (256 << 20)) {
hw/mips_mipssim.c
@@ -126,7 +126,7 @@ mips_mipssim_init (ram_addr_t ram_size, @@ -126,7 +126,7 @@ mips_mipssim_init (ram_addr_t ram_size,
126 fprintf(stderr, "Unable to find CPU definition\n"); 126 fprintf(stderr, "Unable to find CPU definition\n");
127 exit(1); 127 exit(1);
128 } 128 }
129 - qemu_register_reset(main_cpu_reset, env); 129 + qemu_register_reset(main_cpu_reset, 0, env);
130 130
131 /* Allocate RAM. */ 131 /* Allocate RAM. */
132 ram_offset = qemu_ram_alloc(ram_size); 132 ram_offset = qemu_ram_alloc(ram_size);
hw/mips_r4k.c
@@ -171,7 +171,7 @@ void mips_r4k_init (ram_addr_t ram_size, @@ -171,7 +171,7 @@ void mips_r4k_init (ram_addr_t ram_size,
171 fprintf(stderr, "Unable to find CPU definition\n"); 171 fprintf(stderr, "Unable to find CPU definition\n");
172 exit(1); 172 exit(1);
173 } 173 }
174 - qemu_register_reset(main_cpu_reset, env); 174 + qemu_register_reset(main_cpu_reset, 0, env);
175 175
176 /* allocate RAM */ 176 /* allocate RAM */
177 if (ram_size > (256 << 20)) { 177 if (ram_size > (256 << 20)) {
hw/musicpal.c
@@ -441,7 +441,7 @@ static i2c_interface *musicpal_audio_init(qemu_irq irq) @@ -441,7 +441,7 @@ static i2c_interface *musicpal_audio_init(qemu_irq irq)
441 musicpal_audio_writefn, s); 441 musicpal_audio_writefn, s);
442 cpu_register_physical_memory(MP_AUDIO_BASE, MP_AUDIO_SIZE, iomemtype); 442 cpu_register_physical_memory(MP_AUDIO_BASE, MP_AUDIO_SIZE, iomemtype);
443 443
444 - qemu_register_reset(musicpal_audio_reset, s); 444 + qemu_register_reset(musicpal_audio_reset, 0, s);
445 445
446 return i2c; 446 return i2c;
447 } 447 }
@@ -1046,7 +1046,7 @@ static void mv88w8618_pic_init(SysBusDevice *dev) @@ -1046,7 +1046,7 @@ static void mv88w8618_pic_init(SysBusDevice *dev)
1046 mv88w8618_pic_writefn, s); 1046 mv88w8618_pic_writefn, s);
1047 sysbus_init_mmio(dev, MP_PIC_SIZE, iomemtype); 1047 sysbus_init_mmio(dev, MP_PIC_SIZE, iomemtype);
1048 1048
1049 - qemu_register_reset(mv88w8618_pic_reset, s); 1049 + qemu_register_reset(mv88w8618_pic_reset, 0, s);
1050 } 1050 }
1051 1051
1052 /* PIT register offsets */ 1052 /* PIT register offsets */
hw/nseries.c
@@ -1329,7 +1329,7 @@ static void n8x0_init(ram_addr_t ram_size, const char *boot_device, @@ -1329,7 +1329,7 @@ static void n8x0_init(ram_addr_t ram_size, const char *boot_device,
1329 binfo->initrd_filename = initrd_filename; 1329 binfo->initrd_filename = initrd_filename;
1330 arm_load_kernel(s->cpu->env, binfo); 1330 arm_load_kernel(s->cpu->env, binfo);
1331 1331
1332 - qemu_register_reset(n8x0_boot_init, s); 1332 + qemu_register_reset(n8x0_boot_init, 0, s);
1333 n8x0_boot_init(s); 1333 n8x0_boot_init(s);
1334 } 1334 }
1335 1335
hw/omap1.c
@@ -4797,7 +4797,7 @@ struct omap_mpu_state_s *omap310_mpu_init(unsigned long sdram_size, @@ -4797,7 +4797,7 @@ struct omap_mpu_state_s *omap310_mpu_init(unsigned long sdram_size,
4797 omap_setup_dsp_mapping(omap15xx_dsp_mm); 4797 omap_setup_dsp_mapping(omap15xx_dsp_mm);
4798 omap_setup_mpui_io(s); 4798 omap_setup_mpui_io(s);
4799 4799
4800 - qemu_register_reset(omap1_mpu_reset, s); 4800 + qemu_register_reset(omap1_mpu_reset, 0, s);
4801 4801
4802 return s; 4802 return s;
4803 } 4803 }
hw/omap2.c
@@ -4868,7 +4868,7 @@ struct omap_mpu_state_s *omap2420_mpu_init(unsigned long sdram_size, @@ -4868,7 +4868,7 @@ struct omap_mpu_state_s *omap2420_mpu_init(unsigned long sdram_size,
4868 * GPMC registers 6800a000 6800afff 4868 * GPMC registers 6800a000 6800afff
4869 */ 4869 */
4870 4870
4871 - qemu_register_reset(omap2_mpu_reset, s); 4871 + qemu_register_reset(omap2_mpu_reset, 0, s);
4872 4872
4873 return s; 4873 return s;
4874 } 4874 }
hw/openpic.c
@@ -1249,7 +1249,7 @@ qemu_irq *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus, @@ -1249,7 +1249,7 @@ qemu_irq *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus,
1249 opp->need_swap = 1; 1249 opp->need_swap = 1;
1250 1250
1251 register_savevm("openpic", 0, 2, openpic_save, openpic_load, opp); 1251 register_savevm("openpic", 0, 2, openpic_save, openpic_load, opp);
1252 - qemu_register_reset(openpic_reset, opp); 1252 + qemu_register_reset(openpic_reset, 0, opp);
1253 1253
1254 opp->irq_raise = openpic_irq_raise; 1254 opp->irq_raise = openpic_irq_raise;
1255 opp->reset = openpic_reset; 1255 opp->reset = openpic_reset;
@@ -1709,7 +1709,7 @@ qemu_irq *mpic_init (target_phys_addr_t base, int nb_cpus, @@ -1709,7 +1709,7 @@ qemu_irq *mpic_init (target_phys_addr_t base, int nb_cpus,
1709 mpp->reset = mpic_reset; 1709 mpp->reset = mpic_reset;
1710 1710
1711 register_savevm("mpic", 0, 2, openpic_save, openpic_load, mpp); 1711 register_savevm("mpic", 0, 2, openpic_save, openpic_load, mpp);
1712 - qemu_register_reset(mpic_reset, mpp); 1712 + qemu_register_reset(mpic_reset, 0, mpp);
1713 mpp->reset(mpp); 1713 mpp->reset(mpp);
1714 1714
1715 return qemu_allocate_irqs(openpic_set_irq, mpp, mpp->max_irq); 1715 return qemu_allocate_irqs(openpic_set_irq, mpp, mpp->max_irq);
hw/parallel.c
@@ -448,7 +448,7 @@ ParallelState *parallel_init(int base, qemu_irq irq, CharDriverState *chr) @@ -448,7 +448,7 @@ ParallelState *parallel_init(int base, qemu_irq irq, CharDriverState *chr)
448 s->irq = irq; 448 s->irq = irq;
449 s->chr = chr; 449 s->chr = chr;
450 parallel_reset(s); 450 parallel_reset(s);
451 - qemu_register_reset(parallel_reset, s); 451 + qemu_register_reset(parallel_reset, 0, s);
452 452
453 if (qemu_chr_ioctl(chr, CHR_IOCTL_PP_READ_STATUS, &dummy) == 0) { 453 if (qemu_chr_ioctl(chr, CHR_IOCTL_PP_READ_STATUS, &dummy) == 0) {
454 s->hw_driver = 1; 454 s->hw_driver = 1;
@@ -541,7 +541,7 @@ ParallelState *parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq @@ -541,7 +541,7 @@ ParallelState *parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq
541 s->chr = chr; 541 s->chr = chr;
542 s->it_shift = it_shift; 542 s->it_shift = it_shift;
543 parallel_reset(s); 543 parallel_reset(s);
544 - qemu_register_reset(parallel_reset, s); 544 + qemu_register_reset(parallel_reset, 0, s);
545 545
546 io_sw = cpu_register_io_memory(0, parallel_mm_read_sw, parallel_mm_write_sw, s); 546 io_sw = cpu_register_io_memory(0, parallel_mm_read_sw, parallel_mm_write_sw, s);
547 cpu_register_physical_memory(base, 8 << it_shift, io_sw); 547 cpu_register_physical_memory(base, 8 << it_shift, io_sw);
@@ -81,7 +81,7 @@ static void option_rom_setup_reset(target_phys_addr_t addr, unsigned size) @@ -81,7 +81,7 @@ static void option_rom_setup_reset(target_phys_addr_t addr, unsigned size)
81 cpu_physical_memory_read(addr, rrd->data, size); 81 cpu_physical_memory_read(addr, rrd->data, size);
82 rrd->addr = addr; 82 rrd->addr = addr;
83 rrd->size = size; 83 rrd->size = size;
84 - qemu_register_reset(option_rom_reset, rrd); 84 + qemu_register_reset(option_rom_reset, 0, rrd);
85 } 85 }
86 86
87 static void ioport80_write(void *opaque, uint32_t addr, uint32_t data) 87 static void ioport80_write(void *opaque, uint32_t addr, uint32_t data)
@@ -875,7 +875,7 @@ static void pc_init1(ram_addr_t ram_size, @@ -875,7 +875,7 @@ static void pc_init1(ram_addr_t ram_size,
875 /* XXX: enable it in all cases */ 875 /* XXX: enable it in all cases */
876 env->cpuid_features |= CPUID_APIC; 876 env->cpuid_features |= CPUID_APIC;
877 } 877 }
878 - qemu_register_reset(main_cpu_reset, env); 878 + qemu_register_reset(main_cpu_reset, 0, env);
879 if (pci_enabled) { 879 if (pci_enabled) {
880 apic_init(env); 880 apic_init(env);
881 } 881 }
hw/pckbd.c
@@ -381,7 +381,7 @@ void i8042_init(qemu_irq kbd_irq, qemu_irq mouse_irq, uint32_t io_base) @@ -381,7 +381,7 @@ void i8042_init(qemu_irq kbd_irq, qemu_irq mouse_irq, uint32_t io_base)
381 #ifdef TARGET_I386 381 #ifdef TARGET_I386
382 vmmouse_init(s->mouse); 382 vmmouse_init(s->mouse);
383 #endif 383 #endif
384 - qemu_register_reset(kbd_reset, s); 384 + qemu_register_reset(kbd_reset, 0, s);
385 } 385 }
386 386
387 /* Memory mapped interface */ 387 /* Memory mapped interface */
@@ -438,5 +438,5 @@ void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq, @@ -438,5 +438,5 @@ void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
438 #ifdef TARGET_I386 438 #ifdef TARGET_I386
439 vmmouse_init(s->mouse); 439 vmmouse_init(s->mouse);
440 #endif 440 #endif
441 - qemu_register_reset(kbd_reset, s); 441 + qemu_register_reset(kbd_reset, 0, s);
442 } 442 }
hw/pl181.c
@@ -458,7 +458,7 @@ static void pl181_init(SysBusDevice *dev) @@ -458,7 +458,7 @@ static void pl181_init(SysBusDevice *dev)
458 sysbus_init_irq(dev, &s->irq[1]); 458 sysbus_init_irq(dev, &s->irq[1]);
459 bd = qdev_init_bdrv(&dev->qdev, IF_SD); 459 bd = qdev_init_bdrv(&dev->qdev, IF_SD);
460 s->card = sd_init(bd, 0); 460 s->card = sd_init(bd, 0);
461 - qemu_register_reset(pl181_reset, s); 461 + qemu_register_reset(pl181_reset, 0, s);
462 pl181_reset(s); 462 pl181_reset(s);
463 /* ??? Save/restore. */ 463 /* ??? Save/restore. */
464 } 464 }
hw/ppc405_boards.c
@@ -165,7 +165,7 @@ static void ref405ep_fpga_init (uint32_t base) @@ -165,7 +165,7 @@ static void ref405ep_fpga_init (uint32_t base)
165 ref405ep_fpga_write, fpga); 165 ref405ep_fpga_write, fpga);
166 cpu_register_physical_memory(base, 0x00000100, fpga_memory); 166 cpu_register_physical_memory(base, 0x00000100, fpga_memory);
167 ref405ep_fpga_reset(fpga); 167 ref405ep_fpga_reset(fpga);
168 - qemu_register_reset(&ref405ep_fpga_reset, fpga); 168 + qemu_register_reset(&ref405ep_fpga_reset, 0, fpga);
169 } 169 }
170 170
171 static void ref405ep_init (ram_addr_t ram_size, 171 static void ref405ep_init (ram_addr_t ram_size,
@@ -483,7 +483,7 @@ static void taihu_cpld_init (uint32_t base) @@ -483,7 +483,7 @@ static void taihu_cpld_init (uint32_t base)
483 taihu_cpld_write, cpld); 483 taihu_cpld_write, cpld);
484 cpu_register_physical_memory(base, 0x00000100, cpld_memory); 484 cpu_register_physical_memory(base, 0x00000100, cpld_memory);
485 taihu_cpld_reset(cpld); 485 taihu_cpld_reset(cpld);
486 - qemu_register_reset(&taihu_cpld_reset, cpld); 486 + qemu_register_reset(&taihu_cpld_reset, 0, cpld);
487 } 487 }
488 488
489 static void taihu_405ep_init(ram_addr_t ram_size, 489 static void taihu_405ep_init(ram_addr_t ram_size,
hw/ppc405_uc.c
@@ -173,7 +173,7 @@ void ppc4xx_plb_init (CPUState *env) @@ -173,7 +173,7 @@ void ppc4xx_plb_init (CPUState *env)
173 ppc_dcr_register(env, PLB0_BEAR, plb, &dcr_read_plb, &dcr_write_plb); 173 ppc_dcr_register(env, PLB0_BEAR, plb, &dcr_read_plb, &dcr_write_plb);
174 ppc_dcr_register(env, PLB0_BESR, plb, &dcr_read_plb, &dcr_write_plb); 174 ppc_dcr_register(env, PLB0_BESR, plb, &dcr_read_plb, &dcr_write_plb);
175 ppc4xx_plb_reset(plb); 175 ppc4xx_plb_reset(plb);
176 - qemu_register_reset(ppc4xx_plb_reset, plb); 176 + qemu_register_reset(ppc4xx_plb_reset, 0, plb);
177 } 177 }
178 178
179 /*****************************************************************************/ 179 /*****************************************************************************/
@@ -249,7 +249,7 @@ void ppc4xx_pob_init (CPUState *env) @@ -249,7 +249,7 @@ void ppc4xx_pob_init (CPUState *env)
249 ppc_dcr_register(env, POB0_BEAR, pob, &dcr_read_pob, &dcr_write_pob); 249 ppc_dcr_register(env, POB0_BEAR, pob, &dcr_read_pob, &dcr_write_pob);
250 ppc_dcr_register(env, POB0_BESR0, pob, &dcr_read_pob, &dcr_write_pob); 250 ppc_dcr_register(env, POB0_BESR0, pob, &dcr_read_pob, &dcr_write_pob);
251 ppc_dcr_register(env, POB0_BESR1, pob, &dcr_read_pob, &dcr_write_pob); 251 ppc_dcr_register(env, POB0_BESR1, pob, &dcr_read_pob, &dcr_write_pob);
252 - qemu_register_reset(ppc4xx_pob_reset, pob); 252 + qemu_register_reset(ppc4xx_pob_reset, 0, pob);
253 ppc4xx_pob_reset(env); 253 ppc4xx_pob_reset(env);
254 } 254 }
255 255
@@ -386,7 +386,7 @@ void ppc4xx_opba_init (CPUState *env, ppc4xx_mmio_t *mmio, @@ -386,7 +386,7 @@ void ppc4xx_opba_init (CPUState *env, ppc4xx_mmio_t *mmio,
386 #endif 386 #endif
387 ppc4xx_mmio_register(env, mmio, offset, 0x002, 387 ppc4xx_mmio_register(env, mmio, offset, 0x002,
388 opba_read, opba_write, opba); 388 opba_read, opba_write, opba);
389 - qemu_register_reset(ppc4xx_opba_reset, opba); 389 + qemu_register_reset(ppc4xx_opba_reset, 0, opba);
390 ppc4xx_opba_reset(opba); 390 ppc4xx_opba_reset(opba);
391 } 391 }
392 392
@@ -580,7 +580,7 @@ void ppc405_ebc_init (CPUState *env) @@ -580,7 +580,7 @@ void ppc405_ebc_init (CPUState *env)
580 580
581 ebc = qemu_mallocz(sizeof(ppc4xx_ebc_t)); 581 ebc = qemu_mallocz(sizeof(ppc4xx_ebc_t));
582 ebc_reset(ebc); 582 ebc_reset(ebc);
583 - qemu_register_reset(&ebc_reset, ebc); 583 + qemu_register_reset(&ebc_reset, 0, ebc);
584 ppc_dcr_register(env, EBC0_CFGADDR, 584 ppc_dcr_register(env, EBC0_CFGADDR,
585 ebc, &dcr_read_ebc, &dcr_write_ebc); 585 ebc, &dcr_read_ebc, &dcr_write_ebc);
586 ppc_dcr_register(env, EBC0_CFGDATA, 586 ppc_dcr_register(env, EBC0_CFGDATA,
@@ -672,7 +672,7 @@ void ppc405_dma_init (CPUState *env, qemu_irq irqs[4]) @@ -672,7 +672,7 @@ void ppc405_dma_init (CPUState *env, qemu_irq irqs[4])
672 dma = qemu_mallocz(sizeof(ppc405_dma_t)); 672 dma = qemu_mallocz(sizeof(ppc405_dma_t));
673 memcpy(dma->irqs, irqs, 4 * sizeof(qemu_irq)); 673 memcpy(dma->irqs, irqs, 4 * sizeof(qemu_irq));
674 ppc405_dma_reset(dma); 674 ppc405_dma_reset(dma);
675 - qemu_register_reset(&ppc405_dma_reset, dma); 675 + qemu_register_reset(&ppc405_dma_reset, 0, dma);
676 ppc_dcr_register(env, DMA0_CR0, 676 ppc_dcr_register(env, DMA0_CR0,
677 dma, &dcr_read_dma, &dcr_write_dma); 677 dma, &dcr_read_dma, &dcr_write_dma);
678 ppc_dcr_register(env, DMA0_CT0, 678 ppc_dcr_register(env, DMA0_CT0,
@@ -837,7 +837,7 @@ void ppc405_gpio_init (CPUState *env, ppc4xx_mmio_t *mmio, @@ -837,7 +837,7 @@ void ppc405_gpio_init (CPUState *env, ppc4xx_mmio_t *mmio,
837 gpio = qemu_mallocz(sizeof(ppc405_gpio_t)); 837 gpio = qemu_mallocz(sizeof(ppc405_gpio_t));
838 gpio->base = offset; 838 gpio->base = offset;
839 ppc405_gpio_reset(gpio); 839 ppc405_gpio_reset(gpio);
840 - qemu_register_reset(&ppc405_gpio_reset, gpio); 840 + qemu_register_reset(&ppc405_gpio_reset, 0, gpio);
841 #ifdef DEBUG_GPIO 841 #ifdef DEBUG_GPIO
842 printf("%s: offset " PADDRX "\n", __func__, offset); 842 printf("%s: offset " PADDRX "\n", __func__, offset);
843 #endif 843 #endif
@@ -1028,7 +1028,7 @@ void ppc405_ocm_init (CPUState *env) @@ -1028,7 +1028,7 @@ void ppc405_ocm_init (CPUState *env)
1028 ocm = qemu_mallocz(sizeof(ppc405_ocm_t)); 1028 ocm = qemu_mallocz(sizeof(ppc405_ocm_t));
1029 ocm->offset = qemu_ram_alloc(4096); 1029 ocm->offset = qemu_ram_alloc(4096);
1030 ocm_reset(ocm); 1030 ocm_reset(ocm);
1031 - qemu_register_reset(&ocm_reset, ocm); 1031 + qemu_register_reset(&ocm_reset, 0, ocm);
1032 ppc_dcr_register(env, OCM0_ISARC, 1032 ppc_dcr_register(env, OCM0_ISARC,
1033 ocm, &dcr_read_ocm, &dcr_write_ocm); 1033 ocm, &dcr_read_ocm, &dcr_write_ocm);
1034 ppc_dcr_register(env, OCM0_ISACNTL, 1034 ppc_dcr_register(env, OCM0_ISACNTL,
@@ -1280,7 +1280,7 @@ void ppc405_i2c_init (CPUState *env, ppc4xx_mmio_t *mmio, @@ -1280,7 +1280,7 @@ void ppc405_i2c_init (CPUState *env, ppc4xx_mmio_t *mmio,
1280 #endif 1280 #endif
1281 ppc4xx_mmio_register(env, mmio, offset, 0x011, 1281 ppc4xx_mmio_register(env, mmio, offset, 0x011,
1282 i2c_read, i2c_write, i2c); 1282 i2c_read, i2c_write, i2c);
1283 - qemu_register_reset(ppc4xx_i2c_reset, i2c); 1283 + qemu_register_reset(ppc4xx_i2c_reset, 0, i2c);
1284 } 1284 }
1285 1285
1286 /*****************************************************************************/ 1286 /*****************************************************************************/
@@ -1562,7 +1562,7 @@ void ppc4xx_gpt_init (CPUState *env, ppc4xx_mmio_t *mmio, @@ -1562,7 +1562,7 @@ void ppc4xx_gpt_init (CPUState *env, ppc4xx_mmio_t *mmio,
1562 #endif 1562 #endif
1563 ppc4xx_mmio_register(env, mmio, offset, 0x0D4, 1563 ppc4xx_mmio_register(env, mmio, offset, 0x0D4,
1564 gpt_read, gpt_write, gpt); 1564 gpt_read, gpt_write, gpt);
1565 - qemu_register_reset(ppc4xx_gpt_reset, gpt); 1565 + qemu_register_reset(ppc4xx_gpt_reset, 0, gpt);
1566 } 1566 }
1567 1567
1568 /*****************************************************************************/ 1568 /*****************************************************************************/
@@ -1787,7 +1787,7 @@ void ppc405_mal_init (CPUState *env, qemu_irq irqs[4]) @@ -1787,7 +1787,7 @@ void ppc405_mal_init (CPUState *env, qemu_irq irqs[4])
1787 for (i = 0; i < 4; i++) 1787 for (i = 0; i < 4; i++)
1788 mal->irqs[i] = irqs[i]; 1788 mal->irqs[i] = irqs[i];
1789 ppc40x_mal_reset(mal); 1789 ppc40x_mal_reset(mal);
1790 - qemu_register_reset(&ppc40x_mal_reset, mal); 1790 + qemu_register_reset(&ppc40x_mal_reset, 0, mal);
1791 ppc_dcr_register(env, MAL0_CFG, 1791 ppc_dcr_register(env, MAL0_CFG,
1792 mal, &dcr_read_mal, &dcr_write_mal); 1792 mal, &dcr_read_mal, &dcr_write_mal);
1793 ppc_dcr_register(env, MAL0_ESR, 1793 ppc_dcr_register(env, MAL0_ESR,
@@ -2171,7 +2171,7 @@ static void ppc405cr_cpc_init (CPUState *env, clk_setup_t clk_setup[7], @@ -2171,7 +2171,7 @@ static void ppc405cr_cpc_init (CPUState *env, clk_setup_t clk_setup[7],
2171 ppc_dcr_register(env, PPC405CR_CPC0_SR, cpc, 2171 ppc_dcr_register(env, PPC405CR_CPC0_SR, cpc,
2172 &dcr_read_crcpc, &dcr_write_crcpc); 2172 &dcr_read_crcpc, &dcr_write_crcpc);
2173 ppc405cr_clk_init(cpc); 2173 ppc405cr_clk_init(cpc);
2174 - qemu_register_reset(ppc405cr_cpc_reset, cpc); 2174 + qemu_register_reset(ppc405cr_cpc_reset, 0, cpc);
2175 ppc405cr_cpc_reset(cpc); 2175 ppc405cr_cpc_reset(cpc);
2176 } 2176 }
2177 2177
@@ -2493,7 +2493,7 @@ static void ppc405ep_cpc_init (CPUState *env, clk_setup_t clk_setup[8], @@ -2493,7 +2493,7 @@ static void ppc405ep_cpc_init (CPUState *env, clk_setup_t clk_setup[8],
2493 cpc->jtagid = 0x20267049; 2493 cpc->jtagid = 0x20267049;
2494 cpc->sysclk = sysclk; 2494 cpc->sysclk = sysclk;
2495 ppc405ep_cpc_reset(cpc); 2495 ppc405ep_cpc_reset(cpc);
2496 - qemu_register_reset(&ppc405ep_cpc_reset, cpc); 2496 + qemu_register_reset(&ppc405ep_cpc_reset, 0, cpc);
2497 ppc_dcr_register(env, PPC405EP_CPC0_BOOT, cpc, 2497 ppc_dcr_register(env, PPC405EP_CPC0_BOOT, cpc,
2498 &dcr_read_epcpc, &dcr_write_epcpc); 2498 &dcr_read_epcpc, &dcr_write_epcpc);
2499 ppc_dcr_register(env, PPC405EP_CPC0_EPCTL, cpc, 2499 ppc_dcr_register(env, PPC405EP_CPC0_EPCTL, cpc,
hw/ppc4xx_devs.c
@@ -60,7 +60,7 @@ CPUState *ppc4xx_init (const char *cpu_model, @@ -60,7 +60,7 @@ CPUState *ppc4xx_init (const char *cpu_model,
60 tb_clk->opaque = env; 60 tb_clk->opaque = env;
61 ppc_dcr_init(env, NULL, NULL); 61 ppc_dcr_init(env, NULL, NULL);
62 /* Register qemu callbacks */ 62 /* Register qemu callbacks */
63 - qemu_register_reset(&cpu_ppc_reset, env); 63 + qemu_register_reset(&cpu_ppc_reset, 0, env);
64 64
65 return env; 65 return env;
66 } 66 }
@@ -498,7 +498,7 @@ qemu_irq *ppcuic_init (CPUState *env, qemu_irq *irqs, @@ -498,7 +498,7 @@ qemu_irq *ppcuic_init (CPUState *env, qemu_irq *irqs,
498 ppc_dcr_register(env, dcr_base + i, uic, 498 ppc_dcr_register(env, dcr_base + i, uic,
499 &dcr_read_uic, &dcr_write_uic); 499 &dcr_read_uic, &dcr_write_uic);
500 } 500 }
501 - qemu_register_reset(ppcuic_reset, uic); 501 + qemu_register_reset(ppcuic_reset, 0, uic);
502 ppcuic_reset(uic); 502 ppcuic_reset(uic);
503 503
504 return qemu_allocate_irqs(&ppcuic_set_irq, uic, UIC_MAX_IRQ); 504 return qemu_allocate_irqs(&ppcuic_set_irq, uic, UIC_MAX_IRQ);
@@ -834,7 +834,7 @@ void ppc4xx_sdram_init (CPUState *env, qemu_irq irq, int nbanks, @@ -834,7 +834,7 @@ void ppc4xx_sdram_init (CPUState *env, qemu_irq irq, int nbanks,
834 memcpy(sdram->ram_sizes, ram_sizes, 834 memcpy(sdram->ram_sizes, ram_sizes,
835 nbanks * sizeof(target_phys_addr_t)); 835 nbanks * sizeof(target_phys_addr_t));
836 sdram_reset(sdram); 836 sdram_reset(sdram);
837 - qemu_register_reset(&sdram_reset, sdram); 837 + qemu_register_reset(&sdram_reset, 0, sdram);
838 ppc_dcr_register(env, SDRAM0_CFGADDR, 838 ppc_dcr_register(env, SDRAM0_CFGADDR,
839 sdram, &dcr_read_sdram, &dcr_write_sdram); 839 sdram, &dcr_read_sdram, &dcr_write_sdram);
840 ppc_dcr_register(env, SDRAM0_CFGDATA, 840 ppc_dcr_register(env, SDRAM0_CFGDATA,
hw/ppc4xx_pci.c
@@ -403,7 +403,7 @@ PCIBus *ppc4xx_pci_init(CPUState *env, qemu_irq pci_irqs[4], @@ -403,7 +403,7 @@ PCIBus *ppc4xx_pci_init(CPUState *env, qemu_irq pci_irqs[4],
403 goto free; 403 goto free;
404 cpu_register_physical_memory(registers, PCI_REG_SIZE, index); 404 cpu_register_physical_memory(registers, PCI_REG_SIZE, index);
405 405
406 - qemu_register_reset(ppc4xx_pci_reset, controller); 406 + qemu_register_reset(ppc4xx_pci_reset, 0, controller);
407 407
408 /* XXX load/save code not tested. */ 408 /* XXX load/save code not tested. */
409 register_savevm("ppc4xx_pci", ppc4xx_pci_id++, 1, 409 register_savevm("ppc4xx_pci", ppc4xx_pci_id++, 1,
hw/ppc_newworld.c
@@ -128,7 +128,7 @@ static void ppc_core99_init (ram_addr_t ram_size, @@ -128,7 +128,7 @@ static void ppc_core99_init (ram_addr_t ram_size,
128 #if 0 128 #if 0
129 env->osi_call = vga_osi_call; 129 env->osi_call = vga_osi_call;
130 #endif 130 #endif
131 - qemu_register_reset(&cpu_ppc_reset, env); 131 + qemu_register_reset(&cpu_ppc_reset, 0, env);
132 envs[i] = env; 132 envs[i] = env;
133 } 133 }
134 134
hw/ppc_oldworld.c
@@ -154,7 +154,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, @@ -154,7 +154,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size,
154 /* Set time-base frequency to 16.6 Mhz */ 154 /* Set time-base frequency to 16.6 Mhz */
155 cpu_ppc_tb_init(env, 16600000UL); 155 cpu_ppc_tb_init(env, 16600000UL);
156 env->osi_call = vga_osi_call; 156 env->osi_call = vga_osi_call;
157 - qemu_register_reset(&cpu_ppc_reset, env); 157 + qemu_register_reset(&cpu_ppc_reset, 0, env);
158 envs[i] = env; 158 envs[i] = env;
159 } 159 }
160 160
hw/ppc_prep.c
@@ -573,7 +573,7 @@ static void ppc_prep_init (ram_addr_t ram_size, @@ -573,7 +573,7 @@ static void ppc_prep_init (ram_addr_t ram_size,
573 /* Set time-base frequency to 100 Mhz */ 573 /* Set time-base frequency to 100 Mhz */
574 cpu_ppc_tb_init(env, 100UL * 1000UL * 1000UL); 574 cpu_ppc_tb_init(env, 100UL * 1000UL * 1000UL);
575 } 575 }
576 - qemu_register_reset(&cpu_ppc_reset, env); 576 + qemu_register_reset(&cpu_ppc_reset, 0, env);
577 envs[i] = env; 577 envs[i] = env;
578 } 578 }
579 579
hw/ps2.c
@@ -593,7 +593,7 @@ void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg) @@ -593,7 +593,7 @@ void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg)
593 ps2_reset(&s->common); 593 ps2_reset(&s->common);
594 register_savevm("ps2kbd", 0, 3, ps2_kbd_save, ps2_kbd_load, s); 594 register_savevm("ps2kbd", 0, 3, ps2_kbd_save, ps2_kbd_load, s);
595 qemu_add_kbd_event_handler(ps2_put_keycode, s); 595 qemu_add_kbd_event_handler(ps2_put_keycode, s);
596 - qemu_register_reset(ps2_reset, &s->common); 596 + qemu_register_reset(ps2_reset, 0, &s->common);
597 return s; 597 return s;
598 } 598 }
599 599
@@ -606,6 +606,6 @@ void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg) @@ -606,6 +606,6 @@ void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg)
606 ps2_reset(&s->common); 606 ps2_reset(&s->common);
607 register_savevm("ps2mouse", 0, 2, ps2_mouse_save, ps2_mouse_load, s); 607 register_savevm("ps2mouse", 0, 2, ps2_mouse_save, ps2_mouse_load, s);
608 qemu_add_mouse_event_handler(ps2_mouse_event, s, 0, "QEMU PS/2 Mouse"); 608 qemu_add_mouse_event_handler(ps2_mouse_event, s, 0, "QEMU PS/2 Mouse");
609 - qemu_register_reset(ps2_reset, &s->common); 609 + qemu_register_reset(ps2_reset, 0, &s->common);
610 return s; 610 return s;
611 } 611 }
hw/rc4030.c
@@ -810,7 +810,7 @@ void *rc4030_init(qemu_irq timer, qemu_irq jazz_bus, @@ -810,7 +810,7 @@ void *rc4030_init(qemu_irq timer, qemu_irq jazz_bus,
810 s->timer_irq = timer; 810 s->timer_irq = timer;
811 s->jazz_bus_irq = jazz_bus; 811 s->jazz_bus_irq = jazz_bus;
812 812
813 - qemu_register_reset(rc4030_reset, s); 813 + qemu_register_reset(rc4030_reset, 0, s);
814 register_savevm("rc4030", 0, 2, rc4030_save, rc4030_load, s); 814 register_savevm("rc4030", 0, 2, rc4030_save, rc4030_load, s);
815 rc4030_reset(s); 815 rc4030_reset(s);
816 816
hw/sbi.c
@@ -155,7 +155,7 @@ void *sbi_init(target_phys_addr_t addr, qemu_irq **irq, qemu_irq **cpu_irq, @@ -155,7 +155,7 @@ void *sbi_init(target_phys_addr_t addr, qemu_irq **irq, qemu_irq **cpu_irq,
155 cpu_register_physical_memory(addr, SBI_SIZE, sbi_io_memory); 155 cpu_register_physical_memory(addr, SBI_SIZE, sbi_io_memory);
156 156
157 register_savevm("sbi", addr, 1, sbi_save, sbi_load, s); 157 register_savevm("sbi", addr, 1, sbi_save, sbi_load, s);
158 - qemu_register_reset(sbi_reset, s); 158 + qemu_register_reset(sbi_reset, 0, s);
159 *irq = qemu_allocate_irqs(sbi_set_irq, s, 32); 159 *irq = qemu_allocate_irqs(sbi_set_irq, s, 32);
160 *cpu_irq = qemu_allocate_irqs(sbi_set_timer_irq_cpu, s, MAX_CPUS); 160 *cpu_irq = qemu_allocate_irqs(sbi_set_timer_irq_cpu, s, MAX_CPUS);
161 sbi_reset(s); 161 sbi_reset(s);
hw/serial.c
@@ -718,7 +718,7 @@ static void serial_init_core(SerialState *s, qemu_irq irq, int baudbase, @@ -718,7 +718,7 @@ static void serial_init_core(SerialState *s, qemu_irq irq, int baudbase,
718 s->fifo_timeout_timer = qemu_new_timer(vm_clock, (QEMUTimerCB *) fifo_timeout_int, s); 718 s->fifo_timeout_timer = qemu_new_timer(vm_clock, (QEMUTimerCB *) fifo_timeout_int, s);
719 s->transmit_timer = qemu_new_timer(vm_clock, (QEMUTimerCB *) serial_xmit, s); 719 s->transmit_timer = qemu_new_timer(vm_clock, (QEMUTimerCB *) serial_xmit, s);
720 720
721 - qemu_register_reset(serial_reset, s); 721 + qemu_register_reset(serial_reset, 0, s);
722 serial_reset(s); 722 serial_reset(s);
723 723
724 qemu_chr_add_handlers(s->chr, serial_can_receive1, serial_receive1, 724 qemu_chr_add_handlers(s->chr, serial_can_receive1, serial_receive1,
hw/slavio_intctl.c
@@ -407,7 +407,7 @@ void *slavio_intctl_init(target_phys_addr_t addr, target_phys_addr_t addrg, @@ -407,7 +407,7 @@ void *slavio_intctl_init(target_phys_addr_t addr, target_phys_addr_t addrg,
407 407
408 register_savevm("slavio_intctl", addr, 1, slavio_intctl_save, 408 register_savevm("slavio_intctl", addr, 1, slavio_intctl_save,
409 slavio_intctl_load, s); 409 slavio_intctl_load, s);
410 - qemu_register_reset(slavio_intctl_reset, s); 410 + qemu_register_reset(slavio_intctl_reset, 0, s);
411 *irq = qemu_allocate_irqs(slavio_set_irq, s, 32); 411 *irq = qemu_allocate_irqs(slavio_set_irq, s, 32);
412 412
413 *cpu_irq = qemu_allocate_irqs(slavio_set_timer_irq_cpu, s, MAX_CPUS); 413 *cpu_irq = qemu_allocate_irqs(slavio_set_timer_irq_cpu, s, MAX_CPUS);
hw/slavio_misc.c
@@ -501,7 +501,7 @@ void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base, @@ -501,7 +501,7 @@ void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base,
501 501
502 register_savevm("slavio_misc", base, 1, slavio_misc_save, slavio_misc_load, 502 register_savevm("slavio_misc", base, 1, slavio_misc_save, slavio_misc_load,
503 s); 503 s);
504 - qemu_register_reset(slavio_misc_reset, s); 504 + qemu_register_reset(slavio_misc_reset, 0, s);
505 slavio_misc_reset(s); 505 slavio_misc_reset(s);
506 506
507 return s; 507 return s;
hw/slavio_timer.c
@@ -391,7 +391,7 @@ static SLAVIO_TIMERState *slavio_timer_init(target_phys_addr_t addr, @@ -391,7 +391,7 @@ static SLAVIO_TIMERState *slavio_timer_init(target_phys_addr_t addr,
391 slavio_timer_io_memory); 391 slavio_timer_io_memory);
392 register_savevm("slavio_timer", addr, 3, slavio_timer_save, 392 register_savevm("slavio_timer", addr, 3, slavio_timer_save,
393 slavio_timer_load, s); 393 slavio_timer_load, s);
394 - qemu_register_reset(slavio_timer_reset, s); 394 + qemu_register_reset(slavio_timer_reset, 0, s);
395 slavio_timer_reset(s); 395 slavio_timer_reset(s);
396 396
397 return s; 397 return s;
hw/sparc32_dma.c
@@ -256,7 +256,7 @@ void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq parent_irq, @@ -256,7 +256,7 @@ void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq parent_irq,
256 cpu_register_physical_memory(daddr, DMA_SIZE, dma_io_memory); 256 cpu_register_physical_memory(daddr, DMA_SIZE, dma_io_memory);
257 257
258 register_savevm("sparc32_dma", daddr, 2, dma_save, dma_load, s); 258 register_savevm("sparc32_dma", daddr, 2, dma_save, dma_load, s);
259 - qemu_register_reset(dma_reset, s); 259 + qemu_register_reset(dma_reset, 0, s);
260 *dev_irq = qemu_allocate_irqs(dma_set_irq, s, 1); 260 *dev_irq = qemu_allocate_irqs(dma_set_irq, s, 1);
261 261
262 *reset = &s->dev_reset; 262 *reset = &s->dev_reset;
hw/sun4c_intctl.c
@@ -213,7 +213,7 @@ void *sun4c_intctl_init(target_phys_addr_t addr, qemu_irq **irq, @@ -213,7 +213,7 @@ void *sun4c_intctl_init(target_phys_addr_t addr, qemu_irq **irq,
213 register_savevm("sun4c_intctl", addr, 1, sun4c_intctl_save, 213 register_savevm("sun4c_intctl", addr, 1, sun4c_intctl_save,
214 sun4c_intctl_load, s); 214 sun4c_intctl_load, s);
215 215
216 - qemu_register_reset(sun4c_intctl_reset, s); 216 + qemu_register_reset(sun4c_intctl_reset, 0, s);
217 *irq = qemu_allocate_irqs(sun4c_set_irq, s, 8); 217 *irq = qemu_allocate_irqs(sun4c_set_irq, s, 8);
218 218
219 sun4c_intctl_reset(s); 219 sun4c_intctl_reset(s);
hw/sun4m.c
@@ -418,9 +418,9 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, @@ -418,9 +418,9 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size,
418 cpu_sparc_set_id(env, i); 418 cpu_sparc_set_id(env, i);
419 envs[i] = env; 419 envs[i] = env;
420 if (i == 0) { 420 if (i == 0) {
421 - qemu_register_reset(main_cpu_reset, env); 421 + qemu_register_reset(main_cpu_reset, 0, env);
422 } else { 422 } else {
423 - qemu_register_reset(secondary_cpu_reset, env); 423 + qemu_register_reset(secondary_cpu_reset, 0, env);
424 env->halted = 1; 424 env->halted = 1;
425 } 425 }
426 cpu_irqs[i] = qemu_allocate_irqs(cpu_set_irq, envs[i], MAX_PILS); 426 cpu_irqs[i] = qemu_allocate_irqs(cpu_set_irq, envs[i], MAX_PILS);
@@ -1201,9 +1201,9 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, @@ -1201,9 +1201,9 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size,
1201 cpu_sparc_set_id(env, i); 1201 cpu_sparc_set_id(env, i);
1202 envs[i] = env; 1202 envs[i] = env;
1203 if (i == 0) { 1203 if (i == 0) {
1204 - qemu_register_reset(main_cpu_reset, env); 1204 + qemu_register_reset(main_cpu_reset, 0, env);
1205 } else { 1205 } else {
1206 - qemu_register_reset(secondary_cpu_reset, env); 1206 + qemu_register_reset(secondary_cpu_reset, 0, env);
1207 env->halted = 1; 1207 env->halted = 1;
1208 } 1208 }
1209 cpu_irqs[i] = qemu_allocate_irqs(cpu_set_irq, envs[i], MAX_PILS); 1209 cpu_irqs[i] = qemu_allocate_irqs(cpu_set_irq, envs[i], MAX_PILS);
@@ -1416,7 +1416,7 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, @@ -1416,7 +1416,7 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size,
1416 1416
1417 cpu_sparc_set_id(env, 0); 1417 cpu_sparc_set_id(env, 0);
1418 1418
1419 - qemu_register_reset(main_cpu_reset, env); 1419 + qemu_register_reset(main_cpu_reset, 0, env);
1420 cpu_irqs = qemu_allocate_irqs(cpu_set_irq, env, MAX_PILS); 1420 cpu_irqs = qemu_allocate_irqs(cpu_set_irq, env, MAX_PILS);
1421 env->prom_addr = hwdef->slavio_base; 1421 env->prom_addr = hwdef->slavio_base;
1422 1422
hw/sun4u.c
@@ -374,7 +374,7 @@ static void sun4uv_init(ram_addr_t RAM_size, @@ -374,7 +374,7 @@ static void sun4uv_init(ram_addr_t RAM_size,
374 reset_info = qemu_mallocz(sizeof(ResetData)); 374 reset_info = qemu_mallocz(sizeof(ResetData));
375 reset_info->env = env; 375 reset_info->env = env;
376 reset_info->reset_addr = hwdef->prom_addr + 0x40ULL; 376 reset_info->reset_addr = hwdef->prom_addr + 0x40ULL;
377 - qemu_register_reset(main_cpu_reset, reset_info); 377 + qemu_register_reset(main_cpu_reset, 0, reset_info);
378 main_cpu_reset(reset_info); 378 main_cpu_reset(reset_info);
379 // Override warm reset address with cold start address 379 // Override warm reset address with cold start address
380 env->pc = hwdef->prom_addr + 0x20ULL; 380 env->pc = hwdef->prom_addr + 0x20ULL;
hw/tcx.c
@@ -560,7 +560,7 @@ void tcx_init(target_phys_addr_t addr, int vram_size, int width, int height, @@ -560,7 +560,7 @@ void tcx_init(target_phys_addr_t addr, int vram_size, int width, int height,
560 dummy_memory); 560 dummy_memory);
561 561
562 register_savevm("tcx", addr, 4, tcx_save, tcx_load, s); 562 register_savevm("tcx", addr, 4, tcx_save, tcx_load, s);
563 - qemu_register_reset(tcx_reset, s); 563 + qemu_register_reset(tcx_reset, 0, s);
564 tcx_reset(s); 564 tcx_reset(s);
565 qemu_console_resize(s->ds, width, height); 565 qemu_console_resize(s->ds, width, height);
566 } 566 }
hw/tsc2005.c
@@ -548,7 +548,7 @@ void *tsc2005_init(qemu_irq pintdav) @@ -548,7 +548,7 @@ void *tsc2005_init(qemu_irq pintdav)
548 qemu_add_mouse_event_handler(tsc2005_touchscreen_event, s, 1, 548 qemu_add_mouse_event_handler(tsc2005_touchscreen_event, s, 1,
549 "QEMU TSC2005-driven Touchscreen"); 549 "QEMU TSC2005-driven Touchscreen");
550 550
551 - qemu_register_reset((void *) tsc2005_reset, s); 551 + qemu_register_reset((void *) tsc2005_reset, 0, s);
552 register_savevm("tsc2005", -1, 0, tsc2005_save, tsc2005_load, s); 552 register_savevm("tsc2005", -1, 0, tsc2005_save, tsc2005_load, s);
553 553
554 return s; 554 return s;
hw/tsc210x.c
@@ -1143,7 +1143,7 @@ uWireSlave *tsc2102_init(qemu_irq pint) @@ -1143,7 +1143,7 @@ uWireSlave *tsc2102_init(qemu_irq pint)
1143 1143
1144 AUD_register_card(s->name, &s->card); 1144 AUD_register_card(s->name, &s->card);
1145 1145
1146 - qemu_register_reset((void *) tsc210x_reset, s); 1146 + qemu_register_reset((void *) tsc210x_reset, 0, s);
1147 register_savevm(s->name, -1, 0, 1147 register_savevm(s->name, -1, 0,
1148 tsc210x_save, tsc210x_load, s); 1148 tsc210x_save, tsc210x_load, s);
1149 1149
@@ -1194,7 +1194,7 @@ uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, qemu_irq dav) @@ -1194,7 +1194,7 @@ uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, qemu_irq dav)
1194 1194
1195 AUD_register_card(s->name, &s->card); 1195 AUD_register_card(s->name, &s->card);
1196 1196
1197 - qemu_register_reset((void *) tsc210x_reset, s); 1197 + qemu_register_reset((void *) tsc210x_reset, 0, s);
1198 register_savevm(s->name, -1, 0, tsc210x_save, tsc210x_load, s); 1198 register_savevm(s->name, -1, 0, tsc210x_save, tsc210x_load, s);
1199 1199
1200 return &s->chip; 1200 return &s->chip;
hw/unin_pci.c
@@ -265,7 +265,7 @@ PCIBus *pci_pmac_init(qemu_irq *pic) @@ -265,7 +265,7 @@ PCIBus *pci_pmac_init(qemu_irq *pic)
265 d->config[0x34] = 0x00; // capabilities_pointer 265 d->config[0x34] = 0x00; // capabilities_pointer
266 #endif 266 #endif
267 register_savevm("uninorth", 0, 1, pci_unin_save, pci_unin_load, d); 267 register_savevm("uninorth", 0, 1, pci_unin_save, pci_unin_load, d);
268 - qemu_register_reset(pci_unin_reset, d); 268 + qemu_register_reset(pci_unin_reset, 0, d);
269 pci_unin_reset(d); 269 pci_unin_reset(d);
270 270
271 return s->bus; 271 return s->bus;
hw/usb-ohci.c
@@ -1695,7 +1695,7 @@ static void usb_ohci_init(OHCIState *ohci, int num_ports, int devfn, @@ -1695,7 +1695,7 @@ static void usb_ohci_init(OHCIState *ohci, int num_ports, int devfn,
1695 } 1695 }
1696 1696
1697 ohci->async_td = 0; 1697 ohci->async_td = 0;
1698 - qemu_register_reset(ohci_reset, ohci); 1698 + qemu_register_reset(ohci_reset, 0, ohci);
1699 ohci_reset(ohci); 1699 ohci_reset(ohci);
1700 } 1700 }
1701 1701
hw/vga.c
@@ -2306,7 +2306,7 @@ void vga_init(VGAState *s) @@ -2306,7 +2306,7 @@ void vga_init(VGAState *s)
2306 { 2306 {
2307 int vga_io_memory; 2307 int vga_io_memory;
2308 2308
2309 - qemu_register_reset(vga_reset, s); 2309 + qemu_register_reset(vga_reset, 0, s);
2310 register_savevm("vga", 0, 2, vga_save, vga_load, s); 2310 register_savevm("vga", 0, 2, vga_save, vga_load, s);
2311 2311
2312 register_ioport_write(0x3c0, 16, 1, vga_ioport_write, s); 2312 register_ioport_write(0x3c0, 16, 1, vga_ioport_write, s);
hw/virtio.c
@@ -636,7 +636,8 @@ VirtIODevice *virtio_common_init(const char *name, uint16_t device_id, @@ -636,7 +636,8 @@ VirtIODevice *virtio_common_init(const char *name, uint16_t device_id,
636 else 636 else
637 vdev->config = NULL; 637 vdev->config = NULL;
638 638
639 - qemu_register_reset(virtio_reset, vdev); 639 + qemu_register_reset(virtio_reset, 0, vdev);
  640 +
640 return vdev; 641 return vdev;
641 } 642 }
642 643
@@ -3579,6 +3579,7 @@ void vm_start(void) @@ -3579,6 +3579,7 @@ void vm_start(void)
3579 typedef struct QEMUResetEntry { 3579 typedef struct QEMUResetEntry {
3580 QEMUResetHandler *func; 3580 QEMUResetHandler *func;
3581 void *opaque; 3581 void *opaque;
  3582 + int order;
3582 struct QEMUResetEntry *next; 3583 struct QEMUResetEntry *next;
3583 } QEMUResetEntry; 3584 } QEMUResetEntry;
3584 3585
@@ -3634,16 +3635,18 @@ static void do_vm_stop(int reason) @@ -3634,16 +3635,18 @@ static void do_vm_stop(int reason)
3634 } 3635 }
3635 } 3636 }
3636 3637
3637 -void qemu_register_reset(QEMUResetHandler *func, void *opaque) 3638 +void qemu_register_reset(QEMUResetHandler *func, int order, void *opaque)
3638 { 3639 {
3639 QEMUResetEntry **pre, *re; 3640 QEMUResetEntry **pre, *re;
3640 3641
3641 pre = &first_reset_entry; 3642 pre = &first_reset_entry;
3642 - while (*pre != NULL) 3643 + while (*pre != NULL && (*pre)->order >= order) {
3643 pre = &(*pre)->next; 3644 pre = &(*pre)->next;
  3645 + }
3644 re = qemu_mallocz(sizeof(QEMUResetEntry)); 3646 re = qemu_mallocz(sizeof(QEMUResetEntry));
3645 re->func = func; 3647 re->func = func;
3646 re->opaque = opaque; 3648 re->opaque = opaque;
  3649 + re->order = order;
3647 re->next = NULL; 3650 re->next = NULL;
3648 *pre = re; 3651 *pre = re;
3649 } 3652 }