diff options
author | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-04-26 23:51:18 +0000 |
---|---|---|
committer | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-04-26 23:51:18 +0000 |
commit | 8ffc32cf18ad2dd6de2e19a85b119fe225f59efd (patch) | |
tree | 13c68dacff6fe215118f1c46cc93a578e8ce1bf2 | |
parent | 3e12d4f717188dd6e179af100b54f0b6afb5400b (diff) | |
download | fpc-8ffc32cf18ad2dd6de2e19a85b119fe225f59efd.tar.gz |
* fixed the interlockedXXX functions
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/z80@45136 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | rtl/z80/z80.inc | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/rtl/z80/z80.inc b/rtl/z80/z80.inc index e801b4ae33..bd7dbbec01 100644 --- a/rtl/z80/z80.inc +++ b/rtl/z80/z80.inc @@ -132,6 +132,7 @@ function InterLockedDecrement (var Target: longint) : longint; begin { block interrupts } asm + di end; dec(Target); @@ -139,6 +140,7 @@ function InterLockedDecrement (var Target: longint) : longint; { release interrupts } asm + ei end; end; @@ -149,6 +151,7 @@ function InterLockedIncrement (var Target: longint) : longint; begin { block interrupts } asm + di end; inc(Target); @@ -156,6 +159,7 @@ function InterLockedIncrement (var Target: longint) : longint; { release interrupts } asm + ei end; end; @@ -166,6 +170,7 @@ function InterLockedExchange (var Target: longint;Source : longint) : longint; begin { block interrupts } asm + di end; Result:=Target; @@ -173,6 +178,7 @@ function InterLockedExchange (var Target: longint;Source : longint) : longint; { release interrupts } asm + ei end; end; @@ -183,14 +189,16 @@ function InterlockedCompareExchange(var Target: longint; NewValue: longint; Comp begin { block interrupts } asm + di end; Result:=Target; -// if Target=Comperand then -// Target:=NewValue; + if Target=Comperand then + Target:=NewValue; { release interrupts } asm + ei end; end; @@ -201,6 +209,7 @@ function InterLockedExchangeAdd (var Target: longint;Source : longint) : longint begin { block interrupts } asm + di end; Result:=Target; @@ -208,6 +217,7 @@ function InterLockedExchangeAdd (var Target: longint;Source : longint) : longint { release interrupts } asm + ei end; end; @@ -218,6 +228,7 @@ function InterLockedDecrement (var Target: smallint) : smallint; begin { block interrupts } asm + di end; dec(Target); @@ -225,6 +236,7 @@ function InterLockedDecrement (var Target: smallint) : smallint; { release interrupts } asm + ei end; end; @@ -235,6 +247,7 @@ function InterLockedIncrement (var Target: smallint) : smallint; begin { block interrupts } asm + di end; inc(Target); @@ -242,6 +255,7 @@ function InterLockedIncrement (var Target: smallint) : smallint; { release interrupts } asm + ei end; end; @@ -252,6 +266,7 @@ function InterLockedExchange (var Target: smallint;Source : smallint) : smallint begin { block interrupts } asm + di end; Result:=Target; @@ -259,6 +274,7 @@ function InterLockedExchange (var Target: smallint;Source : smallint) : smallint { release interrupts } asm + ei end; end; @@ -269,14 +285,16 @@ function InterlockedCompareExchange(var Target: smallint; NewValue: smallint; Co begin { block interrupts } asm + di end; Result:=Target; -// if Target=Comperand then -// Target:=NewValue; + if Target=Comperand then + Target:=NewValue; { release interrupts } asm + ei end; end; @@ -287,6 +305,7 @@ function InterLockedExchangeAdd (var Target: smallint;Source : smallint) : small begin { block interrupts } asm + di end; Result:=Target; @@ -294,5 +313,6 @@ function InterLockedExchangeAdd (var Target: smallint;Source : smallint) : small { release interrupts } asm + ei end; end; |