Revision 18be5187

b/hw/ads7846.c
140 140
    return 0;
141 141
}
142 142

  
143
static int ads7846_iid = 0;
144

  
145 143
struct ads7846_state_s *ads7846_init(qemu_irq penirq)
146 144
{
147 145
    struct ads7846_state_s *s;
......
162 160

  
163 161
    ads7846_int_update(s);
164 162

  
165
    register_savevm("ads7846", ads7846_iid ++, 0,
166
                    ads7846_save, ads7846_load, s);
163
    register_savevm("ads7846", -1, 0, ads7846_save, ads7846_load, s);
167 164

  
168 165
    return s;
169 166
}
b/hw/ide.c
3596 3596
    return 0;
3597 3597
}
3598 3598

  
3599
static int md_iid = 0;
3600

  
3601 3599
static const uint8_t dscm1xxxx_cis[0x14a] = {
3602 3600
    [0x000] = CISTPL_DEVICE,	/* 5V Device Information */
3603 3601
    [0x002] = 0x03,		/* Tuple length = 4 bytes */
......
3824 3822
    md->ide->mdata_size = METADATA_SIZE;
3825 3823
    md->ide->mdata_storage = (uint8_t *) qemu_mallocz(METADATA_SIZE);
3826 3824

  
3827
    register_savevm("microdrive", md_iid ++, 0, md_save, md_load, md);
3825
    register_savevm("microdrive", -1, 0, md_save, md_load, md);
3828 3826

  
3829 3827
    return &md->card;
3830 3828
}
b/hw/lm832x.c
490 490
    return 0;
491 491
}
492 492

  
493
static int lm_kbd_iid = 0;
494

  
495 493
struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq)
496 494
{
497 495
    struct lm_kbd_s *s;
......
510 508
    lm_kbd_reset(s);
511 509

  
512 510
    qemu_register_reset((void *) lm_kbd_reset, s);
513
    register_savevm("LM8323", lm_kbd_iid ++, 0,
514
                    lm_kbd_save, lm_kbd_load, s);
511
    register_savevm("LM8323", -1, 0, lm_kbd_save, lm_kbd_load, s);
515 512

  
516 513
    return &s->i2c;
517 514
}
b/hw/max111x.c
121 121
    return 0;
122 122
}
123 123

  
124
static int max111x_iid = 0;
125

  
126 124
static struct max111x_s *max111x_init(qemu_irq cb)
127 125
{
128 126
    struct max111x_s *s;
......
143 141
    s->input[7] = 0x80;
144 142
    s->com = 0;
145 143

  
146
    register_savevm("max111x", max111x_iid ++, 0,
147
                    max111x_save, max111x_load, s);
144
    register_savevm("max111x", -1, 0, max111x_save, max111x_load, s);
148 145

  
149 146
    return s;
150 147
}
b/hw/max7310.c
177 177
    return 0;
178 178
}
179 179

  
180
static int max7310_iid = 0;
181

  
182 180
static void max7310_gpio_set(void *opaque, int line, int level)
183 181
{
184 182
    struct max7310_s *s = (struct max7310_s *) opaque;
......
205 203

  
206 204
    max7310_reset(&s->i2c);
207 205

  
208
    register_savevm("max7310", max7310_iid ++, 0,
209
                    max7310_save, max7310_load, s);
206
    register_savevm("max7310", -1, 0, max7310_save, max7310_load, s);
210 207

  
211 208
    return &s->i2c;
212 209
}
b/hw/nand.c
319 319
    return 0;
320 320
}
321 321

  
322
static int nand_iid = 0;
323

  
324 322
/*
325 323
 * Chip inputs are CLE, ALE, CE, WP, GND and eight I/O pins.  Chip
326 324
 * outputs are R/B and eight I/O pins.
......
495 493
        s->storage = (uint8_t *) memset(qemu_malloc(s->pages * pagesize),
496 494
                        0xff, s->pages * pagesize);
497 495

  
498
    register_savevm("nand", nand_iid ++, 0, nand_save, nand_load, s);
496
    register_savevm("nand", -1, 0, nand_save, nand_load, s);
499 497

  
500 498
    return s;
501 499
}
b/hw/tmp105.c
228 228
    tmp105_interrupt_update(s);
229 229
}
230 230

  
231
static int tmp105_iid = 0;
232

  
233 231
struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm)
234 232
{
235 233
    struct tmp105_s *s = (struct tmp105_s *)
......
242 240

  
243 241
    tmp105_reset(&s->i2c);
244 242

  
245
    register_savevm("TMP105", tmp105_iid ++, 0,
246
                    tmp105_save, tmp105_load, s);
243
    register_savevm("TMP105", -1, 0, tmp105_save, tmp105_load, s);
247 244

  
248 245
    return &s->i2c;
249 246
}
b/hw/tsc2005.c
520 520
    return 0;
521 521
}
522 522

  
523
static int tsc2005_iid = 0;
524

  
525 523
void *tsc2005_init(qemu_irq pintdav)
526 524
{
527 525
    struct tsc2005_state_s *s;
......
551 549
                    "QEMU TSC2005-driven Touchscreen");
552 550

  
553 551
    qemu_register_reset((void *) tsc2005_reset, s);
554
    register_savevm("tsc2005", tsc2005_iid ++, 0,
555
                    tsc2005_save, tsc2005_load, s);
552
    register_savevm("tsc2005", -1, 0, tsc2005_save, tsc2005_load, s);
556 553

  
557 554
    return s;
558 555
}
b/hw/tsc210x.c
1107 1107
    return 0;
1108 1108
}
1109 1109

  
1110
static int tsc2102_iid = 0;
1111

  
1112 1110
struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio)
1113 1111
{
1114 1112
    struct tsc210x_state_s *s;
......
1154 1152
        AUD_register_card(s->audio, s->name, &s->card);
1155 1153

  
1156 1154
    qemu_register_reset((void *) tsc210x_reset, s);
1157
    register_savevm(s->name, tsc2102_iid ++, 0,
1155
    register_savevm(s->name, -1, 0,
1158 1156
                    tsc210x_save, tsc210x_load, s);
1159 1157

  
1160 1158
    return &s->chip;
......
1208 1206
        AUD_register_card(s->audio, s->name, &s->card);
1209 1207

  
1210 1208
    qemu_register_reset((void *) tsc210x_reset, s);
1211
    register_savevm(s->name, tsc2102_iid ++, 0,
1212
                    tsc210x_save, tsc210x_load, s);
1209
    register_savevm(s->name, -1, 0, tsc210x_save, tsc210x_load, s);
1213 1210

  
1214 1211
    return &s->chip;
1215 1212
}
b/hw/twl92230.c
876 876
    return 0;
877 877
}
878 878

  
879
static int menelaus_iid = 0;
880

  
881 879
i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq)
882 880
{
883 881
    struct menelaus_s *s = (struct menelaus_s *)
......
894 892

  
895 893
    menelaus_reset(&s->i2c);
896 894

  
897
    register_savevm("menelaus", menelaus_iid ++,
898
                    0, menelaus_save, menelaus_load, s);
895
    register_savevm("menelaus", -1, 0, menelaus_save, menelaus_load, s);
899 896

  
900 897
    return &s->i2c;
901 898
}
b/hw/wm8750.c
646 646
    return 0;
647 647
}
648 648

  
649
static int wm8750_iid = 0;
650

  
651 649
i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio)
652 650
{
653 651
    struct wm8750_s *s = (struct wm8750_s *)
......
659 657
    AUD_register_card(audio, CODEC, &s->card);
660 658
    wm8750_reset(&s->i2c);
661 659

  
662
    register_savevm(CODEC, wm8750_iid ++, 0, wm8750_save, wm8750_load, s);
660
    register_savevm(CODEC, -1, 0, wm8750_save, wm8750_load, s);
663 661

  
664 662
    return &s->i2c;
665 663
}
b/vl.c
6060 6060

  
6061 6061
static SaveStateEntry *first_se;
6062 6062

  
6063
/* TODO: Individual devices generally have very little idea about the rest
6064
   of the system, so instance_id should be removed/replaced.  */
6063 6065
int register_savevm(const char *idstr,
6064 6066
                    int instance_id,
6065 6067
                    int version_id,
......
6073 6075
    if (!se)
6074 6076
        return -1;
6075 6077
    pstrcpy(se->idstr, sizeof(se->idstr), idstr);
6076
    se->instance_id = instance_id;
6078
    se->instance_id = (instance_id == -1) ? 0 : instance_id;
6077 6079
    se->version_id = version_id;
6078 6080
    se->save_state = save_state;
6079 6081
    se->load_state = load_state;
......
6082 6084

  
6083 6085
    /* add at the end of list */
6084 6086
    pse = &first_se;
6085
    while (*pse != NULL)
6087
    while (*pse != NULL) {
6088
        if (instance_id == -1
6089
                && strcmp(se->idstr, (*pse)->idstr) == 0
6090
                && se->instance_id <= (*pse)->instance_id)
6091
            se->instance_id = (*pse)->instance_id + 1;
6086 6092
        pse = &(*pse)->next;
6093
    }
6087 6094
    *pse = se;
6088 6095
    return 0;
6089 6096
}

Also available in: Unified diff