Module Name: src Committed By: kiyohara Date: Sun Apr 21 04:28:05 UTC 2013
Modified Files: src/sys/dev/rasops: rasops2.c rasops4.c Log Message: Support little endian makestamp. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/dev/rasops/rasops2.c cvs rdiff -u -r1.10 -r1.11 src/sys/dev/rasops/rasops4.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/rasops/rasops2.c diff -u src/sys/dev/rasops/rasops2.c:1.17 src/sys/dev/rasops/rasops2.c:1.18 --- src/sys/dev/rasops/rasops2.c:1.17 Tue May 4 19:16:22 2010 +++ src/sys/dev/rasops/rasops2.c Sun Apr 21 04:28:05 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rasops2.c,v 1.17 2010/05/04 19:16:22 macallan Exp $ */ +/* $NetBSD: rasops2.c,v 1.18 2013/04/21 04:28:05 kiyohara Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rasops2.c,v 1.17 2010/05/04 19:16:22 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rasops2.c,v 1.18 2013/04/21 04:28:05 kiyohara Exp $"); #include "opt_rasops.h" @@ -229,10 +229,24 @@ rasops2_makestamp(struct rasops_info *ri stamp_attr = attr; for (i = 0; i < 16; i++) { - stamp[i] = (i & 1 ? fg : bg); - stamp[i] |= (i & 2 ? fg : bg) << 2; - stamp[i] |= (i & 4 ? fg : bg) << 4; - stamp[i] |= (i & 8 ? fg : bg) << 6; +#if BYTE_ORDER == BIG_ENDIAN +#define NEED_LITTLE_ENDIAN_STAMP RI_BSWAP +#else +#define NEED_LITTLE_ENDIAN_STAMP 0 +#endif + if ((ri->ri_flg & RI_BSWAP) == NEED_LITTLE_ENDIAN_STAMP) { + /* littel endian */ + stamp[i] = (i & 8 ? fg : bg); + stamp[i] |= (i & 4 ? fg : bg) << 2; + stamp[i] |= (i & 2 ? fg : bg) << 4; + stamp[i] |= (i & 1 ? fg : bg) << 6; + } else { + /* big endian */ + stamp[i] = (i & 1 ? fg : bg); + stamp[i] |= (i & 2 ? fg : bg) << 2; + stamp[i] |= (i & 4 ? fg : bg) << 4; + stamp[i] |= (i & 8 ? fg : bg) << 6; + } } } Index: src/sys/dev/rasops/rasops4.c diff -u src/sys/dev/rasops/rasops4.c:1.10 src/sys/dev/rasops/rasops4.c:1.11 --- src/sys/dev/rasops/rasops4.c:1.10 Tue May 4 04:57:34 2010 +++ src/sys/dev/rasops/rasops4.c Sun Apr 21 04:28:05 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rasops4.c,v 1.10 2010/05/04 04:57:34 macallan Exp $ */ +/* $NetBSD: rasops4.c,v 1.11 2013/04/21 04:28:05 kiyohara Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rasops4.c,v 1.10 2010/05/04 04:57:34 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rasops4.c,v 1.11 2013/04/21 04:28:05 kiyohara Exp $"); #include "opt_rasops.h" @@ -229,10 +229,24 @@ rasops4_makestamp(struct rasops_info *ri stamp_attr = attr; for (i = 0; i < 16; i++) { - stamp[i] = (i & 1 ? fg : bg) << 8; - stamp[i] |= (i & 2 ? fg : bg) << 12; - stamp[i] |= (i & 4 ? fg : bg) << 0; - stamp[i] |= (i & 8 ? fg : bg) << 4; +#if BYTE_ORDER == BIG_ENDIAN +#define NEED_LITTLE_ENDIAN_STAMP RI_BSWAP +#else +#define NEED_LITTLE_ENDIAN_STAMP 0 +#endif + if ((ri->ri_flg & RI_BSWAP) == NEED_LITTLE_ENDIAN_STAMP) { + /* little endian */ + stamp[i] = (i & 1 ? fg : bg) << 12; + stamp[i] |= (i & 2 ? fg : bg) << 8; + stamp[i] |= (i & 4 ? fg : bg) << 4; + stamp[i] |= (i & 8 ? fg : bg) << 0; + } else { + /* big endian */ + stamp[i] = (i & 1 ? fg : bg) << 8; + stamp[i] |= (i & 2 ? fg : bg) << 12; + stamp[i] |= (i & 4 ? fg : bg) << 0; + stamp[i] |= (i & 8 ? fg : bg) << 4; + } } }