summaryrefslogtreecommitdiff
path: root/rtl/i8086/i8086.inc
diff options
context:
space:
mode:
authornickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-10-16 12:39:39 +0000
committernickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-10-16 12:39:39 +0000
commiteb5a8b755cb9cc268a34ccd535ea16e18d57a904 (patch)
treee8d07759dd48c04d38ecff7b44f1a64304171dd0 /rtl/i8086/i8086.inc
parent57edf190341c16b2d8c3b9f77c7a80544ebc1f36 (diff)
downloadfpc-eb5a8b755cb9cc268a34ccd535ea16e18d57a904.tar.gz
* fixed the stack param offsets in Ptr, get_caller_addr and get_caller_frame after the stackframe elimination
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@25802 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'rtl/i8086/i8086.inc')
-rw-r--r--rtl/i8086/i8086.inc8
1 files changed, 4 insertions, 4 deletions
diff --git a/rtl/i8086/i8086.inc b/rtl/i8086/i8086.inc
index 85a81cbc88..542a55c7bc 100644
--- a/rtl/i8086/i8086.inc
+++ b/rtl/i8086/i8086.inc
@@ -28,8 +28,8 @@ end;
function Ptr(sel,off: LongInt):farpointer;{$ifdef SYSTEMINLINE}inline;{$endif}assembler;nostackframe;
asm
mov si, sp
- mov ax, ss:[si + 4 + extra_param_offset] // off
- mov dx, ss:[si + 8 + extra_param_offset] // sel
+ mov ax, ss:[si + 2 + extra_param_offset] // off
+ mov dx, ss:[si + 6 + extra_param_offset] // sel
end;
{$define FPC_SYSTEM_HAS_CSEG}
@@ -75,7 +75,7 @@ asm
{$ifdef FPC_X86_CODE_FAR}
xor dx, dx
{$endif FPC_X86_CODE_FAR}
- mov ax, ss:[si + 6 + extra_param_offset + extra_param_offset] // framebp
+ mov ax, ss:[si + 4 + extra_param_offset + extra_param_offset] // framebp
or ax, ax
jz @@Lg_a_null
xchg ax, bx
@@ -91,7 +91,7 @@ end;
function get_caller_frame(framebp:pointer;addr:codepointer=nil):pointer;nostackframe;assembler;
asm
mov si, sp
- mov ax, ss:[si + 6 + extra_param_offset + extra_param_offset] // framebp
+ mov ax, ss:[si + 4 + extra_param_offset + extra_param_offset] // framebp
or ax, ax
jz @@Lgnf_null
xchg ax, bx