Commit b6c4f71f508977fedc11f5c822642a5bb1c899a3

Authored by blueswir1
1 parent 09bc878a

Resurrect the safe part of r5274

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5401 c046a42c-6fe2-441c-8c8c-71466251a162
hw/e1000.c
... ... @@ -102,8 +102,8 @@ typedef struct E1000State_st {
102 102 uint32_t paylen;
103 103 uint16_t tso_frames;
104 104 char tse;
105   - char ip;
106   - char tcp;
  105 + int8_t ip;
  106 + int8_t tcp;
107 107 char cptse; // current packet tse bit
108 108 } tx;
109 109  
... ... @@ -824,8 +824,8 @@ nic_save(QEMUFile *f, void *opaque)
824 824 qemu_put_be16s(f, &s->tx.size);
825 825 qemu_put_be16s(f, &s->tx.tso_frames);
826 826 qemu_put_8s(f, &s->tx.sum_needed);
827   - qemu_put_8s(f, &s->tx.ip);
828   - qemu_put_8s(f, &s->tx.tcp);
  827 + qemu_put_s8s(f, &s->tx.ip);
  828 + qemu_put_s8s(f, &s->tx.tcp);
829 829 qemu_put_buffer(f, s->tx.header, sizeof s->tx.header);
830 830 qemu_put_buffer(f, s->tx.data, sizeof s->tx.data);
831 831 for (i = 0; i < 64; i++)
... ... @@ -849,7 +849,7 @@ nic_load(QEMUFile *f, void *opaque, int version_id)
849 849 if ((ret = pci_device_load(&s->dev, f)) < 0)
850 850 return ret;
851 851 if (version_id == 1)
852   - qemu_get_be32s(f, &i); /* once some unused instance id */
  852 + qemu_get_sbe32s(f, &i); /* once some unused instance id */
853 853 qemu_get_be32s(f, &s->mmio_base);
854 854 qemu_get_be32s(f, &s->rxbuf_size);
855 855 qemu_get_be32s(f, &s->rxbuf_min_shift);
... ... @@ -870,8 +870,8 @@ nic_load(QEMUFile *f, void *opaque, int version_id)
870 870 qemu_get_be16s(f, &s->tx.size);
871 871 qemu_get_be16s(f, &s->tx.tso_frames);
872 872 qemu_get_8s(f, &s->tx.sum_needed);
873   - qemu_get_8s(f, &s->tx.ip);
874   - qemu_get_8s(f, &s->tx.tcp);
  873 + qemu_get_s8s(f, &s->tx.ip);
  874 + qemu_get_s8s(f, &s->tx.tcp);
875 875 qemu_get_buffer(f, s->tx.header, sizeof s->tx.header);
876 876 qemu_get_buffer(f, s->tx.data, sizeof s->tx.data);
877 877 for (i = 0; i < 64; i++)
... ...
hw/esp.c
... ... @@ -578,7 +578,7 @@ static void esp_save(QEMUFile *f, void *opaque)
578 578  
579 579 qemu_put_buffer(f, s->rregs, ESP_REGS);
580 580 qemu_put_buffer(f, s->wregs, ESP_REGS);
581   - qemu_put_be32s(f, (uint32_t *)&s->ti_size);
  581 + qemu_put_sbe32s(f, &s->ti_size);
582 582 qemu_put_be32s(f, &s->ti_rptr);
583 583 qemu_put_be32s(f, &s->ti_wptr);
584 584 qemu_put_buffer(f, s->ti_buf, TI_BUFSZ);
... ... @@ -600,7 +600,7 @@ static int esp_load(QEMUFile *f, void *opaque, int version_id)
600 600  
601 601 qemu_get_buffer(f, s->rregs, ESP_REGS);
602 602 qemu_get_buffer(f, s->wregs, ESP_REGS);
603   - qemu_get_be32s(f, (uint32_t *)&s->ti_size);
  603 + qemu_get_sbe32s(f, &s->ti_size);
604 604 qemu_get_be32s(f, &s->ti_rptr);
605 605 qemu_get_be32s(f, &s->ti_wptr);
606 606 qemu_get_buffer(f, s->ti_buf, TI_BUFSZ);
... ...
... ... @@ -39,11 +39,27 @@ void qemu_fflush(QEMUFile *f);
39 39 int qemu_fclose(QEMUFile *f);
40 40 void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
41 41 void qemu_put_byte(QEMUFile *f, int v);
  42 +
  43 +static inline void qemu_put_ubyte(QEMUFile *f, unsigned int v)
  44 +{
  45 + qemu_put_byte(f, (int)v);
  46 +}
  47 +
  48 +#define qemu_put_sbyte qemu_put_byte
  49 +
42 50 void qemu_put_be16(QEMUFile *f, unsigned int v);
43 51 void qemu_put_be32(QEMUFile *f, unsigned int v);
44 52 void qemu_put_be64(QEMUFile *f, uint64_t v);
45 53 int qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size);
46 54 int qemu_get_byte(QEMUFile *f);
  55 +
  56 +static inline unsigned int qemu_get_ubyte(QEMUFile *f)
  57 +{
  58 + return (unsigned int)qemu_get_byte(f);
  59 +}
  60 +
  61 +#define qemu_get_sbyte qemu_get_byte
  62 +
47 63 unsigned int qemu_get_be16(QEMUFile *f);
48 64 unsigned int qemu_get_be32(QEMUFile *f);
49 65 uint64_t qemu_get_be64(QEMUFile *f);
... ... @@ -94,17 +110,106 @@ static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv)
94 110 *pv = qemu_get_byte(f);
95 111 }
96 112  
  113 +// Signed versions for type safety
  114 +static inline void qemu_put_sbuffer(QEMUFile *f, const int8_t *buf, int size)
  115 +{
  116 + qemu_put_buffer(f, (const uint8_t *)buf, size);
  117 +}
  118 +
  119 +static inline void qemu_put_sbe16(QEMUFile *f, int v)
  120 +{
  121 + qemu_put_be16(f, (unsigned int)v);
  122 +}
  123 +
  124 +static inline void qemu_put_sbe32(QEMUFile *f, int v)
  125 +{
  126 + qemu_put_be32(f, (unsigned int)v);
  127 +}
  128 +
  129 +static inline void qemu_put_sbe64(QEMUFile *f, int64_t v)
  130 +{
  131 + qemu_put_be64(f, (uint64_t)v);
  132 +}
  133 +
  134 +static inline size_t qemu_get_sbuffer(QEMUFile *f, int8_t *buf, int size)
  135 +{
  136 + return qemu_get_buffer(f, (uint8_t *)buf, size);
  137 +}
  138 +
  139 +static inline int qemu_get_sbe16(QEMUFile *f)
  140 +{
  141 + return (int)qemu_get_be16(f);
  142 +}
  143 +
  144 +static inline int qemu_get_sbe32(QEMUFile *f)
  145 +{
  146 + return (int)qemu_get_be32(f);
  147 +}
  148 +
  149 +static inline int64_t qemu_get_sbe64(QEMUFile *f)
  150 +{
  151 + return (int64_t)qemu_get_be64(f);
  152 +}
  153 +
  154 +static inline void qemu_put_s8s(QEMUFile *f, const int8_t *pv)
  155 +{
  156 + qemu_put_8s(f, (const uint8_t *)pv);
  157 +}
  158 +
  159 +static inline void qemu_put_sbe16s(QEMUFile *f, const int16_t *pv)
  160 +{
  161 + qemu_put_be16s(f, (const uint16_t *)pv);
  162 +}
  163 +
  164 +static inline void qemu_put_sbe32s(QEMUFile *f, const int32_t *pv)
  165 +{
  166 + qemu_put_be32s(f, (const uint32_t *)pv);
  167 +}
  168 +
  169 +static inline void qemu_put_sbe64s(QEMUFile *f, const int64_t *pv)
  170 +{
  171 + qemu_put_be64s(f, (const uint64_t *)pv);
  172 +}
  173 +
  174 +static inline void qemu_get_s8s(QEMUFile *f, int8_t *pv)
  175 +{
  176 + qemu_get_8s(f, (uint8_t *)pv);
  177 +}
  178 +
  179 +static inline void qemu_get_sbe16s(QEMUFile *f, int16_t *pv)
  180 +{
  181 + qemu_get_be16s(f, (uint16_t *)pv);
  182 +}
  183 +
  184 +static inline void qemu_get_sbe32s(QEMUFile *f, int32_t *pv)
  185 +{
  186 + qemu_get_be32s(f, (uint32_t *)pv);
  187 +}
  188 +
  189 +static inline void qemu_get_sbe64s(QEMUFile *f, int64_t *pv)
  190 +{
  191 + qemu_get_be64s(f, (uint64_t *)pv);
  192 +}
  193 +
97 194 #ifdef NEED_CPU_H
98 195 #if TARGET_LONG_BITS == 64
99 196 #define qemu_put_betl qemu_put_be64
100 197 #define qemu_get_betl qemu_get_be64
101 198 #define qemu_put_betls qemu_put_be64s
102 199 #define qemu_get_betls qemu_get_be64s
  200 +#define qemu_put_sbetl qemu_put_sbe64
  201 +#define qemu_get_sbetl qemu_get_sbe64
  202 +#define qemu_put_sbetls qemu_put_sbe64s
  203 +#define qemu_get_sbetls qemu_get_sbe64s
103 204 #else
104 205 #define qemu_put_betl qemu_put_be32
105 206 #define qemu_get_betl qemu_get_be32
106 207 #define qemu_put_betls qemu_put_be32s
107 208 #define qemu_get_betls qemu_get_be32s
  209 +#define qemu_put_sbetl qemu_put_sbe32
  210 +#define qemu_get_sbetl qemu_get_sbe32
  211 +#define qemu_put_sbetls qemu_put_sbe32s
  212 +#define qemu_get_sbetls qemu_get_sbe32s
108 213 #endif
109 214 #endif
110 215  
... ...
hw/pcnet.c
... ... @@ -1877,9 +1877,9 @@ static void pcnet_save(QEMUFile *f, void *opaque)
1877 1877 if (s->pci_dev)
1878 1878 pci_device_save(s->pci_dev, f);
1879 1879  
1880   - qemu_put_be32(f, s->rap);
1881   - qemu_put_be32(f, s->isr);
1882   - qemu_put_be32(f, s->lnkst);
  1880 + qemu_put_sbe32(f, s->rap);
  1881 + qemu_put_sbe32(f, s->isr);
  1882 + qemu_put_sbe32(f, s->lnkst);
1883 1883 qemu_put_be32s(f, &s->rdra);
1884 1884 qemu_put_be32s(f, &s->tdra);
1885 1885 qemu_put_buffer(f, s->prom, 16);
... ... @@ -1888,10 +1888,10 @@ static void pcnet_save(QEMUFile *f, void *opaque)
1888 1888 for (i = 0; i < 32; i++)
1889 1889 qemu_put_be16s(f, &s->bcr[i]);
1890 1890 qemu_put_be64s(f, &s->timer);
1891   - qemu_put_be32(f, s->xmit_pos);
1892   - qemu_put_be32(f, s->recv_pos);
  1891 + qemu_put_sbe32(f, s->xmit_pos);
  1892 + qemu_put_sbe32(f, s->recv_pos);
1893 1893 qemu_put_buffer(f, s->buffer, 4096);
1894   - qemu_put_be32(f, s->tx_busy);
  1894 + qemu_put_sbe32(f, s->tx_busy);
1895 1895 qemu_put_timer(f, s->poll_timer);
1896 1896 }
1897 1897  
... ... @@ -1909,9 +1909,9 @@ static int pcnet_load(QEMUFile *f, void *opaque, int version_id)
1909 1909 return ret;
1910 1910 }
1911 1911  
1912   - qemu_get_be32s(f, (uint32_t*)&s->rap);
1913   - qemu_get_be32s(f, (uint32_t*)&s->isr);
1914   - qemu_get_be32s(f, (uint32_t*)&s->lnkst);
  1912 + qemu_get_sbe32s(f, &s->rap);
  1913 + qemu_get_sbe32s(f, &s->isr);
  1914 + qemu_get_sbe32s(f, &s->lnkst);
1915 1915 qemu_get_be32s(f, &s->rdra);
1916 1916 qemu_get_be32s(f, &s->tdra);
1917 1917 qemu_get_buffer(f, s->prom, 16);
... ... @@ -1920,10 +1920,10 @@ static int pcnet_load(QEMUFile *f, void *opaque, int version_id)
1920 1920 for (i = 0; i < 32; i++)
1921 1921 qemu_get_be16s(f, &s->bcr[i]);
1922 1922 qemu_get_be64s(f, &s->timer);
1923   - qemu_get_be32s(f, (uint32_t*)&s->xmit_pos);
1924   - qemu_get_be32s(f, (uint32_t*)&s->recv_pos);
  1923 + qemu_get_sbe32s(f, &s->xmit_pos);
  1924 + qemu_get_sbe32s(f, &s->recv_pos);
1925 1925 qemu_get_buffer(f, s->buffer, 4096);
1926   - qemu_get_be32s(f, (uint32_t*)&s->tx_busy);
  1926 + qemu_get_sbe32s(f, &s->tx_busy);
1927 1927 qemu_get_timer(f, s->poll_timer);
1928 1928  
1929 1929 return 0;
... ...
hw/ptimer.c
... ... @@ -165,9 +165,9 @@ void qemu_put_ptimer(QEMUFile *f, ptimer_state *s)
165 165 qemu_put_be64s(f, &s->limit);
166 166 qemu_put_be64s(f, &s->delta);
167 167 qemu_put_be32s(f, &s->period_frac);
168   - qemu_put_be64s(f, &s->period);
169   - qemu_put_be64s(f, &s->last_event);
170   - qemu_put_be64s(f, &s->next_event);
  168 + qemu_put_sbe64s(f, &s->period);
  169 + qemu_put_sbe64s(f, &s->last_event);
  170 + qemu_put_sbe64s(f, &s->next_event);
171 171 qemu_put_timer(f, s->timer);
172 172 }
173 173  
... ... @@ -177,9 +177,9 @@ void qemu_get_ptimer(QEMUFile *f, ptimer_state *s)
177 177 qemu_get_be64s(f, &s->limit);
178 178 qemu_get_be64s(f, &s->delta);
179 179 qemu_get_be32s(f, &s->period_frac);
180   - qemu_get_be64s(f, &s->period);
181   - qemu_get_be64s(f, &s->last_event);
182   - qemu_get_be64s(f, &s->next_event);
  180 + qemu_get_sbe64s(f, &s->period);
  181 + qemu_get_sbe64s(f, &s->last_event);
  182 + qemu_get_sbe64s(f, &s->next_event);
183 183 qemu_get_timer(f, s->timer);
184 184 }
185 185  
... ...
hw/pxa2xx.c
... ... @@ -1233,9 +1233,9 @@ static void pxa2xx_rtc_save(QEMUFile *f, void *opaque)
1233 1233 qemu_put_be32s(f, &s->last_rycr);
1234 1234 qemu_put_be32s(f, &s->last_swcr);
1235 1235 qemu_put_be32s(f, &s->last_rtcpicr);
1236   - qemu_put_be64s(f, (uint64_t *) &s->last_hz);
1237   - qemu_put_be64s(f, (uint64_t *) &s->last_sw);
1238   - qemu_put_be64s(f, (uint64_t *) &s->last_pi);
  1236 + qemu_put_sbe64s(f, &s->last_hz);
  1237 + qemu_put_sbe64s(f, &s->last_sw);
  1238 + qemu_put_sbe64s(f, &s->last_pi);
1239 1239 }
1240 1240  
1241 1241 static int pxa2xx_rtc_load(QEMUFile *f, void *opaque, int version_id)
... ... @@ -1257,9 +1257,9 @@ static int pxa2xx_rtc_load(QEMUFile *f, void *opaque, int version_id)
1257 1257 qemu_get_be32s(f, &s->last_rycr);
1258 1258 qemu_get_be32s(f, &s->last_swcr);
1259 1259 qemu_get_be32s(f, &s->last_rtcpicr);
1260   - qemu_get_be64s(f, (uint64_t *) &s->last_hz);
1261   - qemu_get_be64s(f, (uint64_t *) &s->last_sw);
1262   - qemu_get_be64s(f, (uint64_t *) &s->last_pi);
  1260 + qemu_get_sbe64s(f, &s->last_hz);
  1261 + qemu_get_sbe64s(f, &s->last_sw);
  1262 + qemu_get_sbe64s(f, &s->last_pi);
1263 1263  
1264 1264 pxa2xx_rtc_alarm_update(s, s->rtsr);
1265 1265  
... ...
hw/pxa2xx_timer.c
... ... @@ -384,8 +384,8 @@ static void pxa2xx_timer_save(QEMUFile *f, void *opaque)
384 384 for (i = 0; i < 8; i ++) {
385 385 qemu_put_be32s(f, &s->tm4[i].tm.value);
386 386 qemu_put_be32(f, s->tm4[i].tm.level);
387   - qemu_put_be32s(f, (uint32_t *) &s->tm4[i].oldclock);
388   - qemu_put_be32s(f, (uint32_t *) &s->tm4[i].clock);
  387 + qemu_put_sbe32s(f, &s->tm4[i].oldclock);
  388 + qemu_put_sbe32s(f, &s->tm4[i].clock);
389 389 qemu_put_be64s(f, &s->tm4[i].lastload);
390 390 qemu_put_be32s(f, &s->tm4[i].freq);
391 391 qemu_put_be32s(f, &s->tm4[i].control);
... ... @@ -418,8 +418,8 @@ static int pxa2xx_timer_load(QEMUFile *f, void *opaque, int version_id)
418 418 for (i = 0; i < 8; i ++) {
419 419 qemu_get_be32s(f, &s->tm4[i].tm.value);
420 420 s->tm4[i].tm.level = qemu_get_be32(f);
421   - qemu_get_be32s(f, (uint32_t *) &s->tm4[i].oldclock);
422   - qemu_get_be32s(f, (uint32_t *) &s->tm4[i].clock);
  421 + qemu_get_sbe32s(f, &s->tm4[i].oldclock);
  422 + qemu_get_sbe32s(f, &s->tm4[i].clock);
423 423 qemu_get_be64s(f, &s->tm4[i].lastload);
424 424 qemu_get_be32s(f, &s->tm4[i].freq);
425 425 qemu_get_be32s(f, &s->tm4[i].control);
... ...
hw/tcx.c
... ... @@ -372,9 +372,9 @@ static void tcx_save(QEMUFile *f, void *opaque)
372 372 {
373 373 TCXState *s = opaque;
374 374  
375   - qemu_put_be16s(f, (uint16_t *)&s->height);
376   - qemu_put_be16s(f, (uint16_t *)&s->width);
377   - qemu_put_be16s(f, (uint16_t *)&s->depth);
  375 + qemu_put_be16s(f, &s->height);
  376 + qemu_put_be16s(f, &s->width);
  377 + qemu_put_be16s(f, &s->depth);
378 378 qemu_put_buffer(f, s->r, 256);
379 379 qemu_put_buffer(f, s->g, 256);
380 380 qemu_put_buffer(f, s->b, 256);
... ... @@ -391,13 +391,13 @@ static int tcx_load(QEMUFile *f, void *opaque, int version_id)
391 391 return -EINVAL;
392 392  
393 393 if (version_id == 3) {
394   - qemu_get_be32s(f, (uint32_t *)&dummy);
395   - qemu_get_be32s(f, (uint32_t *)&dummy);
396   - qemu_get_be32s(f, (uint32_t *)&dummy);
  394 + qemu_get_be32s(f, &dummy);
  395 + qemu_get_be32s(f, &dummy);
  396 + qemu_get_be32s(f, &dummy);
397 397 }
398   - qemu_get_be16s(f, (uint16_t *)&s->height);
399   - qemu_get_be16s(f, (uint16_t *)&s->width);
400   - qemu_get_be16s(f, (uint16_t *)&s->depth);
  398 + qemu_get_be16s(f, &s->height);
  399 + qemu_get_be16s(f, &s->width);
  400 + qemu_get_be16s(f, &s->depth);
401 401 qemu_get_buffer(f, s->r, 256);
402 402 qemu_get_buffer(f, s->g, 256);
403 403 qemu_get_buffer(f, s->b, 256);
... ...
hw/tmp105.c
... ... @@ -185,9 +185,9 @@ static void tmp105_save(QEMUFile *f, void *opaque)
185 185  
186 186 qemu_put_8s(f, &s->pointer);
187 187 qemu_put_8s(f, &s->config);
188   - qemu_put_be16s(f, (uint16_t *) &s->temperature);
189   - qemu_put_be16s(f, (uint16_t *) &s->limit[0]);
190   - qemu_put_be16s(f, (uint16_t *) &s->limit[1]);
  188 + qemu_put_sbe16s(f, &s->temperature);
  189 + qemu_put_sbe16s(f, &s->limit[0]);
  190 + qemu_put_sbe16s(f, &s->limit[1]);
191 191 qemu_put_byte(f, s->alarm);
192 192 s->faults = tmp105_faultq[(s->config >> 3) & 3]; /* F */
193 193  
... ... @@ -204,9 +204,9 @@ static int tmp105_load(QEMUFile *f, void *opaque, int version_id)
204 204  
205 205 qemu_get_8s(f, &s->pointer);
206 206 qemu_get_8s(f, &s->config);
207   - qemu_get_be16s(f, (uint16_t *) &s->temperature);
208   - qemu_get_be16s(f, (uint16_t *) &s->limit[0]);
209   - qemu_get_be16s(f, (uint16_t *) &s->limit[1]);
  207 + qemu_get_sbe16s(f, &s->temperature);
  208 + qemu_get_sbe16s(f, &s->limit[0]);
  209 + qemu_get_sbe16s(f, &s->limit[1]);
210 210 s->alarm = qemu_get_byte(f);
211 211  
212 212 tmp105_interrupt_update(s);
... ...
hw/tsc210x.c
... ... @@ -1046,8 +1046,8 @@ static void tsc210x_save(QEMUFile *f, void *opaque)
1046 1046 qemu_put_be16s(f, &s->pll[0]);
1047 1047 qemu_put_be16s(f, &s->pll[1]);
1048 1048 qemu_put_be16s(f, &s->volume);
1049   - qemu_put_be64(f, (uint64_t) (s->volume_change - now));
1050   - qemu_put_be64(f, (uint64_t) (s->powerdown - now));
  1049 + qemu_put_sbe64(f, (s->volume_change - now));
  1050 + qemu_put_sbe64(f, (s->powerdown - now));
1051 1051 qemu_put_byte(f, s->softstep);
1052 1052 qemu_put_be16s(f, &s->dac_power);
1053 1053  
... ... @@ -1092,8 +1092,8 @@ static int tsc210x_load(QEMUFile *f, void *opaque, int version_id)
1092 1092 qemu_get_be16s(f, &s->pll[0]);
1093 1093 qemu_get_be16s(f, &s->pll[1]);
1094 1094 qemu_get_be16s(f, &s->volume);
1095   - s->volume_change = (int64_t) qemu_get_be64(f) + now;
1096   - s->powerdown = (int64_t) qemu_get_be64(f) + now;
  1095 + s->volume_change = qemu_get_sbe64(f) + now;
  1096 + s->powerdown = qemu_get_sbe64(f) + now;
1097 1097 s->softstep = qemu_get_byte(f);
1098 1098 qemu_get_be16s(f, &s->dac_power);
1099 1099  
... ...
target-i386/machine.c
... ... @@ -102,7 +102,7 @@ void cpu_save(QEMUFile *f, void *opaque)
102 102  
103 103 /* MMU */
104 104 a20_mask = (int32_t) env->a20_mask;
105   - qemu_put_be32s(f, &a20_mask);
  105 + qemu_put_sbe32s(f, &a20_mask);
106 106  
107 107 /* XMM */
108 108 qemu_put_be32s(f, &env->mxcsr);
... ... @@ -261,7 +261,7 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id)
261 261 qemu_get_betls(f, &env->dr[i]);
262 262  
263 263 /* MMU */
264   - qemu_get_be32s(f, &a20_mask);
  264 + qemu_get_sbe32s(f, &a20_mask);
265 265 env->a20_mask = a20_mask;
266 266  
267 267 qemu_get_be32s(f, &env->mxcsr);
... ...