diff --git a/compiler/i386/cpupara.pas b/compiler/i386/cpupara.pas index fe06933c04..8d2b2bd2e3 100644 --- a/compiler/i386/cpupara.pas +++ b/compiler/i386/cpupara.pas @@ -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;