1/* SPDX-License-Identifier: BSD-2-Clause */
2/*
3 * Copyright (c) 2015-2016, Linaro Limited
4 */
5
6#include <asm.S>
7
8	.section .note.GNU-stack,"",%progbits
9
10/* uint32_t atomic_inc32(uint32_t *v); */
11FUNC atomic_inc32 , :
12	ldrex	r1, [r0]
13	add	r1, r1, #1
14	strex	r2, r1, [r0]
15	cmp	r2, #0
16	bne	atomic_inc32
17	mov	r0, r1
18	bx	lr
19END_FUNC atomic_inc32
20
21/* uint32_t atomic_dec32(uint32_t *v); */
22FUNC atomic_dec32 , :
23	ldrex	r1, [r0]
24	sub	r1, r1, #1
25	strex	r2, r1, [r0]
26	cmp	r2, #0
27	bne	atomic_dec32
28	mov	r0, r1
29	bx	lr
30END_FUNC atomic_dec32
31