@samitouri / QOSamiQemu / commits / 68f788e705

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 */