color = (*s & (1 << l)) ? fgcolor : bgcolor; 
color = (*s & 1 << (BIT_NR(l))) ? fgcolor : bgcolor; 
static inline void slow_imageblit(const struct fb_image *image, struct fb_info *p, 				  u8 __iomem *dst1, u32 fgcolor,				  u32 bgcolor, 				  u32 start_index,				  u32 pitch_index){	u32 shift, color = 0, bpp = p->var.bits_per_pixel;	u32 __iomem *dst, *dst2;	u32 val, pitch = p->fix.line_length;	u32 null_bits = 32 - bpp;	u32 spitch = (image->width+7)/8;	const u8 *src = image->data, *s;	u32 i, j, l;		dst2 = (u32 __iomem *) dst1;	for (i = image->height; i--; ) {		shift = val = 0;		l = 8;		j = image->width;		dst = (u32 __iomem *) dst1;		s = src;		/* write leading bits */		if (start_index) {			u32 start_mask = ~(SHIFT_HIGH(~(u32)0, start_index));			val = FB_READL(dst) & start_mask;			shift = start_index;		}		while (j--) {			l--;			color = (*s & (1 << l)) ? fgcolor : bgcolor;			color <<= LEFT_POS(bpp);			val |= SHIFT_HIGH(color, shift);						/* Did the bitshift spill bits to the next long? */			if (shift >= null_bits) {				FB_WRITEL(val, dst++);				val = (shift == null_bits) ? 0 :					 SHIFT_LOW(color,32 - shift);			}			shift += bpp;			shift &= (32 - 1);			if (!l) { l = 8; s++; };		}		/* write trailing bits */ 		if (shift) {			u32 end_mask = SHIFT_HIGH(~(u32)0, shift);			FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);		}				dst1 += pitch;		src += spitch;			if (pitch_index) {			dst2 += pitch;			dst1 = (u8 __iomem *)((long __force)dst2 & ~(sizeof(u32) - 1));			start_index += pitch_index;			start_index &= 32 - 1;		}			}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/81d3e147ec9ffc6ef04b5f05afa4bef22487b32b/cfbimgblt.c/buggy/drivers/video/cfbimgblt.c