mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 09:06:14 +02:00
+ support i8086 far data memory models in InterLockedDecrement and
InterLockedIncrement git-svn-id: trunk@27402 -
This commit is contained in:
parent
14ecc118ec
commit
8eaf8938f4
@ -208,11 +208,16 @@ asm
|
|||||||
@@Lgnf_null:
|
@@Lgnf_null:
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{TODO: fix, use smallint?}
|
{TODO: use smallint?}
|
||||||
function InterLockedDecrement (var Target: longint) : longint;nostackframe;assembler;
|
function InterLockedDecrement (var Target: longint) : longint;nostackframe;assembler;
|
||||||
asm
|
asm
|
||||||
mov si, sp
|
mov si, sp
|
||||||
|
{$ifdef FPC_X86_DATA_NEAR}
|
||||||
mov bx, ss:[si + 2 + extra_param_offset] // Target
|
mov bx, ss:[si + 2 + extra_param_offset] // Target
|
||||||
|
{$else FPC_X86_DATA_NEAR}
|
||||||
|
mov cx, ds
|
||||||
|
lds bx, ss:[si + 2 + extra_param_offset] // Target
|
||||||
|
{$endif FPC_X86_DATA_NEAR}
|
||||||
pushf
|
pushf
|
||||||
cli
|
cli
|
||||||
sub word [bx], 1
|
sub word [bx], 1
|
||||||
@ -220,13 +225,21 @@ asm
|
|||||||
mov ax, [bx]
|
mov ax, [bx]
|
||||||
mov dx, [bx+2]
|
mov dx, [bx+2]
|
||||||
popf
|
popf
|
||||||
|
{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
|
||||||
|
mov ds, cx
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{TODO: fix, use smallint?}
|
{TODO: use smallint?}
|
||||||
function InterLockedIncrement (var Target: longint) : longint;nostackframe;assembler;
|
function InterLockedIncrement (var Target: longint) : longint;nostackframe;assembler;
|
||||||
asm
|
asm
|
||||||
mov si, sp
|
mov si, sp
|
||||||
|
{$ifdef FPC_X86_DATA_NEAR}
|
||||||
mov bx, ss:[si + 2 + extra_param_offset] // Target
|
mov bx, ss:[si + 2 + extra_param_offset] // Target
|
||||||
|
{$else FPC_X86_DATA_NEAR}
|
||||||
|
mov cx, ds
|
||||||
|
lds bx, ss:[si + 2 + extra_param_offset] // Target
|
||||||
|
{$endif FPC_X86_DATA_NEAR}
|
||||||
pushf
|
pushf
|
||||||
cli
|
cli
|
||||||
add word [bx], 1
|
add word [bx], 1
|
||||||
@ -234,6 +247,9 @@ asm
|
|||||||
mov ax, [bx]
|
mov ax, [bx]
|
||||||
mov dx, [bx+2]
|
mov dx, [bx+2]
|
||||||
popf
|
popf
|
||||||
|
{$if defined(FPC_X86_DATA_FAR) or defined(FPC_X86_DATA_HUGE)}
|
||||||
|
mov ds, cx
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{TODO: fix, use smallint?}
|
{TODO: fix, use smallint?}
|
||||||
|
Loading…
Reference in New Issue
Block a user