Browse Source

+ apply extra_param_offset to all i8086 asm routines that use nostackframe

git-svn-id: trunk@24874 -
nickysn 12 years ago
parent
commit
baa4d39ea3
2 changed files with 9 additions and 9 deletions
  1. 6 6
      rtl/i8086/i8086.inc
  2. 3 3
      rtl/i8086/setjump.inc

+ 6 - 6
rtl/i8086/i8086.inc

@@ -29,8 +29,8 @@ function Ptr(sel,off: LongInt):farpointer;{$ifdef SYSTEMINLINE}inline;{$endif}as
 asm
   push bp
   mov bp, sp
-  mov ax, ss:[bp + 4]
-  mov dx, ss:[bp + 8]
+  mov ax, ss:[bp + 4 + extra_param_offset]  // off
+  mov dx, ss:[bp + 8 + extra_param_offset]  // sel
   pop bp
 end;
 
@@ -57,7 +57,7 @@ function get_caller_addr(framebp:pointer;addr:pointer=nil):pointer;nostackframe;
 asm
   push bp
   mov bp, sp
-  mov ax, ss:[bp + 6]
+  mov ax, ss:[bp + 6 + extra_param_offset]  // framebp
   or ax, ax
   jz @@Lg_a_null
   xchg ax, bx
@@ -72,7 +72,7 @@ function get_caller_frame(framebp:pointer;addr:pointer=nil):pointer;nostackframe
 asm
   push bp
   mov bp, sp
-  mov ax, ss:[bp + 6]
+  mov ax, ss:[bp + 6 + extra_param_offset]  // framebp
   or ax, ax
   jz @@Lgnf_null
   xchg ax, bx
@@ -87,7 +87,7 @@ function InterLockedDecrement (var Target: longint) : longint; assembler;
 asm
   push bp
   mov bp, sp
-  mov bx, ss:[bp + 4]
+  mov bx, ss:[bp + 4 + extra_param_offset]  // Target
   sub word [bx], 1
   sbb word [bx+2], 0
   mov ax, [bx]
@@ -100,7 +100,7 @@ function InterLockedIncrement (var Target: longint) : longint; assembler;
 asm
   push bp
   mov bp, sp
-  mov bx, ss:[bp + 4]
+  mov bx, ss:[bp + 4 + extra_param_offset]  // Target
   add word [bx], 1
   adc word [bx+2], 0
   mov ax, [bx]

+ 3 - 3
rtl/i8086/setjump.inc

@@ -20,7 +20,7 @@ asm
   push bp
   mov bp, sp
 
-  mov bx, ss:[bp + 4]
+  mov bx, ss:[bp + 4 + extra_param_offset]  // S
   mov word [bx + Jmp_buf.bp], ax
   mov word [bx + Jmp_buf.sp], di
   mov di, word ss:[di]
@@ -36,8 +36,8 @@ asm
   push bp
   mov bp, sp
 
-  mov bx, ss:[bp + 6]
-  mov ax, ss:[bp + 4]
+  mov bx, ss:[bp + 6 + extra_param_offset]  // S
+  mov ax, ss:[bp + 4 + extra_param_offset]  // value
   test ax, ax
   jnz @@L1
   inc ax