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