X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fdrvutil.c;h=1bc6b785fae836613e4b81fe3c64714e4dc55fb7;hb=7e5607004c3221d55c7992148b2f0d958cf28533;hp=99d02f6235e0b2a69349e8a0ab16ef815cbf6a5f;hpb=b98fbd4e9c71447d81fc9bd643fb174c76346e0f;p=tpg%2Facess2.git diff --git a/Kernel/drvutil.c b/Kernel/drvutil.c index 99d02f62..1bc6b785 100644 --- a/Kernel/drvutil.c +++ b/Kernel/drvutil.c @@ -12,20 +12,21 @@ Uint64 DrvUtil_Video_2DStream(void *Ent, void *Buffer, int Length, tDrvUtil_Video_2DHandlers *Handlers, int SizeofHandlers) { - Uint8 *stream = Buffer; + void *stream = Buffer; int rem = Length; int op; while( rem ) { rem --; - op = *stream++; + op = *(Uint8*)stream; + stream = (void*)((tVAddr)stream + 1); if(op > NUM_VIDEO_2DOPS) { Log_Warning("DrvUtil", "DrvUtil_Video_2DStream: Unknown" " operation %i", op); } - if(op*4 > SizeofHandlers) { + if(op*sizeof(void*) > SizeofHandlers) { Log_Warning("DrvUtil", "DrvUtil_Video_2DStream: Driver does" " not support op %i", op); return Length-rem; @@ -46,13 +47,13 @@ Uint64 DrvUtil_Video_2DStream(void *Ent, void *Buffer, int Length, Handlers->Fill( Ent, - *(Uint16*)(&stream[0]), *(Uint16*)(&stream[2]), - *(Uint16*)(&stream[4]), *(Uint16*)(&stream[6]), - *(Uint32*)(&stream[8]) + ((Uint16*)stream)[0], ((Uint16*)stream)[1], + ((Uint16*)stream)[2], ((Uint16*)stream)[3], + ((Uint32*)stream)[2] ); rem -= 12; - stream += 12; + stream = (void*)((tVAddr)stream + 12); break; case VIDEO_2DOP_BLIT: @@ -66,13 +67,13 @@ Uint64 DrvUtil_Video_2DStream(void *Ent, void *Buffer, int Length, Handlers->Blit( Ent, - *(Uint16*)(&stream[0]), *(Uint16*)(&stream[2]), - *(Uint16*)(&stream[4]), *(Uint16*)(&stream[6]), - *(Uint16*)(&stream[8]), *(Uint16*)(&stream[10]) + ((Uint16*)stream)[0], ((Uint16*)stream)[1], + ((Uint16*)stream)[2], ((Uint16*)stream)[3], + ((Uint16*)stream)[4], ((Uint16*)stream)[5] ); rem -= 12; - stream += 12; + stream = (void*)((tVAddr)stream + 12); break; } @@ -112,7 +113,7 @@ Uint64 DrvUtil_ReadBlock(Uint64 Start, Uint64 Length, void *Buffer, return leading; } - Buffer += leading; + Buffer = (Uint8*)Buffer + leading; block ++; num = ( Length - leading ) / BlockSize; tailings = Length - num * BlockSize - leading; @@ -138,7 +139,7 @@ Uint64 DrvUtil_ReadBlock(Uint64 Start, Uint64 Length, void *Buffer, { LOG("Reading %i bytes from last block", tailings); block += num; - Buffer += num * BlockSize; + Buffer = (Uint8*)Buffer + num * BlockSize; ret = ReadBlocks(block, 1, tmp, Argument); if(ret != 1) { LEAVE('X', leading + num * BlockSize); @@ -191,7 +192,7 @@ Uint64 DrvUtil_WriteBlock(Uint64 Start, Uint64 Length, void *Buffer, return leading; } - Buffer += leading; + Buffer = (Uint8*)Buffer + leading; block ++; num = ( Length - leading ) / BlockSize; tailings = Length - num * BlockSize - leading; @@ -217,7 +218,7 @@ Uint64 DrvUtil_WriteBlock(Uint64 Start, Uint64 Length, void *Buffer, { LOG("Writing %i bytes to last block", tailings); block += num; - Buffer += num * BlockSize; + Buffer = (Uint8*)Buffer + num * BlockSize; // Read ret = ReadBlocks(block, 1, tmp, Argument); if(ret != 1) {