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)
|