summaryrefslogtreecommitdiffstats
path: root/sys/dev/syscons
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2010-03-24 15:40:18 +0000
committerjkim <jkim@FreeBSD.org>2010-03-24 15:40:18 +0000
commit5f4a0e75c2e87a86f1198cb1e64bf36e0bc4c320 (patch)
tree12ae2d3ee5e1f4a451ee27507c40ee11ced25015 /sys/dev/syscons
parent0d9a14548aaf115ee268ccc6039bed619931006a (diff)
downloadFreeBSD-src-5f4a0e75c2e87a86f1198cb1e64bf36e0bc4c320.zip
FreeBSD-src-5f4a0e75c2e87a86f1198cb1e64bf36e0bc4c320.tar.gz
Align memory access of 24-bit pixel renderer to word boundary.
Diffstat (limited to 'sys/dev/syscons')
-rw-r--r--sys/dev/syscons/scvgarndr.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/dev/syscons/scvgarndr.c b/sys/dev/syscons/scvgarndr.c
index 583e51a..dbee6f2 100644
--- a/sys/dev/syscons/scvgarndr.c
+++ b/sys/dev/syscons/scvgarndr.c
@@ -184,8 +184,13 @@ static u_short mouse_or_mask[16] = {
writel(pos, vga_palette32[color]); \
break; \
case 24: \
- writew(pos, vga_palette32[color]); \
- writeb(pos + 2, vga_palette32[color] >> 16); \
+ if (((pos) & 1) == 0) { \
+ writew(pos, vga_palette32[color]); \
+ writeb(pos + 2, vga_palette32[color] >> 16);\
+ } else { \
+ writeb(pos, vga_palette32[color]); \
+ writew(pos + 1, vga_palette32[color] >> 8);\
+ } \
break; \
case 16: \
if (scp->sc->adp->va_info.vi_pixel_fsizes[1] == 5)\
OpenPOWER on IntegriCloud