Files
qemu/include/system/memory_ldst_phys_endian.h.inc
Philippe Mathieu-Daudé 99989213a2 system/memory: Define address_space_ldst[Q] endian variants via template
Define address_space_ldst[Q] endian variants via template.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20260109165058.59144-10-philmd@linaro.org>
2026-01-22 10:48:45 +01:00

58 lines
1.5 KiB
C++

/*
* 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 LD_PHYS(size) \
glue(glue(ld, size), glue(ENDIANNESS, glue(_phys, SUFFIX)))
#define ADDRESS_SPACE_LD(size) \
glue(glue(address_space_ld, size), glue(ENDIANNESS, SUFFIX))
#define ST_PHYS(size) \
glue(glue(st, size), glue(ENDIANNESS, glue(_phys, SUFFIX)))
#define ADDRESS_SPACE_ST(size) \
glue(glue(address_space_st, size), glue(ENDIANNESS, SUFFIX))
static inline uint16_t LD_PHYS(uw)(ARG1_DECL, hwaddr addr)
{
return ADDRESS_SPACE_LD(uw)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL);
}
static inline uint32_t LD_PHYS(l)(ARG1_DECL, hwaddr addr)
{
return ADDRESS_SPACE_LD(l)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL);
}
static inline uint64_t LD_PHYS(q)(ARG1_DECL, hwaddr addr)
{
return ADDRESS_SPACE_LD(q)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL);
}
static inline void ST_PHYS(w)(ARG1_DECL, hwaddr addr, uint16_t val)
{
ADDRESS_SPACE_ST(w)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL);
}
static inline void ST_PHYS(l)(ARG1_DECL, hwaddr addr, uint32_t val)
{
ADDRESS_SPACE_ST(l)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL);
}
static inline void ST_PHYS(q)(ARG1_DECL, hwaddr addr, uint64_t val)
{
ADDRESS_SPACE_ST(q)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL);
}
#undef LD_PHYS
#undef ST_PHYS
#undef ADDRESS_SPACE_LD
#undef ADDRESS_SPACE_ST
#undef ENDIANNESS