diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2014-07-25 17:39:05 +0530 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2014-08-18 11:52:34 +0200 |
commit | 873fa5beccbb4e95d1bbb9afb6a0eec02811f09b (patch) | |
tree | 17ceb2c595fe9a491f3e7fa91d7c379babf2c356 /libpthread/nptl/sysdeps/arc/pthread_spin_trylock.S | |
parent | 6915b3a6b96e8e34601941c0eb7519cde1c0f999 (diff) |
NPTL: ARC support
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libpthread/nptl/sysdeps/arc/pthread_spin_trylock.S')
-rw-r--r-- | libpthread/nptl/sysdeps/arc/pthread_spin_trylock.S | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libpthread/nptl/sysdeps/arc/pthread_spin_trylock.S b/libpthread/nptl/sysdeps/arc/pthread_spin_trylock.S new file mode 100644 index 000000000..25f5421a2 --- /dev/null +++ b/libpthread/nptl/sysdeps/arc/pthread_spin_trylock.S @@ -0,0 +1,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) |