fixup commit for branch 'NSPRPUB_CLIENT_BRANCH' NSPRPUB_CLIENT_BRANCH
authorcvs2hg
Fri, 22 Jun 2001 14:25:19 +0000
branchNSPRPUB_CLIENT_BRANCH
changeset 1966 6da4ff0c495c925fdbb3d326d72e959e9e6af458
parent 1959 654d42b6739f119d325ef15a48d00323a18068ce
child 1975 94b98877b4d834ee528cd47c7a9472c6d1e36543
push idunknown
push userunknown
push dateunknown
fixup commit for branch 'NSPRPUB_CLIENT_BRANCH'
pr/src/md/os2/os2vacpp.asm
new file mode 100644
--- /dev/null
+++ b/pr/src/md/os2/os2vacpp.asm
@@ -0,0 +1,88 @@
+COMMENT | -*- Mode: asm; tab-width: 8; c-basic-offset: 4 -*-
+        The contents of this file are subject to the Mozilla Public
+        License Version 1.1 (the "License"); you may not use this file
+        except in compliance with the License. You may obtain a copy of
+        the License at http://www.mozilla.org/MPL/
+
+        Software distributed under the License is distributed on an "AS
+        IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+        implied. See the License for the specific language governing
+        rights and limitations under the License.
+
+        The Original Code is the Netscape Portable Runtime (NSPR).
+
+        The Initial Developer of the Original Code is IBM Corporation.
+        Portions created by IBM are Copyright (C) 2001 IBM Corporation.
+        All Rights Reserved.
+
+        Contributor(s):
+
+        Alternatively, the contents of this file may be used under the
+        terms of the GNU General Public License Version 2 or later (the
+        "GPL"), in which case the provisions of the GPL are applicable 
+        instead of those above.  If you wish to allow use of your 
+        version of this file only under the terms of the GPL and not to
+        allow others to use your version of this file under the MPL,
+        indicate your decision by deleting the provisions above and
+        replace them with the notice and other provisions required by
+        the GPL.  If you do not delete the provisions above, a recipient
+        may use your version of this file under either the MPL or the
+        GPL.
+
+        Windows uses inline assembly for their atomic functions, so we have
+        created an assembly file for VACPP on OS/2
+        |
+
+        .486P
+        .MODEL FLAT, OPTLINK
+        .STACK
+
+        .CODE
+
+;;;---------------------------------------------------------------------
+;;; PRInt32 _Optlink _PR_MD_ATOMIC_SET(PRInt32* val, PRInt32 newval)
+;;;---------------------------------------------------------------------
+_PR_MD_ATOMIC_SET     PROC OPTLINK EXPORT
+        lock xchg    dword ptr [eax],edx
+        mov eax, edx;
+
+        ret
+_PR_MD_ATOMIC_SET     endp
+
+;;;---------------------------------------------------------------------
+;;; PRInt32 _Optlink _PR_MD_ATOMIC_ADD(PRInt32* ptr, PRInt32 val)
+;;;---------------------------------------------------------------------
+_PR_MD_ATOMIC_ADD     PROC OPTLINK EXPORT
+        mov ecx, edx
+        lock xadd dword ptr [eax], edx
+        mov eax, edx
+        add eax, ecx
+
+        ret
+_PR_MD_ATOMIC_ADD     endp
+
+;;;---------------------------------------------------------------------
+;;; PRInt32 _Optlink _PR_MD_ATOMIC_INCREMENT(PRInt32* val)
+;;;---------------------------------------------------------------------
+_PR_MD_ATOMIC_INCREMENT     PROC OPTLINK EXPORT
+        mov edx, 1
+        lock xadd dword ptr [eax], edx
+        mov eax, edx
+        inc eax
+
+        ret
+_PR_MD_ATOMIC_INCREMENT     endp
+
+;;;---------------------------------------------------------------------
+;;; PRInt32 _Optlink _PR_MD_ATOMIC_DECREMENT(PRInt32* val)
+;;;---------------------------------------------------------------------
+_PR_MD_ATOMIC_DECREMENT     PROC OPTLINK EXPORT
+        mov edx, 0ffffffffh
+        lock xadd dword ptr [eax], edx
+        mov eax, edx
+        dec eax
+
+        ret
+_PR_MD_ATOMIC_DECREMENT     endp
+
+        END