diff --git a/rtl/inc/generic.inc b/rtl/inc/generic.inc index aa186ba7ec..8b6ec25806 100644 --- a/rtl/inc/generic.inc +++ b/rtl/inc/generic.inc @@ -133,18 +133,22 @@ end; Procedure FillChar(var x;count:SizeInt;value:byte); var pdest,pend : pbyte; - v : ptruint; + v : ALUUInt; begin if count <= 0 then exit; pdest:=@x; if Count>4*sizeof(ptruint)-1 then begin +{$if sizeof(v)>=2} v:=(value shl 8) or value; +{$endif sizeof(v)>=2} +{$if sizeof(v)>=4} v:=(v shl 16) or v; -{$ifdef CPU64} +{$endif sizeof(v)>=4} +{$if sizeof(v)=8} v:=(v shl 32) or v; -{$endif CPU64} +{$endif sizeof(v)=8} { Align on native pointer size } pend:=pbyte(align(pdest,sizeof(PtrUInt))); dec(count,pend-pdest); @@ -177,17 +181,19 @@ procedure fillword(var x;count : SizeInt;value : word); var aligncount : sizeint; pdest,pend : pword; - v : ptruint; + v : ALUUInt; begin if count <= 0 then exit; pdest:=@x; if Count>4*sizeof(ptruint)-1 then begin +{$if sizeof(v)>=4} v:=(value shl 16) or value; -{$ifdef CPU64} +{$endif sizeof(v)>=4} +{$if sizeof(v)=8} v:=(v shl 32) or v; -{$endif CPU64} +{$endif sizeof(v)=8} { Align on native pointer size } aligncount:=(PtrUInt(pdest) and (sizeof(PtrUInt)-1)) shr 1; dec(count,aligncount); @@ -221,7 +227,7 @@ procedure filldword(var x;count : SizeInt;value : dword); var aligncount : sizeint; pdest,pend : pdword; - v : ptruint; + v : ALUUInt; begin if count <= 0 then exit; @@ -229,9 +235,9 @@ begin if Count>4*sizeof(ptruint)-1 then begin v:=value; -{$ifdef CPU64} +{$if sizeof(v)=8} v:=(v shl 32) or v; -{$endif CPU64} +{$endif sizeof(v)=8} { Align on native pointer size } aligncount:=(PtrUInt(pdest) and (sizeof(PtrUInt)-1)) shr 2; dec(count,aligncount);