/* * Physical memory access endian templates * * Copyright (c) 2003 Fabrice Bellard * Copyright (c) 2015 Linaro, Inc. * Copyright (c) 2016 Red Hat, Inc. * Copyright (c) 2025 Linaro Ltd. * * SPDX-License-Identifier: GPL-2.0-or-later */ #define ADDRESS_SPACE_LD(size) \ glue(glue(address_space_ld, size), glue(ENDIANNESS, SUFFIX)) #define ADDRESS_SPACE_LD_INTERNAL(size) \ glue(glue(address_space_ld, size), glue(_internal, SUFFIX)) #define ADDRESS_SPACE_ST(size) \ glue(glue(address_space_st, size), glue(ENDIANNESS, SUFFIX)) #define ADDRESS_SPACE_ST_INTERNAL(size) \ glue(glue(address_space_st, size), glue(_internal, SUFFIX)) uint16_t ADDRESS_SPACE_LD(uw)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { return ADDRESS_SPACE_LD_INTERNAL(m)(ARG1, MO_ENDIAN | MO_16, addr, attrs, result); } uint32_t ADDRESS_SPACE_LD(l)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { return ADDRESS_SPACE_LD_INTERNAL(m)(ARG1, MO_ENDIAN | MO_32, addr, attrs, result); } uint64_t ADDRESS_SPACE_LD(q)(ARG1_DECL, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { return ADDRESS_SPACE_LD_INTERNAL(m)(ARG1, MO_ENDIAN | MO_64, addr, attrs, result); } void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result) { ADDRESS_SPACE_ST_INTERNAL(m)(ARG1, MO_ENDIAN | MO_16, addr, val, attrs, result); } void ADDRESS_SPACE_ST(l)(ARG1_DECL, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result) { ADDRESS_SPACE_ST_INTERNAL(m)(ARG1, MO_ENDIAN | MO_32, addr, val, attrs, result); } void ADDRESS_SPACE_ST(q)(ARG1_DECL, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result) { ADDRESS_SPACE_ST_INTERNAL(m)(ARG1, MO_ENDIAN | MO_64, addr, val, attrs, result); } #undef ADDRESS_SPACE_LD #undef ADDRESS_SPACE_LD_INTERNAL #undef ADDRESS_SPACE_ST #undef ADDRESS_SPACE_ST_INTERNAL #undef ENDIANNESS #undef MO_ENDIAN