#include "dat.h"
#include "fns.h"
#include "io.h"
+#include "../port/pci.h"
#include "../port/error.h"
#define Image IMAGE
static void
s3linear(VGAscr* scr, int, int)
{
+ uvlong mmiobase;
+ ulong mmiosize;
int id, j;
- ulong mmiobase, mmiosize;
Pcidev *p;
p = scr->pci;
* Find a place for the cursor data in display memory.
* Must be on a 1024-byte boundary.
*/
- storage = (scr->gscreen->width*sizeof(ulong)*scr->gscreen->r.max.y+1023)/1024;
+ storage = (scr->pitch*scr->height+1023)/1024;
vgaxo(Crtx, 0x4C, storage>>8);
vgaxo(Crtx, 0x4D, storage & 0xFF);
storage *= 1024;
* Load, locate and enable the cursor
* in Microsoft Windows format.
*/
- s3load(scr, &arrow);
+ s3load(scr, &cursor);
s3move(scr, ZP);
vgaxo(Crtx, 0x55, vgaxi(Crtx, 0x55) & ~0x10);
s3vsyncactive();
{
enum { Bitbltop = 0xCC }; /* copy source */
ulong *mmio;
- ulong cmd, stride;
+ ulong cmd;
Point dp, sp;
- int did, d;
+ int did;
- d = scr->gscreen->depth;
- did = (d-8)/8;
+ did = (scr->gscreen->depth-8)/8;
cmd = 0x00000020|(Bitbltop<<17)|(did<<2);
- stride = Dx(scr->gscreen->r)*d/8;
if(r.min.x <= sr.min.x){
cmd |= 1<<25;
waitforfifo(scr, 7);
mmio[SrcBase] = scr->paddr;
mmio[DstBase] = scr->paddr;
- mmio[Stride] = (stride<<16)|stride;
+ mmio[Stride] = (scr->pitch<<16)|scr->pitch;
mmio[WidthHeight] = ((Dx(r)-1)<<16)|Dy(r);
mmio[SrcXY] = (sp.x<<16)|sp.y;
mmio[DestXY] = (dp.x<<16)|dp.y;
{
enum { Bitbltop = 0xCC }; /* copy source */
ulong *mmio;
- ulong cmd, stride;
- int did, d;
+ ulong cmd;
+ int did;
- d = scr->gscreen->depth;
- did = (d-8)/8;
+ did = (scr->gscreen->depth-8)/8;
cmd = 0x16000120|(Bitbltop<<17)|(did<<2);
- stride = Dx(scr->gscreen->r)*d/8;
mmio = scr->mmio;
waitforlinearfifo(scr);
waitforfifo(scr, 8);
mmio[SrcBase] = scr->paddr;
mmio[DstBase] = scr->paddr;
mmio[DstBase] = scr->paddr;
- mmio[Stride] = (stride<<16)|stride;
+ mmio[Stride] = (scr->pitch<<16)|scr->pitch;
mmio[FgrdData] = sval;
mmio[WidthHeight] = ((Dx(r)-1)<<16)|Dy(r);
mmio[DestXY] = (r.min.x<<16)|r.min.y;