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