|
@@ -1659,6 +1659,21 @@ unit cpupara;
|
|
|
begin
|
|
|
hp:=tparavarsym(paras[i]);
|
|
|
paradef:=hp.vardef;
|
|
|
+
|
|
|
+ { in syscalls the libbase might be set as explicit paraloc }
|
|
|
+ if (vo_has_explicit_paraloc in hp.varoptions) then
|
|
|
+ if not (vo_is_syscall_lib in hp.varoptions) then
|
|
|
+ internalerror(2022010501)
|
|
|
+ else
|
|
|
+ begin
|
|
|
+ paracgsize:=def_cgsize(paradef);
|
|
|
+ hp.paraloc[side].def:=paradef;
|
|
|
+ hp.paraloc[side].size:=paracgsize;
|
|
|
+ hp.paraloc[side].intsize:=tcgsize2size[paracgsize];
|
|
|
+ hp.paraloc[side].alignment:=sizeof(pint);
|
|
|
+ continue;
|
|
|
+ end;
|
|
|
+
|
|
|
{ on win64, if a record has only one field and that field is a
|
|
|
single or double, it has to be handled like a single/double }
|
|
|
if use_ms_abi and
|