91
92
static inline bool spapr_vio_dma_valid(VIOsPAPRDevice *dev, uint64_t taddr,
92
93
uint32_t size, DMADirection dir)
94
return dma_memory_valid(dev->dma, taddr, size, dir);
95
return dma_memory_valid(&dev->as, taddr, size, dir);
97
98
static inline int spapr_vio_dma_read(VIOsPAPRDevice *dev, uint64_t taddr,
98
99
void *buf, uint32_t size)
100
return (dma_memory_read(dev->dma, taddr, buf, size) != 0) ?
101
return (dma_memory_read(&dev->as, taddr, buf, size) != 0) ?
101
102
H_DEST_PARM : H_SUCCESS;
104
105
static inline int spapr_vio_dma_write(VIOsPAPRDevice *dev, uint64_t taddr,
105
106
const void *buf, uint32_t size)
107
return (dma_memory_write(dev->dma, taddr, buf, size) != 0) ?
108
return (dma_memory_write(&dev->as, taddr, buf, size) != 0) ?
108
109
H_DEST_PARM : H_SUCCESS;
111
112
static inline int spapr_vio_dma_set(VIOsPAPRDevice *dev, uint64_t taddr,
112
113
uint8_t c, uint32_t size)
114
return (dma_memory_set(dev->dma, taddr, c, size) != 0) ?
115
return (dma_memory_set(&dev->as, taddr, c, size) != 0) ?
115
116
H_DEST_PARM : H_SUCCESS;
118
#define vio_stb(_dev, _addr, _val) (stb_dma((_dev)->dma, (_addr), (_val)))
119
#define vio_sth(_dev, _addr, _val) (stw_be_dma((_dev)->dma, (_addr), (_val)))
120
#define vio_stl(_dev, _addr, _val) (stl_be_dma((_dev)->dma, (_addr), (_val)))
121
#define vio_stq(_dev, _addr, _val) (stq_be_dma((_dev)->dma, (_addr), (_val)))
122
#define vio_ldq(_dev, _addr) (ldq_be_dma((_dev)->dma, (_addr)))
119
#define vio_stb(_dev, _addr, _val) (stb_dma(&(_dev)->as, (_addr), (_val)))
120
#define vio_sth(_dev, _addr, _val) (stw_be_dma(&(_dev)->as, (_addr), (_val)))
121
#define vio_stl(_dev, _addr, _val) (stl_be_dma(&(_dev)->as, (_addr), (_val)))
122
#define vio_stq(_dev, _addr, _val) (stq_be_dma(&(_dev)->as, (_addr), (_val)))
123
#define vio_ldq(_dev, _addr) (ldq_be_dma(&(_dev)->as, (_addr)))
124
125
int spapr_vio_send_crq(VIOsPAPRDevice *dev, uint8_t *crq);