xref: /optee_os/lib/libutils/ext/arch/riscv/atomic_rv.S (revision 19a31ec40245ae01a9adcd206eec2a4bb4479fc9)
1/* SPDX-License-Identifier: BSD-2-Clause */
2/*
3 * Copyright 2022-2023 NXP
4 */
5
6#include <asm.S>
7
8/* uint32_t atomic_inc32(uint32_t *v); */
9FUNC atomic_inc32 , :
10	li	a1, 1
11	amoadd.w.aqrl a2, a1, (a0)
12	add	a0, a1, a2
13	ret
14END_FUNC atomic_inc32
15
16/* uint32_t atomic_dec32(uint32_t *v); */
17FUNC atomic_dec32 , :
18	li	a1, -1
19	amoadd.w.aqrl a2, a1, (a0)
20	add	a0, a1, a2
21	ret
22END_FUNC atomic_dec32
23