fbdev: Possible endian fix in cfbimageblit
PATCH RESEND 3/7 fbdev: Possible endian fix in cfbimageblit
Fix possible endian bug(?) when bit testing in slow_imageblit(). This function is rarely called (only if (width * bpp) % 32 != 0) thus the bug is not triggered.
However, if the console is rotated at 90 or 270 degrees, the height becomes the width, and a variety of fonts have heights that will force a call to slow_imageblit().
--- cfbimgblt.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-)
I inadvertently included a semicolon here
#define BIT_NR(b) (7 - (b));
Tony
drivers/video/cfbimgblt.c +3 -1
@@ -80,10 +80,12 @@ static u32 cfb_tab32[] = {#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,
@@ -177,7 +179,7 @@ static inline void slow_imageblit(constwhile (j--) { l--; - color = (*s & (1 << l)) ? fgcolor : bgcolor; + color = (*s &1 << (BIT_NR (l))) ? fgcolor : bgcolor; color <<=LEFT_POS (bpp); val |=SHIFT_HIGH (color, shift);
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php