516ba7ccddf194f53b38ae7dc1dfbed87f9988a4
[reactos.git] / reactos / lib / intrlck / i386 / decrement.c
1 /*
2 * PROJECT: ReactOS system libraries
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: lib/intrlck/i386/decrement.c
5 * PURPOSE: Inter lock decrements
6 * PROGRAMMERS: Copyright 1995 Martin von Loewis
7 * Copyright 1997 Onno Hovers
8 */
9
10 /************************************************************************
11 * InterlockedDecrement *
12 * *
13 * InterlockedDecrement adds -1 to a long variable and returns *
14 * the resulting decremented value. *
15 * *
16 ************************************************************************/
17
18 /*
19 * LONG NTAPI InterlockedDecrement(LPLONG lpAddend)
20 */
21
22 #include <windows.h>
23 LONG
24 NTAPI
25 InterlockedDecrement(LPLONG lpAddend)
26 {
27 LONG ret;
28 __asm__
29 (
30 "\tlock\n" /* for SMP systems */
31 "\txaddl %0, (%1)\n"
32 "\tdecl %0\n"
33 :"=r" (ret)
34 :"r" (lpAddend), "0" (-1)
35 : "memory"
36 );
37 return ret;
38 }