Commit b8ed223bfe3b1af434adce07b2981ce8b5b9ecb4
1 parent
c970a162
big endian fixes
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@437 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
15 additions
and
19 deletions
hw/vga.c
| @@ -141,12 +141,24 @@ static const uint8_t gr_mask[16] = { | @@ -141,12 +141,24 @@ static const uint8_t gr_mask[16] = { | ||
| 141 | (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >> 8) | \ | 141 | (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >> 8) | \ |
| 142 | (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24) )) | 142 | (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24) )) |
| 143 | 143 | ||
| 144 | -#ifdef WORD_BIGENDIAN | 144 | +#ifdef WORDS_BIGENDIAN |
| 145 | #define PAT(x) cbswap_32(x) | 145 | #define PAT(x) cbswap_32(x) |
| 146 | #else | 146 | #else |
| 147 | #define PAT(x) (x) | 147 | #define PAT(x) (x) |
| 148 | #endif | 148 | #endif |
| 149 | 149 | ||
| 150 | +#ifdef WORDS_BIGENDIAN | ||
| 151 | +#define BIG 1 | ||
| 152 | +#else | ||
| 153 | +#define BIG 0 | ||
| 154 | +#endif | ||
| 155 | + | ||
| 156 | +#ifdef WORDS_BIGENDIAN | ||
| 157 | +#define GET_PLANE(data, p) (((data) >> (24 - (p) * 8)) & 0xff) | ||
| 158 | +#else | ||
| 159 | +#define GET_PLANE(data, p) (((data) >> ((p) * 8)) & 0xff) | ||
| 160 | +#endif | ||
| 161 | + | ||
| 150 | static const uint32_t mask16[16] = { | 162 | static const uint32_t mask16[16] = { |
| 151 | PAT(0x00000000), | 163 | PAT(0x00000000), |
| 152 | PAT(0x000000ff), | 164 | PAT(0x000000ff), |
| @@ -168,7 +180,7 @@ static const uint32_t mask16[16] = { | @@ -168,7 +180,7 @@ static const uint32_t mask16[16] = { | ||
| 168 | 180 | ||
| 169 | #undef PAT | 181 | #undef PAT |
| 170 | 182 | ||
| 171 | -#ifdef WORD_BIGENDIAN | 183 | +#ifdef WORDS_BIGENDIAN |
| 172 | #define PAT(x) (x) | 184 | #define PAT(x) (x) |
| 173 | #else | 185 | #else |
| 174 | #define PAT(x) cbswap_32(x) | 186 | #define PAT(x) cbswap_32(x) |
| @@ -465,11 +477,7 @@ static uint32_t vga_mem_readb(uint32_t addr) | @@ -465,11 +477,7 @@ static uint32_t vga_mem_readb(uint32_t addr) | ||
| 465 | if (!(s->gr[5] & 0x08)) { | 477 | if (!(s->gr[5] & 0x08)) { |
| 466 | /* read mode 0 */ | 478 | /* read mode 0 */ |
| 467 | plane = s->gr[4]; | 479 | plane = s->gr[4]; |
| 468 | -#ifdef WORD_BIGENDIAN | ||
| 469 | - ret = (s->latch >> (24 - (plane * 8))) & 0xff; | ||
| 470 | -#else | ||
| 471 | - ret = (s->latch >> (plane * 8)) & 0xff; | ||
| 472 | -#endif | 480 | + ret = GET_PLANE(s->latch, plane); |
| 473 | } else { | 481 | } else { |
| 474 | /* read mode 1 */ | 482 | /* read mode 1 */ |
| 475 | ret = (s->latch ^ mask16[s->gr[2]]) & mask16[s->gr[7]]; | 483 | ret = (s->latch ^ mask16[s->gr[2]]) & mask16[s->gr[7]]; |
| @@ -641,18 +649,6 @@ void vga_mem_writel(uint32_t addr, uint32_t val) | @@ -641,18 +649,6 @@ void vga_mem_writel(uint32_t addr, uint32_t val) | ||
| 641 | vga_mem_writeb(addr + 3, (val >> 24) & 0xff); | 649 | vga_mem_writeb(addr + 3, (val >> 24) & 0xff); |
| 642 | } | 650 | } |
| 643 | 651 | ||
| 644 | -#ifdef WORD_BIGENDIAN | ||
| 645 | -#define BIG 1 | ||
| 646 | -#else | ||
| 647 | -#define BIG 0 | ||
| 648 | -#endif | ||
| 649 | - | ||
| 650 | -#ifdef WORDS_BIGENDIAN | ||
| 651 | -#define GET_PLANE(data, p) (((data) >> (24 - (p) * 8)) & 0xff) | ||
| 652 | -#else | ||
| 653 | -#define GET_PLANE(data, p) (((data) >> ((p) * 8)) & 0xff) | ||
| 654 | -#endif | ||
| 655 | - | ||
| 656 | typedef void vga_draw_glyph8_func(uint8_t *d, int linesize, | 652 | typedef void vga_draw_glyph8_func(uint8_t *d, int linesize, |
| 657 | const uint8_t *font_ptr, int h, | 653 | const uint8_t *font_ptr, int h, |
| 658 | uint32_t fgcol, uint32_t bgcol); | 654 | uint32_t fgcol, uint32_t bgcol); |