fb_sysmove_buf_aligned(info, &info->pixmap, data, d_pitch, src, s_pitch, cursor->image.height);
fb_pad_aligned_buffer(data, d_pitch, src, s_pitch, cursor->image.height);
static int rivafb_cursor(struct fb_info *info, struct fb_cursor *cursor){	struct riva_par *par = (struct riva_par *) info->par;	u8 data[MAX_CURS * MAX_CURS/8];	u16 fg, bg;	int i, set = cursor->set;	if (cursor->image.width > MAX_CURS ||	    cursor->image.height > MAX_CURS)		return soft_cursor(info, cursor);	par->riva.ShowHideCursor(&par->riva, 0);	if (par->cursor_reset) {		set = FB_CUR_SETALL;		par->cursor_reset = 0;	}	if (set & FB_CUR_SETSIZE)		memset_io(par->riva.CURSOR, 0, MAX_CURS * MAX_CURS * 2);	if (set & FB_CUR_SETPOS) {		u32 xx, yy, temp;		yy = cursor->image.dy - info->var.yoffset;		xx = cursor->image.dx - info->var.xoffset;		temp = xx & 0xFFFF;		temp |= yy << 16;		NV_WR32(par->riva.PRAMDAC, 0x0000300, temp);	}	if (set & (FB_CUR_SETSHAPE | FB_CUR_SETCMAP | FB_CUR_SETIMAGE)) {		u32 bg_idx = cursor->image.bg_color;		u32 fg_idx = cursor->image.fg_color;		u32 s_pitch = (cursor->image.width+7) >> 3;		u32 d_pitch = MAX_CURS/8;		u8 *dat = (u8 *) cursor->image.data;		u8 *msk = (u8 *) cursor->mask;		u8 *src;				src = kmalloc(s_pitch * cursor->image.height, GFP_ATOMIC);		if (src) {			switch (cursor->rop) {			case ROP_XOR:				for (i = 0; i < s_pitch * cursor->image.height;				     i++)					src[i] = dat[i] ^ msk[i];				break;			case ROP_COPY:			default:				for (i = 0; i < s_pitch * cursor->image.height;				     i++)					src[i] = dat[i] & msk[i];				break;			}			fb_sysmove_buf_aligned(info, &info->pixmap, data,					       d_pitch, src, s_pitch,					       cursor->image.height);			bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) |				((info->cmap.green[bg_idx] & 0xf8) << 2) |				((info->cmap.blue[bg_idx] & 0xf8) >> 3) |				1 << 15;			fg = ((info->cmap.red[fg_idx] & 0xf8) << 7) |				((info->cmap.green[fg_idx] & 0xf8) << 2) |				((info->cmap.blue[fg_idx] & 0xf8) >> 3) |				1 << 15;			par->riva.LockUnlock(&par->riva, 0);			rivafb_load_cursor_image(par, data, bg, fg,						 cursor->image.width,						 cursor->image.height);			kfree(src);		}	}	if (cursor->enable)		par->riva.ShowHideCursor(&par->riva, 1);	return 0;}