summaryrefslogtreecommitdiffstats
path: root/lib/libc_r/arch/alpha/_atomic_lock.S
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc_r/arch/alpha/_atomic_lock.S')
-rw-r--r--lib/libc_r/arch/alpha/_atomic_lock.S45
1 files changed, 0 insertions, 45 deletions
diff --git a/lib/libc_r/arch/alpha/_atomic_lock.S b/lib/libc_r/arch/alpha/_atomic_lock.S
deleted file mode 100644
index 1ddceb0..0000000
--- a/lib/libc_r/arch/alpha/_atomic_lock.S
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>.
- * All rights reserved.
- * copyright Douglas Santry 1996
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the above copyright is retained
- * in the source form.
- *
- * THIS SOFTWARE IS PROVIDED BY Douglas Santry AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL Douglas Santry OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- *
- */
-
-#include <machine/asm.h>
-
-/*
- * Atomicly lock a location with an identifier provided the location
- * is not currently locked.
- *
- * long _atomic_lock(long *);
- * v0 will contain the return value (zero if lock obtained).
- */
-LEAF(_atomic_lock,0)
- LDGP(pv)
-
-0: ldq_l v0, 0(a0) /* read existing lock value */
- mov 1, t0 /* locked value to store */
- stq_c t0, 0(a0) /* attempt to store, status in t0 */
- beq t0, 1f /* branch foward to optimise prediction */
- mb /* sync with other processors */
- RET /* return with v0==0 if lock obtained */
-1: br 0b /* loop to try again */
-END(_atomic_lock)
OpenPOWER on IntegriCloud