Commit 53c862a88e209ecfb42d47a16ce92f92daf68c0a
1 parent
b6b8bd18
endianness fixes
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@958 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
15 additions
and
3 deletions
hw/vga_template.h
... | ... | @@ -346,7 +346,7 @@ static void glue(vga_draw_line8_, DEPTH)(VGAState *s1, uint8_t *d, |
346 | 346 | static void glue(vga_draw_line15_, DEPTH)(VGAState *s1, uint8_t *d, |
347 | 347 | const uint8_t *s, int width) |
348 | 348 | { |
349 | -#if DEPTH == 15 && !defined(WORDS_BIGENDIAN) | |
349 | +#if DEPTH == 15 && defined(WORDS_BIGENDIAN) == defined(TARGET_WORDS_BIGENDIAN) | |
350 | 350 | memcpy(d, s, width * 2); |
351 | 351 | #else |
352 | 352 | int w; |
... | ... | @@ -371,7 +371,7 @@ static void glue(vga_draw_line15_, DEPTH)(VGAState *s1, uint8_t *d, |
371 | 371 | static void glue(vga_draw_line16_, DEPTH)(VGAState *s1, uint8_t *d, |
372 | 372 | const uint8_t *s, int width) |
373 | 373 | { |
374 | -#if DEPTH == 16 && !defined(WORDS_BIGENDIAN) | |
374 | +#if DEPTH == 16 && defined(WORDS_BIGENDIAN) == defined(TARGET_WORDS_BIGENDIAN) | |
375 | 375 | memcpy(d, s, width * 2); |
376 | 376 | #else |
377 | 377 | int w; |
... | ... | @@ -401,9 +401,15 @@ static void glue(vga_draw_line24_, DEPTH)(VGAState *s1, uint8_t *d, |
401 | 401 | |
402 | 402 | w = width; |
403 | 403 | do { |
404 | +#if defined(TARGET_WORDS_BIGENDIAN) | |
405 | + r = s[0]; | |
406 | + g = s[1]; | |
407 | + b = s[2]; | |
408 | +#else | |
404 | 409 | b = s[0]; |
405 | 410 | g = s[1]; |
406 | 411 | r = s[2]; |
412 | +#endif | |
407 | 413 | ((PIXEL_TYPE *)d)[0] = glue(rgb_to_pixel, DEPTH)(r, g, b); |
408 | 414 | s += 3; |
409 | 415 | d += BPP; |
... | ... | @@ -416,7 +422,7 @@ static void glue(vga_draw_line24_, DEPTH)(VGAState *s1, uint8_t *d, |
416 | 422 | static void glue(vga_draw_line32_, DEPTH)(VGAState *s1, uint8_t *d, |
417 | 423 | const uint8_t *s, int width) |
418 | 424 | { |
419 | -#if DEPTH == 32 && !defined(WORDS_BIGENDIAN) | |
425 | +#if DEPTH == 32 && defined(WORDS_BIGENDIAN) == defined(TARGET_WORDS_BIGENDIAN) | |
420 | 426 | memcpy(d, s, width * 4); |
421 | 427 | #else |
422 | 428 | int w; |
... | ... | @@ -424,9 +430,15 @@ static void glue(vga_draw_line32_, DEPTH)(VGAState *s1, uint8_t *d, |
424 | 430 | |
425 | 431 | w = width; |
426 | 432 | do { |
433 | +#if defined(TARGET_WORDS_BIGENDIAN) | |
434 | + r = s[1]; | |
435 | + g = s[2]; | |
436 | + b = s[3]; | |
437 | +#else | |
427 | 438 | b = s[0]; |
428 | 439 | g = s[1]; |
429 | 440 | r = s[2]; |
441 | +#endif | |
430 | 442 | ((PIXEL_TYPE *)d)[0] = glue(rgb_to_pixel, DEPTH)(r, g, b); |
431 | 443 | s += 4; |
432 | 444 | d += BPP; | ... | ... |