11bb92983SJerome Forissier/* SPDX-License-Identifier: BSD-2-Clause */ 2e17dd72aSJens Wiklander/* 3e17dd72aSJens Wiklander * Copyright (c) 2015-2016, Linaro Limited 4e17dd72aSJens Wiklander */ 5e17dd72aSJens Wiklander 6e17dd72aSJens Wiklander#include <asm.S> 7e17dd72aSJens Wiklander 8e17dd72aSJens Wiklander 9e17dd72aSJens Wiklander/* uint32_t atomic_inc32(uint32_t *v); */ 10e17dd72aSJens WiklanderFUNC atomic_inc32 , : 11e17dd72aSJens Wiklander ldaxr w1, [x0] 12e17dd72aSJens Wiklander add w1, w1, #1 13e17dd72aSJens Wiklander stxr w2, w1, [x0] 14e17dd72aSJens Wiklander cmp w2, #0 15e17dd72aSJens Wiklander bne atomic_inc32 16e17dd72aSJens Wiklander mov w0, w1 17e17dd72aSJens Wiklander ret 18e17dd72aSJens WiklanderEND_FUNC atomic_inc32 19e17dd72aSJens Wiklander 20e17dd72aSJens Wiklander/* uint32_t atomic_dec32(uint32_t *v); */ 21e17dd72aSJens WiklanderFUNC atomic_dec32 , : 22e17dd72aSJens Wiklander ldaxr w1, [x0] 23e17dd72aSJens Wiklander sub w1, w1, #1 24e17dd72aSJens Wiklander stxr w2, w1, [x0] 25e17dd72aSJens Wiklander cmp w2, #0 26e17dd72aSJens Wiklander bne atomic_dec32 27e17dd72aSJens Wiklander mov w0, w1 28e17dd72aSJens Wiklander ret 29e17dd72aSJens WiklanderEND_FUNC atomic_dec32 30e17dd72aSJens Wiklander 31*181f8492SRuchika GuptaBTI(emit_aarch64_feature_1_and GNU_PROPERTY_AARCH64_FEATURE_1_BTI) 32