blob: b408914fc5a0ddefa7eee5a4d4da6526a5eebdd5 [file] [log] [blame]
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001/*
2 * Copyright (c) 2018, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <asm_macros.S>
8
9 .globl init_spinlock
10 .globl spin_lock
11 .globl spin_unlock
12
13func init_spinlock
14 mov r1, #0
15 str r1, [r0]
16 bx lr
17endfunc init_spinlock
18
19func spin_lock
20 mov r2, #1
211:
22 ldrex r1, [r0]
23 cmp r1, #0
24 wfene
25 strexeq r1, r2, [r0]
26 cmpeq r1, #0
27 bne 1b
28 dmb
29 bx lr
30endfunc spin_lock
31
32
33func spin_unlock
34 mov r1, #0
35 stl r1, [r0]
36 bx lr
37endfunc spin_unlock