diff options
author | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-10-16 12:39:39 +0000 |
---|---|---|
committer | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-10-16 12:39:39 +0000 |
commit | eb5a8b755cb9cc268a34ccd535ea16e18d57a904 (patch) | |
tree | e8d07759dd48c04d38ecff7b44f1a64304171dd0 /rtl/i8086/i8086.inc | |
parent | 57edf190341c16b2d8c3b9f77c7a80544ebc1f36 (diff) | |
download | fpc-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.inc | 8 |
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 |