add: NV_REG32(NV32_NV10FB2STADD32) = (startadd & 0xfffffffc);
context: status_t nv_crtc2_set_display_start(uint32 startadd,uint8 bpp) {	uint8 temp;	LOG(4,("CRTC2: setting card RAM to be displayed bpp %d\n", bpp));	LOG(2,("CRTC2: startadd: $%08x\n", startadd));	LOG(2,("CRTC2: frameRAM: $%08x\n", si->framebuffer));	LOG(2,("CRTC2: framebuffer: $%08x\n", si->fbc.frame_buffer));//fixme? on TNT1, TNT2, and GF2MX400 not needed. How about the rest??	/* make sure we are in retrace on MIL cards (if possible), because otherwise	 * distortions might occur during our reprogramming them (no double buffering) *///	if (si->ps.card_type < G100)//	{		/* we might have no retraces during setmode! *///		uint32 timeout = 0;		/* wait 25mS max. for retrace to occur (refresh > 40Hz) *///		while ((!(ACCR(STATUS) & 0x08)) && (timeout < (25000/4)))//		{//			snooze(4);//			timeout++;//		}//	}//	if (si->ps.card_arch == NV04A)//	{		/* upto 32Mb RAM adressing: must be used this way on pre-NV10! */		/* set standard registers */		/* (NVidia: startadress in 32bit words (b2 - b17) *///		CRTC2W(FBSTADDL, ((startadd & 0x000003fc) >> 2));//		CRTC2W(FBSTADDH, ((startadd & 0x0003fc00) >> 10));		/* set extended registers */		/* NV4 extended bits: (b18-22) *///		temp = (CRTC2R(REPAINT0) & 0xe0);//		CRTC2W(REPAINT0, (temp | ((startadd & 0x007c0000) >> 18)));		/* NV4 extended bits: (b23-24) *///		temp = (CRTC2R(HEB) & 0x9f);//		CRTC2W(HEB, (temp | ((startadd & 0x01800000) >> 18)));//	}//	else	{		/* upto 4Gb RAM adressing: must be used on NV10 and later! */		/* NOTE:		 * While this register also exists on pre-NV10 cards, it will		 * wrap-around at 16Mb boundaries!! */		/* 30bit adress in 32bit words */		NV_REG32(NV32_NV10FB2STADD32) = (startadd & 0xfffffffc);	}	/* set NV4/NV10 byte adress: (b0 - 1) */	temp = (ATB2R(HORPIXPAN) & 0xf9);	ATB2W(HORPIXPAN, (temp | ((startadd & 0x00000003) << 1)));	return B_OK;}