mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 20:49:19 +02:00
+ apply extra_param_offset to all i8086 asm routines that use nostackframe
git-svn-id: trunk@24874 -
This commit is contained in:
parent
5d4ebf0dca
commit
baa4d39ea3
@ -29,8 +29,8 @@ function Ptr(sel,off: LongInt):farpointer;{$ifdef SYSTEMINLINE}inline;{$endif}as
|
|||||||
asm
|
asm
|
||||||
push bp
|
push bp
|
||||||
mov bp, sp
|
mov bp, sp
|
||||||
mov ax, ss:[bp + 4]
|
mov ax, ss:[bp + 4 + extra_param_offset] // off
|
||||||
mov dx, ss:[bp + 8]
|
mov dx, ss:[bp + 8 + extra_param_offset] // sel
|
||||||
pop bp
|
pop bp
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ function get_caller_addr(framebp:pointer;addr:pointer=nil):pointer;nostackframe;
|
|||||||
asm
|
asm
|
||||||
push bp
|
push bp
|
||||||
mov bp, sp
|
mov bp, sp
|
||||||
mov ax, ss:[bp + 6]
|
mov ax, ss:[bp + 6 + extra_param_offset] // framebp
|
||||||
or ax, ax
|
or ax, ax
|
||||||
jz @@Lg_a_null
|
jz @@Lg_a_null
|
||||||
xchg ax, bx
|
xchg ax, bx
|
||||||
@ -72,7 +72,7 @@ function get_caller_frame(framebp:pointer;addr:pointer=nil):pointer;nostackframe
|
|||||||
asm
|
asm
|
||||||
push bp
|
push bp
|
||||||
mov bp, sp
|
mov bp, sp
|
||||||
mov ax, ss:[bp + 6]
|
mov ax, ss:[bp + 6 + extra_param_offset] // framebp
|
||||||
or ax, ax
|
or ax, ax
|
||||||
jz @@Lgnf_null
|
jz @@Lgnf_null
|
||||||
xchg ax, bx
|
xchg ax, bx
|
||||||
@ -87,7 +87,7 @@ function InterLockedDecrement (var Target: longint) : longint; assembler;
|
|||||||
asm
|
asm
|
||||||
push bp
|
push bp
|
||||||
mov bp, sp
|
mov bp, sp
|
||||||
mov bx, ss:[bp + 4]
|
mov bx, ss:[bp + 4 + extra_param_offset] // Target
|
||||||
sub word [bx], 1
|
sub word [bx], 1
|
||||||
sbb word [bx+2], 0
|
sbb word [bx+2], 0
|
||||||
mov ax, [bx]
|
mov ax, [bx]
|
||||||
@ -100,7 +100,7 @@ function InterLockedIncrement (var Target: longint) : longint; assembler;
|
|||||||
asm
|
asm
|
||||||
push bp
|
push bp
|
||||||
mov bp, sp
|
mov bp, sp
|
||||||
mov bx, ss:[bp + 4]
|
mov bx, ss:[bp + 4 + extra_param_offset] // Target
|
||||||
add word [bx], 1
|
add word [bx], 1
|
||||||
adc word [bx+2], 0
|
adc word [bx+2], 0
|
||||||
mov ax, [bx]
|
mov ax, [bx]
|
||||||
|
@ -20,7 +20,7 @@ asm
|
|||||||
push bp
|
push bp
|
||||||
mov bp, sp
|
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.bp], ax
|
||||||
mov word [bx + Jmp_buf.sp], di
|
mov word [bx + Jmp_buf.sp], di
|
||||||
mov di, word ss:[di]
|
mov di, word ss:[di]
|
||||||
@ -36,8 +36,8 @@ asm
|
|||||||
push bp
|
push bp
|
||||||
mov bp, sp
|
mov bp, sp
|
||||||
|
|
||||||
mov bx, ss:[bp + 6]
|
mov bx, ss:[bp + 6 + extra_param_offset] // S
|
||||||
mov ax, ss:[bp + 4]
|
mov ax, ss:[bp + 4 + extra_param_offset] // value
|
||||||
test ax, ax
|
test ax, ax
|
||||||
jnz @@L1
|
jnz @@L1
|
||||||
inc ax
|
inc ax
|
||||||
|
Loading…
Reference in New Issue
Block a user