|
@@ -471,14 +471,19 @@ unit cpupara;
|
|
|
l:=paralen;
|
|
|
paraloc^.size:=int_cgsize(l);
|
|
|
end;
|
|
|
- if side=callerside then
|
|
|
+ if (side=callerside) or
|
|
|
+ (po_nostackframe in p.procoptions) then
|
|
|
paraloc^.reference.index:=NR_STACK_POINTER_REG
|
|
|
- else
|
|
|
+ else
|
|
|
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
|
|
|
varalign:=used_align(size_2_align(l),paraalign,paraalign);
|
|
|
paraloc^.reference.offset:=parasize;
|
|
|
if side=calleeside then
|
|
|
- inc(paraloc^.reference.offset,target_info.first_parm_offset);
|
|
|
+ if not(po_nostackframe in p.procoptions) then
|
|
|
+ inc(paraloc^.reference.offset,target_info.first_parm_offset)
|
|
|
+ else
|
|
|
+ { return addres }
|
|
|
+ inc(paraloc^.reference.offset,4);
|
|
|
parasize:=align(parasize+l,varalign);
|
|
|
dec(paralen,l);
|
|
|
end;
|