drivers/video/riva/fbdev.c broken on x86_64

From: J. Ryan Earl
Date: Fri May 14 2004 - 13:53:07 EST


The following snippet is from drivers/video/riva/fbdev.c I'm put arrows on the lines I think break cursor loading. It does segfault, but boy does the cursor look weird. The code in this function is so confusing, I have no idea what was going on or how to fix it:

/**
* rivafb_load_cursor_image - load cursor image to hardware
* @data: address to monochrome bitmap (1 = foreground color, 0 = background)
* @par: pointer to private data
* @w: width of cursor image in pixels
* @h: height of cursor image in scanlines
* @bg: background color (ARGB1555) - alpha bit determines opacity
* @fg: foreground color (ARGB1555)
*
* DESCRIPTiON:
* Loads cursor image based on a monochrome source and mask bitmap. The
* image bits determines the color of the pixel, 0 for background, 1 for
* foreground. Only the affected region (as determined by @w and @h
* parameters) will be updated.
*
* CALLED FROM:
* rivafb_cursor()
*/
static void rivafb_load_cursor_image(struct riva_par *par, u8 *data,
u8 *mask, u16 bg, u16 fg, u32 w, u32 h)
{
int i, j, k = 0;
u32 b, m, tmp;

for (i = 0; i < h; i++) {
-> b = *((u32 *)data);
b = (u32)((u32 *)b + 1);
-> m = *((u32 *)mask);
m = (u32)((u32 *)m + 1);
reverse_order(&b);


-ryan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/