Commit a350e694245c1ce9492c67db83e1fd325e767769
1 parent
58565070
Avoid arithmetics on void * in MusicPal audio code (Jan Kiszka).
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4373 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
8 additions
and
8 deletions
hw/musicpal.c
| @@ -244,7 +244,7 @@ typedef struct musicpal_audio_state { | @@ -244,7 +244,7 @@ typedef struct musicpal_audio_state { | ||
| 244 | uint32_t status; | 244 | uint32_t status; |
| 245 | uint32_t irq_enable; | 245 | uint32_t irq_enable; |
| 246 | unsigned long phys_buf; | 246 | unsigned long phys_buf; |
| 247 | - void *target_buffer; | 247 | + int8_t *target_buffer; |
| 248 | unsigned int threshold; | 248 | unsigned int threshold; |
| 249 | unsigned int play_pos; | 249 | unsigned int play_pos; |
| 250 | unsigned int last_free; | 250 | unsigned int last_free; |
| @@ -256,7 +256,7 @@ static void audio_callback(void *opaque, int free_out, int free_in) | @@ -256,7 +256,7 @@ static void audio_callback(void *opaque, int free_out, int free_in) | ||
| 256 | { | 256 | { |
| 257 | musicpal_audio_state *s = opaque; | 257 | musicpal_audio_state *s = opaque; |
| 258 | int16_t *codec_buffer; | 258 | int16_t *codec_buffer; |
| 259 | - void *mem_buffer; | 259 | + int8_t *mem_buffer; |
| 260 | int pos, block_size; | 260 | int pos, block_size; |
| 261 | 261 | ||
| 262 | if (!(s->playback_mode & MP_AUDIO_PLAYBACK_EN)) | 262 | if (!(s->playback_mode & MP_AUDIO_PLAYBACK_EN)) |
| @@ -277,8 +277,8 @@ static void audio_callback(void *opaque, int free_out, int free_in) | @@ -277,8 +277,8 @@ static void audio_callback(void *opaque, int free_out, int free_in) | ||
| 277 | if (s->playback_mode & MP_AUDIO_MONO) { | 277 | if (s->playback_mode & MP_AUDIO_MONO) { |
| 278 | codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); | 278 | codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); |
| 279 | for (pos = 0; pos < block_size; pos += 2) { | 279 | for (pos = 0; pos < block_size; pos += 2) { |
| 280 | - *codec_buffer++ = *(uint16_t *)mem_buffer; | ||
| 281 | - *codec_buffer++ = *(uint16_t *)mem_buffer; | 280 | + *codec_buffer++ = *(int16_t *)mem_buffer; |
| 281 | + *codec_buffer++ = *(int16_t *)mem_buffer; | ||
| 282 | mem_buffer += 2; | 282 | mem_buffer += 2; |
| 283 | } | 283 | } |
| 284 | } else | 284 | } else |
| @@ -288,14 +288,14 @@ static void audio_callback(void *opaque, int free_out, int free_in) | @@ -288,14 +288,14 @@ static void audio_callback(void *opaque, int free_out, int free_in) | ||
| 288 | if (s->playback_mode & MP_AUDIO_MONO) { | 288 | if (s->playback_mode & MP_AUDIO_MONO) { |
| 289 | codec_buffer = wm8750_dac_buffer(s->wm, block_size); | 289 | codec_buffer = wm8750_dac_buffer(s->wm, block_size); |
| 290 | for (pos = 0; pos < block_size; pos++) { | 290 | for (pos = 0; pos < block_size; pos++) { |
| 291 | - *codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer); | ||
| 292 | - *codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++); | 291 | + *codec_buffer++ = cpu_to_le16(256 * *mem_buffer); |
| 292 | + *codec_buffer++ = cpu_to_le16(256 * *mem_buffer++); | ||
| 293 | } | 293 | } |
| 294 | } else { | 294 | } else { |
| 295 | codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); | 295 | codec_buffer = wm8750_dac_buffer(s->wm, block_size >> 1); |
| 296 | for (pos = 0; pos < block_size; pos += 2) { | 296 | for (pos = 0; pos < block_size; pos += 2) { |
| 297 | - *codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++); | ||
| 298 | - *codec_buffer++ = cpu_to_le16(256 * *(int8_t *)mem_buffer++); | 297 | + *codec_buffer++ = cpu_to_le16(256 * *mem_buffer++); |
| 298 | + *codec_buffer++ = cpu_to_le16(256 * *mem_buffer++); | ||
| 299 | } | 299 | } |
| 300 | } | 300 | } |
| 301 | } | 301 | } |