arm-trusted-firmware/lib/locks/exclusive/aarch32/spinlock.S

32 lines
402 B
ArmAsm

/*
* Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <asm_macros.S>
.globl spin_lock
.globl spin_unlock
func spin_lock
mov r2, #1
1:
ldrex r1, [r0]
cmp r1, #0
wfene
strexeq r1, r2, [r0]
cmpeq r1, #0
bne 1b
dmb
bx lr
endfunc spin_lock
func spin_unlock
mov r1, #0
stl r1, [r0]
bx lr
endfunc spin_unlock