master
inc 70 lines 2.27 KB
Raw
1 /*
2 * Physical memory access endian templates
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 * Copyright (c) 2015 Linaro, Inc.
6 * Copyright (c) 2016 Red Hat, Inc.
7 * Copyright (c) 2025 Linaro Ltd.
8 *
9 * SPDX-License-Identifier: GPL-2.0-or-later
10 */
11
12 #define ADDRESS_SPACE_LD(size) \
13 glue(glue(address_space_ld, size), glue(ENDIANNESS, SUFFIX))
14 #define ADDRESS_SPACE_LD_INTERNAL(size) \
15 glue(glue(address_space_ld, size), glue(_internal, SUFFIX))
16
17 #define ADDRESS_SPACE_ST(size) \
18 glue(glue(address_space_st, size), glue(ENDIANNESS, SUFFIX))
19 #define ADDRESS_SPACE_ST_INTERNAL(size) \
20 glue(glue(address_space_st, size), glue(_internal, SUFFIX))
21
22 uint16_t ADDRESS_SPACE_LD(uw)(ARG1_DECL, hwaddr addr,
23 MemTxAttrs attrs, MemTxResult *result)
24 {
25 return ADDRESS_SPACE_LD_INTERNAL(m)(ARG1, MO_ENDIAN | MO_16,
26 addr, attrs, result);
27 }
28
29 uint32_t ADDRESS_SPACE_LD(l)(ARG1_DECL, hwaddr addr,
30 MemTxAttrs attrs, MemTxResult *result)
31 {
32 return ADDRESS_SPACE_LD_INTERNAL(m)(ARG1, MO_ENDIAN | MO_32,
33 addr, attrs, result);
34 }
35
36 uint64_t ADDRESS_SPACE_LD(q)(ARG1_DECL, hwaddr addr,
37 MemTxAttrs attrs, MemTxResult *result)
38 {
39 return ADDRESS_SPACE_LD_INTERNAL(m)(ARG1, MO_ENDIAN | MO_64,
40 addr, attrs, result);
41 }
42
43 void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val,
44 MemTxAttrs attrs, MemTxResult *result)
45 {
46 ADDRESS_SPACE_ST_INTERNAL(m)(ARG1, MO_ENDIAN | MO_16,
47 addr, val, attrs, result);
48 }
49
50 void ADDRESS_SPACE_ST(l)(ARG1_DECL, hwaddr addr, uint32_t val,
51 MemTxAttrs attrs, MemTxResult *result)
52 {
53 ADDRESS_SPACE_ST_INTERNAL(m)(ARG1, MO_ENDIAN | MO_32,
54 addr, val, attrs, result);
55 }
56
57 void ADDRESS_SPACE_ST(q)(ARG1_DECL, hwaddr addr, uint64_t val,
58 MemTxAttrs attrs, MemTxResult *result)
59 {
60 ADDRESS_SPACE_ST_INTERNAL(m)(ARG1, MO_ENDIAN | MO_64,
61 addr, val, attrs, result);
62 }
63
64 #undef ADDRESS_SPACE_LD
65 #undef ADDRESS_SPACE_LD_INTERNAL
66 #undef ADDRESS_SPACE_ST
67 #undef ADDRESS_SPACE_ST_INTERNAL
68
69 #undef ENDIANNESS
70 #undef MO_ENDIAN