File: pthread_spin_trylock.S

package info (click to toggle)
uclibc 1.0.35-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, trixie
  • size: 28,432 kB
  • sloc: ansic: 216,423; asm: 33,201; cpp: 4,706; makefile: 2,866; sh: 716; yacc: 610; perl: 535; lex: 364; awk: 40
file content (31 lines) | stat: -rw-r--r-- 579 bytes parent folder | download | duplicates (4)
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)