#define LEFT_POS(bpp) (32 - bpp)
#define SHIFT_HIGH(val, bits) ((val) >> (bits))
#define SHIFT_LOW(val, bits) ((val) << (bits))
+#define BIT_NR(b) (7 - (b))
#else
#define LEFT_POS(bpp) (0)
#define SHIFT_HIGH(val, bits) ((val) << (bits))
#define SHIFT_LOW(val, bits) ((val) >> (bits))
+#define BIT_NR(b) (b)
#endif
static inline void color_imageblit(const struct fb_image *image,
u32 i, j, l;
dst2 = (u32 __iomem *) dst1;
+ fgcolor <<= LEFT_POS(bpp);
+ bgcolor <<= LEFT_POS(bpp);
for (i = image->height; i--; ) {
shift = val = 0;
while (j--) {
l--;
- color = (*s & (1 << l)) ? fgcolor : bgcolor;
- color <<= LEFT_POS(bpp);
+ color = (*s & 1 << (BIT_NR(l))) ? fgcolor : bgcolor;
val |= SHIFT_HIGH(color, shift);
/* Did the bitshift spill bits to the next long? */