|
@@ -46,7 +46,18 @@ unit parabase;
|
|
|
LOC_MMREGISTER,
|
|
|
LOC_CMMREGISTER,
|
|
|
LOC_REGISTER,
|
|
|
- LOC_CREGISTER : (register : tregister);
|
|
|
+ LOC_CREGISTER : (
|
|
|
+ { The number of bits the value in the register must be shifted to the left before
|
|
|
+ it can be stored to memory in the function prolog.
|
|
|
+ This is used for passing OS_NO memory blocks less than register size and of "odd"
|
|
|
+ (3, 5, 6, 7) size on big endian machines, so that small memory blocks passed via
|
|
|
+ registers are properly aligned.
|
|
|
+
|
|
|
+ E.g. the value $5544433 is passed in bits 40-63 of the register (others are zero),
|
|
|
+ but they should actually be stored in the first bits of the stack location reserved
|
|
|
+ for this value. So they have to be shifted left by this amount of bits before. }
|
|
|
+ {$IFDEF CPUPOWERPC64}shiftval : byte;{$ENDIF CPUPOWERPC64}
|
|
|
+ register : tregister);
|
|
|
end;
|
|
|
|
|
|
TCGPara = object
|