summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/webtbs/tw2703.pp
blob: ca565865d0e975d790edad9648aa602a81a40fac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{ %cpu=i386 }

{$mode delphi}

{ Source provided for Free Pascal Bug Report 2703 }
{ Submitted by "Johannes Berg" on  2003-10-01 }
{ e-mail: johannes -at- sipsolutions -dot- de }
function InterlockedIncrement(var I: Integer): Integer;
asm
        MOV     EDX,1
        XCHG    EAX,EDX
  LOCK  XADD    [EDX],EAX
        INC     EAX
end;

var
  i : integer;
begin
  i:=1;
  i:=InterlockedIncrement(i);
  if i<>2 then
   halt(1);
end.