* Do not compile pointer overloads of atomic operations for MS-DOS/i8086

This commit is contained in:
Michaël Van Canneyt 2023-07-13 16:18:04 +02:00
parent cc339fd3b8
commit 6e5c4667cd
2 changed files with 16 additions and 0 deletions

View File

@ -2306,6 +2306,8 @@ end;
{ Pointer overloads }
{$ifndef FPC_SYSTEM_DISABLE_INTERLOCK_POINTER_OVERLOAD}
function AtomicIncrement (var Target: pointer) : pointer; {$ifdef SYSTEMINLINE}inline{$endif};
begin
@ -2365,6 +2367,8 @@ begin
{$ENDIF}
end;
{$endif FPC_SYSTEM_DISABLE_INTERLOCK_POINTER_OVERLOAD}
function AtomicIncrement (var Target: Cardinal) : Cardinal; {$ifdef SYSTEMINLINE}inline{$endif};
begin

View File

@ -1562,6 +1562,10 @@ Function GetThreadID:TThreadID;{$ifdef SYSTEMINLINE}inline;{$endif}
{$define FPC_HAS_EXPLICIT_INTERLOCKED_POINTER}
{$endif}
{$ifdef CPUI8086}
{$define FPC_SYSTEM_DISABLE_INTERLOCK_POINTER_OVERLOAD}
{$endif CPUI806}
{$ifdef cpu16}
function AtomicIncrement (var Target: smallint) : smallint; {$ifdef SYSTEMINLINE}inline{$endif};
function AtomicDecrement (var Target: smallint) : smallint; {$ifdef SYSTEMINLINE}inline{$endif};
@ -1593,7 +1597,11 @@ function InterlockedExchange64 (var Target: int64;Source : int64) : int64; publi
function InterlockedExchangeAdd64 (var Target: int64;Source : int64) : int64; public name 'FPC_INTERLOCKEDEXCHANGEADD64';
function InterlockedCompareExchange64(var Target: int64; NewValue: int64; Comperand: int64): int64; public name 'FPC_INTERLOCKEDCOMPAREEXCHANGE64';
{$endif cpu64}
{ Pointer overloads }
{$ifndef FPC_SYSTEM_DISABLE_INTERLOCK_POINTER_OVERLOAD}
function AtomicIncrement (var Target: pointer) : pointer; {$ifdef SYSTEMINLINE}inline{$endif};
function AtomicDecrement (var Target: pointer) : pointer; {$ifdef SYSTEMINLINE}inline{$endif};
function AtomicCmpExchange(var Target: pointer; NewValue, Comperand: pointer): pointer; {$ifdef SYSTEMINLINE}inline{$endif};
@ -1609,6 +1617,7 @@ function InterlockedCompareExchange(var Target: Pointer; NewValue: Pointer; Comp
{ Note: in case of FPC_SYSTEM_HAS_EXPLICIT_INTERLOCKED_POINTER this is an alias for
InterlockedCompareExchange (this doesn't work with inline however) }
function InterlockedCompareExchangePointer(var Target: Pointer; NewValue: Pointer; Comperand: Pointer): Pointer; {$ifndef FPC_INTERLOCKED_POINTER_INLINE}inline;{$else}external name 'FPC_INTERLOCKEDEXCHANGEPOINTER';{$endif}
}
{$elseif defined(cpu64)}
function InterlockedIncrement (var Target: Pointer) : Pointer; external name 'FPC_INTERLOCKEDINCREMENT64';
function InterlockedDecrement (var Target: Pointer) : Pointer; external name 'FPC_INTERLOCKEDDECREMENT64';
@ -1624,6 +1633,9 @@ function InterlockedExchangeAdd (var Target: Pointer;Source : Pointer) : Pointer
function InterlockedCompareExchange(var Target: Pointer; NewValue: Pointer; Comperand: Pointer): Pointer; external name 'FPC_INTERLOCKEDCOMPAREEXCHANGE';
function InterlockedCompareExchangePointer(var Target: Pointer; NewValue: Pointer; Comperand: Pointer): Pointer; external name 'FPC_INTERLOCKEDCOMPAREEXCHANGE';
{$endif FPC_HAS_EXPLICIT_INTERLOCKED_POINTER / CPU64}
{$endif FPC_SYSTEM_DISABLE_INTERLOCK_POINTER_OVERLOAD}
{ unsigned overloads }
{$ifdef cpu16}
function AtomicIncrement (var Target: word) : word; {$ifdef SYSTEMINLINE}inline{$endif};