1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
/*
* Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
*
* Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
*/
#include <sysdep.h>
#define _ERRNO_H 1
#include <bits/errno.h>
; int pthread_spin_trylock(pthread_spinlock_t *lock)
; Return EBUSY is already locked, 0 if not
ENTRY(pthread_spin_trylock)
mov_s r1, 1
ex r1, [r0]
tst r1, r1
mov.z r0, 0
j.d [blink]
mov.nz r0, EBUSY
; slightly faster, but difficult to follow
; mov_s r1, r0
; mov_s r0, 1
; ex r0, [r1]
; tst r0, r0
; j.d [blink]
; mov.nz r0, EBUSY
END(pthread_spin_trylock)
|