1; -*- Mode: asm; tab-width: 8; c-basic-offset: 4 -*- 2 3; ***** BEGIN LICENSE BLOCK ***** 4; Version: MPL 1.1/GPL 2.0/LGPL 2.1 5; 6; The contents of this file are subject to the Mozilla Public License Version 7; 1.1 (the "License"); you may not use this file except in compliance with 8; the License. You may obtain a copy of the License at 9; http://www.mozilla.org/MPL/ 10; 11; Software distributed under the License is distributed on an "AS IS" basis, 12; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 13; for the specific language governing rights and limitations under the 14; License. 15; 16; The Original Code is an OS/2 implementation of js_CompareAndSwap in assembly. 17; 18; The Initial Developer of the Original Code is 19; IBM Corporation. 20; Portions created by the Initial Developer are Copyright (C) 2001 21; the Initial Developer. All Rights Reserved. 22; 23; Contributor(s): 24; 25; Alternatively, the contents of this file may be used under the terms of 26; either the GNU General Public License Version 2 or later (the "GPL"), or 27; the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 28; in which case the provisions of the GPL or the LGPL are applicable instead 29; of those above. If you wish to allow use of your version of this file only 30; under the terms of either the GPL or the LGPL, and not to allow others to 31; use your version of this file under the terms of the MPL, indicate your 32; decision by deleting the provisions above and replace them with the notice 33; and other provisions required by the GPL or the LGPL. If you do not delete 34; the provisions above, a recipient may use your version of this file under 35; the terms of any one of the MPL, the GPL or the LGPL. 36; 37; ***** END LICENSE BLOCK ***** 38 39 .486P 40 .MODEL FLAT, OPTLINK 41 .STACK 42 43 .CODE 44 45;;;--------------------------------------------------------------------- 46;;; int _Optlink js_CompareAndSwap(jsword *w, jsword ov, jsword nv) 47;;;--------------------------------------------------------------------- 48js_CompareAndSwap PROC OPTLINK EXPORT 49 push ebx 50 mov ebx, eax 51 mov eax, edx 52 mov edx, ebx 53 lock cmpxchg [ebx], ecx 54 sete al 55 and eax, 1h 56 pop ebx 57 ret 58js_CompareAndSwap endp 59 60 END 61