diff options
author | Mark Kettenis <mark.kettenis@xs4all.nl> | 2009-11-02 11:08:13 -0500 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2009-11-02 11:09:03 -0500 |
commit | cc0682924e84006662d77557876123a88f76afa0 (patch) | |
tree | 5cfd097a812870bd222f5dd7508dd70f934c3c97 | |
parent | 5b60ef6cbc140f95295e5a8c32625b4f572063e1 (diff) |
Use hardware byteswap on big-endian platforms
Fixes 16 and 32 bit-per-pixel modes with a Tech Source Raptor GFX-8M
board on OpenBSD/sparc64
Signed-off-by: Adam Jackson <ajax@redhat.com>
-rw-r--r-- | src/i128init.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/i128init.c b/src/i128init.c index d57e295..1a34053 100644 --- a/src/i128init.c +++ b/src/i128init.c @@ -451,7 +451,20 @@ I128Init(ScrnInfoPtr pScrn, DisplayModePtr mode) pI128->DoubleScan = FALSE; pI128->mem.rbase_g[CRT_ZOOM] = (pI128->DoubleScan ? 0x00000001 : 0x00000000); - pI128->mem.rbase_w[MW0_CTRL] = 0x00000000; + switch (pI128->bitsPerPixel) { +#if X_BYTE_ORDER == X_BIG_ENDIAN + case 32: + pI128->mem.rbase_w[MW0_CTRL] = 0x00060000; + break; + case 16: + pI128->mem.rbase_w[MW0_CTRL] = 0x00020000; + break; +#endif + default: + pI128->mem.rbase_w[MW0_CTRL] = 0x00000000; + break; + } + switch (pI128->MemorySize) { case 2048: pI128->mem.rbase_w[MW0_SZ] = 0x00000009; |