hw/dma/soc_dma: Remove union from memmap_entry_s struct
There's only one field in the union inside memmap_entry_s now that we've removed the soc_dma_port_fifo handling. Simplify by removing the union. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Message-id: 20260710105907.2570621-4-peter.maydell@linaro.org
Peter Maydell committed
Jul 20, 2026 at 19:05 UTC
68f788e70536c2653f32324795f88505f9d2ab4d
1 file changed
+10
-12
hw/dma/soc_dma.c
+10
-12
@@ -39,12 +39,10 @@ struct dma_s {
39
struct memmap_entry_s {
40
enum soc_dma_port_type type;
41
hwaddr addr;
42
- union {
43
- struct {
44
- void *base;
45
- size_t size;
46
- } mem;
47
- } u;
42
+ struct {
43
+ void *base;
44
+ size_t size;
45
+ } mem;
46
} *memmap;
47
int memmap_size;
48
@@ -99,7 +97,7 @@ static inline enum soc_dma_port_type soc_dma_ch_update_type(
97
98
if (entry->type == soc_dma_port_mem) {
99
if (entry->addr > ch->vaddr[port] ||
102
- entry->addr + entry->u.mem.size <= ch->vaddr[port])
100
+ entry->addr + entry->mem.size <= ch->vaddr[port])
101
return soc_dma_port_other;
102
103
/* TODO: support constant memory address for source port as used for
@@ -107,7 +105,7 @@ static inline enum soc_dma_port_type soc_dma_ch_update_type(
105
if (ch->type[port] != soc_dma_access_const)
106
return soc_dma_port_other;
107
110
- ch->paddr[port] = (uint8_t *) entry->u.mem.base +
108
+ ch->paddr[port] = (uint8_t *) entry->mem.base +
109
(ch->vaddr[port] - entry->addr);
110
/* TODO: save bytes left to the end of the mapping somewhere so we
111
* can check we're not reading beyond it. */
@@ -212,12 +210,12 @@ void soc_dma_port_add_mem(struct soc_dma_s *soc, uint8_t *phys_base,
210
if (entry->type == soc_dma_port_mem) {
211
if ((entry->addr >= virt_base && entry->addr < virt_base + size) ||
212
(entry->addr <= virt_base &&
215
- entry->addr + entry->u.mem.size > virt_base)) {
213
+ entry->addr + entry->mem.size > virt_base)) {
214
error_report("%s: RAM at %"PRIx64 "-%"PRIx64
215
" collides with RAM region at %"PRIx64
216
"-%"PRIx64, __func__,
217
virt_base, virt_base + size,
220
- entry->addr, entry->addr + entry->u.mem.size);
218
+ entry->addr, entry->addr + entry->mem.size);
219
exit(-1);
220
}
221
@@ -246,8 +244,8 @@ void soc_dma_port_add_mem(struct soc_dma_s *soc, uint8_t *phys_base,
244
245
entry->addr = virt_base;
246
entry->type = soc_dma_port_mem;
249
- entry->u.mem.base = phys_base;
250
- entry->u.mem.size = size;
247
+ entry->mem.base = phys_base;
248
+ entry->mem.size = size;
249
}
250
251
/* TODO: port removal for ports like PCMCIA memory */