// Copyright (c) 2026 Petr Balvín (https://petrbalvin.org) // SPDX-License-Identifier: BSD-3-Clause // Differential kernel for the riscv64 atomics: the RV64A AMO family and the // load-reserved / store-conditional pair, in the toolchain's spelling // (value, (address), result). Both orderings sit in the encodings: the // table gives every AMO aq and rl, LR acquire and SC release. #include "textflag.h" TEXT ·amo(SB), NOSPLIT, $0-0 AMOSWAPW X5, (X6), X7 AMOSWAPD X5, (X6), X7 AMOADDW X5, (X6), X7 AMOADDD X5, (X6), X7 AMOANDW X5, (X6), X7 AMOANDD X5, (X6), X7 AMOORW X5, (X6), X7 AMOORD X5, (X6), X7 AMOXORW X5, (X6), X7 AMOXORD X5, (X6), X7 AMOMAXW X5, (X6), X7 AMOMAXD X5, (X6), X7 AMOMAXUW X5, (X6), X7 AMOMAXUD X5, (X6), X7 AMOMINUW X5, (X6), X7 AMOMINUD X5, (X6), X7 RET TEXT ·lrsc(SB), NOSPLIT, $0-0 LRW (X5), X6 LRD (X5), X6 SCW X5, (X6), X7 SCD X5, (X6), X7 RET