Commit 18be51872917e70e00cb21e018b6bff33162c4f7
1 parent
9656f324
Remove duplicate device index calculations.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4818 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
12 changed files
with
21 additions
and
44 deletions
hw/ads7846.c
@@ -140,8 +140,6 @@ static int ads7846_load(QEMUFile *f, void *opaque, int version_id) | @@ -140,8 +140,6 @@ static int ads7846_load(QEMUFile *f, void *opaque, int version_id) | ||
140 | return 0; | 140 | return 0; |
141 | } | 141 | } |
142 | 142 | ||
143 | -static int ads7846_iid = 0; | ||
144 | - | ||
145 | struct ads7846_state_s *ads7846_init(qemu_irq penirq) | 143 | struct ads7846_state_s *ads7846_init(qemu_irq penirq) |
146 | { | 144 | { |
147 | struct ads7846_state_s *s; | 145 | struct ads7846_state_s *s; |
@@ -162,8 +160,7 @@ struct ads7846_state_s *ads7846_init(qemu_irq penirq) | @@ -162,8 +160,7 @@ struct ads7846_state_s *ads7846_init(qemu_irq penirq) | ||
162 | 160 | ||
163 | ads7846_int_update(s); | 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 | return s; | 165 | return s; |
169 | } | 166 | } |
hw/ide.c
@@ -3596,8 +3596,6 @@ static int md_load(QEMUFile *f, void *opaque, int version_id) | @@ -3596,8 +3596,6 @@ static int md_load(QEMUFile *f, void *opaque, int version_id) | ||
3596 | return 0; | 3596 | return 0; |
3597 | } | 3597 | } |
3598 | 3598 | ||
3599 | -static int md_iid = 0; | ||
3600 | - | ||
3601 | static const uint8_t dscm1xxxx_cis[0x14a] = { | 3599 | static const uint8_t dscm1xxxx_cis[0x14a] = { |
3602 | [0x000] = CISTPL_DEVICE, /* 5V Device Information */ | 3600 | [0x000] = CISTPL_DEVICE, /* 5V Device Information */ |
3603 | [0x002] = 0x03, /* Tuple length = 4 bytes */ | 3601 | [0x002] = 0x03, /* Tuple length = 4 bytes */ |
@@ -3824,7 +3822,7 @@ struct pcmcia_card_s *dscm1xxxx_init(BlockDriverState *bdrv) | @@ -3824,7 +3822,7 @@ struct pcmcia_card_s *dscm1xxxx_init(BlockDriverState *bdrv) | ||
3824 | md->ide->mdata_size = METADATA_SIZE; | 3822 | md->ide->mdata_size = METADATA_SIZE; |
3825 | md->ide->mdata_storage = (uint8_t *) qemu_mallocz(METADATA_SIZE); | 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 | return &md->card; | 3827 | return &md->card; |
3830 | } | 3828 | } |
hw/lm832x.c
@@ -490,8 +490,6 @@ static int lm_kbd_load(QEMUFile *f, void *opaque, int version_id) | @@ -490,8 +490,6 @@ static int lm_kbd_load(QEMUFile *f, void *opaque, int version_id) | ||
490 | return 0; | 490 | return 0; |
491 | } | 491 | } |
492 | 492 | ||
493 | -static int lm_kbd_iid = 0; | ||
494 | - | ||
495 | struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq) | 493 | struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq) |
496 | { | 494 | { |
497 | struct lm_kbd_s *s; | 495 | struct lm_kbd_s *s; |
@@ -510,8 +508,7 @@ struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq) | @@ -510,8 +508,7 @@ struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq) | ||
510 | lm_kbd_reset(s); | 508 | lm_kbd_reset(s); |
511 | 509 | ||
512 | qemu_register_reset((void *) lm_kbd_reset, s); | 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 | return &s->i2c; | 513 | return &s->i2c; |
517 | } | 514 | } |
hw/max111x.c
@@ -121,8 +121,6 @@ static int max111x_load(QEMUFile *f, void *opaque, int version_id) | @@ -121,8 +121,6 @@ static int max111x_load(QEMUFile *f, void *opaque, int version_id) | ||
121 | return 0; | 121 | return 0; |
122 | } | 122 | } |
123 | 123 | ||
124 | -static int max111x_iid = 0; | ||
125 | - | ||
126 | static struct max111x_s *max111x_init(qemu_irq cb) | 124 | static struct max111x_s *max111x_init(qemu_irq cb) |
127 | { | 125 | { |
128 | struct max111x_s *s; | 126 | struct max111x_s *s; |
@@ -143,8 +141,7 @@ static struct max111x_s *max111x_init(qemu_irq cb) | @@ -143,8 +141,7 @@ static struct max111x_s *max111x_init(qemu_irq cb) | ||
143 | s->input[7] = 0x80; | 141 | s->input[7] = 0x80; |
144 | s->com = 0; | 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 | return s; | 146 | return s; |
150 | } | 147 | } |
hw/max7310.c
@@ -177,8 +177,6 @@ static int max7310_load(QEMUFile *f, void *opaque, int version_id) | @@ -177,8 +177,6 @@ static int max7310_load(QEMUFile *f, void *opaque, int version_id) | ||
177 | return 0; | 177 | return 0; |
178 | } | 178 | } |
179 | 179 | ||
180 | -static int max7310_iid = 0; | ||
181 | - | ||
182 | static void max7310_gpio_set(void *opaque, int line, int level) | 180 | static void max7310_gpio_set(void *opaque, int line, int level) |
183 | { | 181 | { |
184 | struct max7310_s *s = (struct max7310_s *) opaque; | 182 | struct max7310_s *s = (struct max7310_s *) opaque; |
@@ -205,8 +203,7 @@ struct i2c_slave *max7310_init(i2c_bus *bus) | @@ -205,8 +203,7 @@ struct i2c_slave *max7310_init(i2c_bus *bus) | ||
205 | 203 | ||
206 | max7310_reset(&s->i2c); | 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 | return &s->i2c; | 208 | return &s->i2c; |
212 | } | 209 | } |
hw/nand.c
@@ -319,8 +319,6 @@ static int nand_load(QEMUFile *f, void *opaque, int version_id) | @@ -319,8 +319,6 @@ static int nand_load(QEMUFile *f, void *opaque, int version_id) | ||
319 | return 0; | 319 | return 0; |
320 | } | 320 | } |
321 | 321 | ||
322 | -static int nand_iid = 0; | ||
323 | - | ||
324 | /* | 322 | /* |
325 | * Chip inputs are CLE, ALE, CE, WP, GND and eight I/O pins. Chip | 323 | * Chip inputs are CLE, ALE, CE, WP, GND and eight I/O pins. Chip |
326 | * outputs are R/B and eight I/O pins. | 324 | * outputs are R/B and eight I/O pins. |
@@ -495,7 +493,7 @@ struct nand_flash_s *nand_init(int manf_id, int chip_id) | @@ -495,7 +493,7 @@ struct nand_flash_s *nand_init(int manf_id, int chip_id) | ||
495 | s->storage = (uint8_t *) memset(qemu_malloc(s->pages * pagesize), | 493 | s->storage = (uint8_t *) memset(qemu_malloc(s->pages * pagesize), |
496 | 0xff, s->pages * pagesize); | 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 | return s; | 498 | return s; |
501 | } | 499 | } |
hw/tmp105.c
@@ -228,8 +228,6 @@ void tmp105_reset(i2c_slave *i2c) | @@ -228,8 +228,6 @@ void tmp105_reset(i2c_slave *i2c) | ||
228 | tmp105_interrupt_update(s); | 228 | tmp105_interrupt_update(s); |
229 | } | 229 | } |
230 | 230 | ||
231 | -static int tmp105_iid = 0; | ||
232 | - | ||
233 | struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm) | 231 | struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm) |
234 | { | 232 | { |
235 | struct tmp105_s *s = (struct tmp105_s *) | 233 | struct tmp105_s *s = (struct tmp105_s *) |
@@ -242,8 +240,7 @@ struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm) | @@ -242,8 +240,7 @@ struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm) | ||
242 | 240 | ||
243 | tmp105_reset(&s->i2c); | 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 | return &s->i2c; | 245 | return &s->i2c; |
249 | } | 246 | } |
hw/tsc2005.c
@@ -520,8 +520,6 @@ static int tsc2005_load(QEMUFile *f, void *opaque, int version_id) | @@ -520,8 +520,6 @@ static int tsc2005_load(QEMUFile *f, void *opaque, int version_id) | ||
520 | return 0; | 520 | return 0; |
521 | } | 521 | } |
522 | 522 | ||
523 | -static int tsc2005_iid = 0; | ||
524 | - | ||
525 | void *tsc2005_init(qemu_irq pintdav) | 523 | void *tsc2005_init(qemu_irq pintdav) |
526 | { | 524 | { |
527 | struct tsc2005_state_s *s; | 525 | struct tsc2005_state_s *s; |
@@ -551,8 +549,7 @@ void *tsc2005_init(qemu_irq pintdav) | @@ -551,8 +549,7 @@ void *tsc2005_init(qemu_irq pintdav) | ||
551 | "QEMU TSC2005-driven Touchscreen"); | 549 | "QEMU TSC2005-driven Touchscreen"); |
552 | 550 | ||
553 | qemu_register_reset((void *) tsc2005_reset, s); | 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 | return s; | 554 | return s; |
558 | } | 555 | } |
hw/tsc210x.c
@@ -1107,8 +1107,6 @@ static int tsc210x_load(QEMUFile *f, void *opaque, int version_id) | @@ -1107,8 +1107,6 @@ static int tsc210x_load(QEMUFile *f, void *opaque, int version_id) | ||
1107 | return 0; | 1107 | return 0; |
1108 | } | 1108 | } |
1109 | 1109 | ||
1110 | -static int tsc2102_iid = 0; | ||
1111 | - | ||
1112 | struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio) | 1110 | struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio) |
1113 | { | 1111 | { |
1114 | struct tsc210x_state_s *s; | 1112 | struct tsc210x_state_s *s; |
@@ -1154,7 +1152,7 @@ struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio) | @@ -1154,7 +1152,7 @@ struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio) | ||
1154 | AUD_register_card(s->audio, s->name, &s->card); | 1152 | AUD_register_card(s->audio, s->name, &s->card); |
1155 | 1153 | ||
1156 | qemu_register_reset((void *) tsc210x_reset, s); | 1154 | qemu_register_reset((void *) tsc210x_reset, s); |
1157 | - register_savevm(s->name, tsc2102_iid ++, 0, | 1155 | + register_savevm(s->name, -1, 0, |
1158 | tsc210x_save, tsc210x_load, s); | 1156 | tsc210x_save, tsc210x_load, s); |
1159 | 1157 | ||
1160 | return &s->chip; | 1158 | return &s->chip; |
@@ -1208,8 +1206,7 @@ struct uwire_slave_s *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, | @@ -1208,8 +1206,7 @@ struct uwire_slave_s *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, | ||
1208 | AUD_register_card(s->audio, s->name, &s->card); | 1206 | AUD_register_card(s->audio, s->name, &s->card); |
1209 | 1207 | ||
1210 | qemu_register_reset((void *) tsc210x_reset, s); | 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 | return &s->chip; | 1211 | return &s->chip; |
1215 | } | 1212 | } |
hw/twl92230.c
@@ -876,8 +876,6 @@ static int menelaus_load(QEMUFile *f, void *opaque, int version_id) | @@ -876,8 +876,6 @@ static int menelaus_load(QEMUFile *f, void *opaque, int version_id) | ||
876 | return 0; | 876 | return 0; |
877 | } | 877 | } |
878 | 878 | ||
879 | -static int menelaus_iid = 0; | ||
880 | - | ||
881 | i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq) | 879 | i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq) |
882 | { | 880 | { |
883 | struct menelaus_s *s = (struct menelaus_s *) | 881 | struct menelaus_s *s = (struct menelaus_s *) |
@@ -894,8 +892,7 @@ i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq) | @@ -894,8 +892,7 @@ i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq) | ||
894 | 892 | ||
895 | menelaus_reset(&s->i2c); | 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 | return &s->i2c; | 897 | return &s->i2c; |
901 | } | 898 | } |
hw/wm8750.c
@@ -646,8 +646,6 @@ static int wm8750_load(QEMUFile *f, void *opaque, int version_id) | @@ -646,8 +646,6 @@ static int wm8750_load(QEMUFile *f, void *opaque, int version_id) | ||
646 | return 0; | 646 | return 0; |
647 | } | 647 | } |
648 | 648 | ||
649 | -static int wm8750_iid = 0; | ||
650 | - | ||
651 | i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio) | 649 | i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio) |
652 | { | 650 | { |
653 | struct wm8750_s *s = (struct wm8750_s *) | 651 | struct wm8750_s *s = (struct wm8750_s *) |
@@ -659,7 +657,7 @@ i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio) | @@ -659,7 +657,7 @@ i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio) | ||
659 | AUD_register_card(audio, CODEC, &s->card); | 657 | AUD_register_card(audio, CODEC, &s->card); |
660 | wm8750_reset(&s->i2c); | 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 | return &s->i2c; | 662 | return &s->i2c; |
665 | } | 663 | } |
vl.c
@@ -6060,6 +6060,8 @@ typedef struct SaveStateEntry { | @@ -6060,6 +6060,8 @@ typedef struct SaveStateEntry { | ||
6060 | 6060 | ||
6061 | static SaveStateEntry *first_se; | 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 | int register_savevm(const char *idstr, | 6065 | int register_savevm(const char *idstr, |
6064 | int instance_id, | 6066 | int instance_id, |
6065 | int version_id, | 6067 | int version_id, |
@@ -6073,7 +6075,7 @@ int register_savevm(const char *idstr, | @@ -6073,7 +6075,7 @@ int register_savevm(const char *idstr, | ||
6073 | if (!se) | 6075 | if (!se) |
6074 | return -1; | 6076 | return -1; |
6075 | pstrcpy(se->idstr, sizeof(se->idstr), idstr); | 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 | se->version_id = version_id; | 6079 | se->version_id = version_id; |
6078 | se->save_state = save_state; | 6080 | se->save_state = save_state; |
6079 | se->load_state = load_state; | 6081 | se->load_state = load_state; |
@@ -6082,8 +6084,13 @@ int register_savevm(const char *idstr, | @@ -6082,8 +6084,13 @@ int register_savevm(const char *idstr, | ||
6082 | 6084 | ||
6083 | /* add at the end of list */ | 6085 | /* add at the end of list */ |
6084 | pse = &first_se; | 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 | pse = &(*pse)->next; | 6092 | pse = &(*pse)->next; |
6093 | + } | ||
6087 | *pse = se; | 6094 | *pse = se; |
6088 | return 0; | 6095 | return 0; |
6089 | } | 6096 | } |