1 /* 2 * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <asm_macros.S> 8 9 .globl spin_lock 10 .globl spin_unlock 11 12 13 func spin_lock 14 mov r2, #1 15 1: 16 ldrex r1, [r0] 17 cmp r1, #0 18 wfene 19 strexeq r1, r2, [r0] 20 cmpeq r1, #0 21 bne 1b 22 dmb 23 bx lr 24 endfunc spin_lock 25 26 27 func spin_unlock 28 mov r1, #0 29 stl r1, [r0] 30 bx lr 31 endfunc spin_unlock 32