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 13func spin_lock 14 mov r2, #1 151: 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 24endfunc spin_lock 25 26 27func spin_unlock 28 mov r1, #0 29 stl r1, [r0] 30 bx lr 31endfunc spin_unlock 32