mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge branch 'exec_rw_const_v4' of https://github.com/philmd/qemu into HEAD
This commit is contained in:
+3
-3
@@ -2188,9 +2188,9 @@ void kvm_flush_coalesced_mmio_buffer(void)
|
||||
ent = &ring->coalesced_mmio[ring->first];
|
||||
|
||||
if (ent->pio == 1) {
|
||||
address_space_rw(&address_space_io, ent->phys_addr,
|
||||
MEMTXATTRS_UNSPECIFIED, ent->data,
|
||||
ent->len, true);
|
||||
address_space_write(&address_space_io, ent->phys_addr,
|
||||
MEMTXATTRS_UNSPECIFIED, ent->data,
|
||||
ent->len);
|
||||
} else {
|
||||
cpu_physical_memory_write(ent->phys_addr, ent->data, ent->len);
|
||||
}
|
||||
|
||||
+2
-2
@@ -28,8 +28,8 @@ int dma_memory_set(AddressSpace *as, dma_addr_t addr, uint8_t c, dma_addr_t len)
|
||||
memset(fillbuf, c, FILLBUF_SIZE);
|
||||
while (len > 0) {
|
||||
l = len < FILLBUF_SIZE ? len : FILLBUF_SIZE;
|
||||
error |= address_space_rw(as, addr, MEMTXATTRS_UNSPECIFIED,
|
||||
fillbuf, l, true);
|
||||
error |= address_space_write(as, addr, MEMTXATTRS_UNSPECIFIED,
|
||||
fillbuf, l);
|
||||
len -= l;
|
||||
addr += l;
|
||||
}
|
||||
|
||||
@@ -2736,9 +2736,9 @@ void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len,
|
||||
}
|
||||
|
||||
static MemTxResult flatview_read(FlatView *fv, hwaddr addr,
|
||||
MemTxAttrs attrs, uint8_t *buf, hwaddr len);
|
||||
MemTxAttrs attrs, void *buf, hwaddr len);
|
||||
static MemTxResult flatview_write(FlatView *fv, hwaddr addr, MemTxAttrs attrs,
|
||||
const uint8_t *buf, hwaddr len);
|
||||
const void *buf, hwaddr len);
|
||||
static bool flatview_access_valid(FlatView *fv, hwaddr addr, hwaddr len,
|
||||
bool is_write, MemTxAttrs attrs);
|
||||
|
||||
@@ -2975,11 +2975,12 @@ MemoryRegion *get_system_io(void)
|
||||
/* physical memory access (slow version, mainly for debug) */
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
|
||||
uint8_t *buf, target_ulong len, int is_write)
|
||||
void *ptr, target_ulong len, bool is_write)
|
||||
{
|
||||
int flags;
|
||||
target_ulong l, page;
|
||||
void * p;
|
||||
uint8_t *buf = ptr;
|
||||
|
||||
while (len > 0) {
|
||||
page = addr & TARGET_PAGE_MASK;
|
||||
@@ -3103,14 +3104,15 @@ static bool prepare_mmio_access(MemoryRegion *mr)
|
||||
/* Called within RCU critical section. */
|
||||
static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
|
||||
MemTxAttrs attrs,
|
||||
const uint8_t *buf,
|
||||
const void *ptr,
|
||||
hwaddr len, hwaddr addr1,
|
||||
hwaddr l, MemoryRegion *mr)
|
||||
{
|
||||
uint8_t *ptr;
|
||||
uint8_t *ram_ptr;
|
||||
uint64_t val;
|
||||
MemTxResult result = MEMTX_OK;
|
||||
bool release_lock = false;
|
||||
const uint8_t *buf = ptr;
|
||||
|
||||
for (;;) {
|
||||
if (!memory_access_is_direct(mr, true)) {
|
||||
@@ -3123,8 +3125,8 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
|
||||
size_memop(l), attrs);
|
||||
} else {
|
||||
/* RAM case */
|
||||
ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
|
||||
memcpy(ptr, buf, l);
|
||||
ram_ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
|
||||
memcpy(ram_ptr, buf, l);
|
||||
invalidate_and_set_dirty(mr, addr1, l);
|
||||
}
|
||||
|
||||
@@ -3150,7 +3152,7 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
|
||||
|
||||
/* Called from RCU critical section. */
|
||||
static MemTxResult flatview_write(FlatView *fv, hwaddr addr, MemTxAttrs attrs,
|
||||
const uint8_t *buf, hwaddr len)
|
||||
const void *buf, hwaddr len)
|
||||
{
|
||||
hwaddr l;
|
||||
hwaddr addr1;
|
||||
@@ -3167,14 +3169,15 @@ static MemTxResult flatview_write(FlatView *fv, hwaddr addr, MemTxAttrs attrs,
|
||||
|
||||
/* Called within RCU critical section. */
|
||||
MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
|
||||
MemTxAttrs attrs, uint8_t *buf,
|
||||
MemTxAttrs attrs, void *ptr,
|
||||
hwaddr len, hwaddr addr1, hwaddr l,
|
||||
MemoryRegion *mr)
|
||||
{
|
||||
uint8_t *ptr;
|
||||
uint8_t *ram_ptr;
|
||||
uint64_t val;
|
||||
MemTxResult result = MEMTX_OK;
|
||||
bool release_lock = false;
|
||||
uint8_t *buf = ptr;
|
||||
|
||||
for (;;) {
|
||||
if (!memory_access_is_direct(mr, false)) {
|
||||
@@ -3186,8 +3189,8 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
|
||||
stn_he_p(buf, l, val);
|
||||
} else {
|
||||
/* RAM case */
|
||||
ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
|
||||
memcpy(buf, ptr, l);
|
||||
ram_ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
|
||||
memcpy(buf, ram_ptr, l);
|
||||
}
|
||||
|
||||
if (release_lock) {
|
||||
@@ -3212,7 +3215,7 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
|
||||
|
||||
/* Called from RCU critical section. */
|
||||
static MemTxResult flatview_read(FlatView *fv, hwaddr addr,
|
||||
MemTxAttrs attrs, uint8_t *buf, hwaddr len)
|
||||
MemTxAttrs attrs, void *buf, hwaddr len)
|
||||
{
|
||||
hwaddr l;
|
||||
hwaddr addr1;
|
||||
@@ -3225,7 +3228,7 @@ static MemTxResult flatview_read(FlatView *fv, hwaddr addr,
|
||||
}
|
||||
|
||||
MemTxResult address_space_read_full(AddressSpace *as, hwaddr addr,
|
||||
MemTxAttrs attrs, uint8_t *buf, hwaddr len)
|
||||
MemTxAttrs attrs, void *buf, hwaddr len)
|
||||
{
|
||||
MemTxResult result = MEMTX_OK;
|
||||
FlatView *fv;
|
||||
@@ -3241,7 +3244,7 @@ MemTxResult address_space_read_full(AddressSpace *as, hwaddr addr,
|
||||
|
||||
MemTxResult address_space_write(AddressSpace *as, hwaddr addr,
|
||||
MemTxAttrs attrs,
|
||||
const uint8_t *buf, hwaddr len)
|
||||
const void *buf, hwaddr len)
|
||||
{
|
||||
MemTxResult result = MEMTX_OK;
|
||||
FlatView *fv;
|
||||
@@ -3256,7 +3259,7 @@ MemTxResult address_space_write(AddressSpace *as, hwaddr addr,
|
||||
}
|
||||
|
||||
MemTxResult address_space_rw(AddressSpace *as, hwaddr addr, MemTxAttrs attrs,
|
||||
uint8_t *buf, hwaddr len, bool is_write)
|
||||
void *buf, hwaddr len, bool is_write)
|
||||
{
|
||||
if (is_write) {
|
||||
return address_space_write(as, addr, attrs, buf, len);
|
||||
@@ -3265,8 +3268,8 @@ MemTxResult address_space_rw(AddressSpace *as, hwaddr addr, MemTxAttrs attrs,
|
||||
}
|
||||
}
|
||||
|
||||
void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
|
||||
hwaddr len, int is_write)
|
||||
void cpu_physical_memory_rw(hwaddr addr, void *buf,
|
||||
hwaddr len, bool is_write)
|
||||
{
|
||||
address_space_rw(&address_space_memory, addr, MEMTXATTRS_UNSPECIFIED,
|
||||
buf, len, is_write);
|
||||
@@ -3280,14 +3283,15 @@ enum write_rom_type {
|
||||
static inline MemTxResult address_space_write_rom_internal(AddressSpace *as,
|
||||
hwaddr addr,
|
||||
MemTxAttrs attrs,
|
||||
const uint8_t *buf,
|
||||
const void *ptr,
|
||||
hwaddr len,
|
||||
enum write_rom_type type)
|
||||
{
|
||||
hwaddr l;
|
||||
uint8_t *ptr;
|
||||
uint8_t *ram_ptr;
|
||||
hwaddr addr1;
|
||||
MemoryRegion *mr;
|
||||
const uint8_t *buf = ptr;
|
||||
|
||||
RCU_READ_LOCK_GUARD();
|
||||
while (len > 0) {
|
||||
@@ -3299,14 +3303,14 @@ static inline MemTxResult address_space_write_rom_internal(AddressSpace *as,
|
||||
l = memory_access_size(mr, l, addr1);
|
||||
} else {
|
||||
/* ROM/RAM case */
|
||||
ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
|
||||
ram_ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
|
||||
switch (type) {
|
||||
case WRITE_DATA:
|
||||
memcpy(ptr, buf, l);
|
||||
memcpy(ram_ptr, buf, l);
|
||||
invalidate_and_set_dirty(mr, addr1, l);
|
||||
break;
|
||||
case FLUSH_CACHE:
|
||||
flush_icache_range((uintptr_t)ptr, (uintptr_t)ptr + l);
|
||||
flush_icache_range((uintptr_t)ram_ptr, (uintptr_t)ram_ptr + l);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3320,7 +3324,7 @@ static inline MemTxResult address_space_write_rom_internal(AddressSpace *as,
|
||||
/* used for ROM loading : can write in RAM and ROM */
|
||||
MemTxResult address_space_write_rom(AddressSpace *as, hwaddr addr,
|
||||
MemTxAttrs attrs,
|
||||
const uint8_t *buf, hwaddr len)
|
||||
const void *buf, hwaddr len)
|
||||
{
|
||||
return address_space_write_rom_internal(as, addr, attrs,
|
||||
buf, len, WRITE_DATA);
|
||||
@@ -3550,11 +3554,11 @@ void *address_space_map(AddressSpace *as,
|
||||
}
|
||||
|
||||
/* Unmaps a memory region previously mapped by address_space_map().
|
||||
* Will also mark the memory as dirty if is_write == 1. access_len gives
|
||||
* Will also mark the memory as dirty if is_write is true. access_len gives
|
||||
* the amount of memory that was actually read or written by the caller.
|
||||
*/
|
||||
void address_space_unmap(AddressSpace *as, void *buffer, hwaddr len,
|
||||
int is_write, hwaddr access_len)
|
||||
bool is_write, hwaddr access_len)
|
||||
{
|
||||
if (buffer != bounce.buffer) {
|
||||
MemoryRegion *mr;
|
||||
@@ -3584,14 +3588,14 @@ void address_space_unmap(AddressSpace *as, void *buffer, hwaddr len,
|
||||
|
||||
void *cpu_physical_memory_map(hwaddr addr,
|
||||
hwaddr *plen,
|
||||
int is_write)
|
||||
bool is_write)
|
||||
{
|
||||
return address_space_map(&address_space_memory, addr, plen, is_write,
|
||||
MEMTXATTRS_UNSPECIFIED);
|
||||
}
|
||||
|
||||
void cpu_physical_memory_unmap(void *buffer, hwaddr len,
|
||||
int is_write, hwaddr access_len)
|
||||
bool is_write, hwaddr access_len)
|
||||
{
|
||||
return address_space_unmap(&address_space_memory, buffer, len, is_write, access_len);
|
||||
}
|
||||
@@ -3742,10 +3746,11 @@ address_space_write_cached_slow(MemoryRegionCache *cache, hwaddr addr,
|
||||
|
||||
/* virtual memory access for debug (includes writing to ROM) */
|
||||
int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
|
||||
uint8_t *buf, target_ulong len, int is_write)
|
||||
void *ptr, target_ulong len, bool is_write)
|
||||
{
|
||||
hwaddr phys_addr;
|
||||
target_ulong l, page;
|
||||
uint8_t *buf = ptr;
|
||||
|
||||
cpu_synchronize_state(cpu);
|
||||
while (len > 0) {
|
||||
@@ -3766,8 +3771,8 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
|
||||
address_space_write_rom(cpu->cpu_ases[asidx].as, phys_addr,
|
||||
attrs, buf, l);
|
||||
} else {
|
||||
address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
|
||||
attrs, buf, l, 0);
|
||||
address_space_read(cpu->cpu_ases[asidx].as, phys_addr, attrs, buf,
|
||||
l);
|
||||
}
|
||||
len -= l;
|
||||
buf += l;
|
||||
|
||||
+2
-4
@@ -327,8 +327,7 @@ static void set_kernel_args(const struct arm_boot_info *info, AddressSpace *as)
|
||||
|
||||
cmdline_size = strlen(info->kernel_cmdline);
|
||||
address_space_write(as, p + 8, MEMTXATTRS_UNSPECIFIED,
|
||||
(const uint8_t *)info->kernel_cmdline,
|
||||
cmdline_size + 1);
|
||||
info->kernel_cmdline, cmdline_size + 1);
|
||||
cmdline_size = (cmdline_size >> 2) + 1;
|
||||
WRITE_WORD(p, cmdline_size + 2);
|
||||
WRITE_WORD(p, 0x54410009);
|
||||
@@ -420,8 +419,7 @@ static void set_kernel_args_old(const struct arm_boot_info *info,
|
||||
}
|
||||
s = info->kernel_cmdline;
|
||||
if (s) {
|
||||
address_space_write(as, p, MEMTXATTRS_UNSPECIFIED,
|
||||
(const uint8_t *)s, strlen(s) + 1);
|
||||
address_space_write(as, p, MEMTXATTRS_UNSPECIFIED, s, strlen(s) + 1);
|
||||
} else {
|
||||
WRITE_WORD(p, 0);
|
||||
}
|
||||
|
||||
@@ -74,8 +74,7 @@ static int get_pte(dma_addr_t baseaddr, uint32_t index, uint64_t *pte,
|
||||
dma_addr_t addr = baseaddr + index * sizeof(*pte);
|
||||
|
||||
/* TODO: guarantee 64-bit single-copy atomicity */
|
||||
ret = dma_memory_read(&address_space_memory, addr,
|
||||
(uint8_t *)pte, sizeof(*pte));
|
||||
ret = dma_memory_read(&address_space_memory, addr, pte, sizeof(*pte));
|
||||
|
||||
if (ret != MEMTX_OK) {
|
||||
info->type = SMMU_PTW_ERR_WALK_EABT;
|
||||
|
||||
+4
-6
@@ -279,8 +279,7 @@ static int smmu_get_ste(SMMUv3State *s, dma_addr_t addr, STE *buf,
|
||||
|
||||
trace_smmuv3_get_ste(addr);
|
||||
/* TODO: guarantee 64-bit single-copy atomicity */
|
||||
ret = dma_memory_read(&address_space_memory, addr,
|
||||
(void *)buf, sizeof(*buf));
|
||||
ret = dma_memory_read(&address_space_memory, addr, buf, sizeof(*buf));
|
||||
if (ret != MEMTX_OK) {
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"Cannot fetch pte at address=0x%"PRIx64"\n", addr);
|
||||
@@ -301,8 +300,7 @@ static int smmu_get_cd(SMMUv3State *s, STE *ste, uint32_t ssid,
|
||||
|
||||
trace_smmuv3_get_cd(addr);
|
||||
/* TODO: guarantee 64-bit single-copy atomicity */
|
||||
ret = dma_memory_read(&address_space_memory, addr,
|
||||
(void *)buf, sizeof(*buf));
|
||||
ret = dma_memory_read(&address_space_memory, addr, buf, sizeof(*buf));
|
||||
if (ret != MEMTX_OK) {
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"Cannot fetch pte at address=0x%"PRIx64"\n", addr);
|
||||
@@ -406,8 +404,8 @@ static int smmu_find_ste(SMMUv3State *s, uint32_t sid, STE *ste,
|
||||
l2_ste_offset = sid & ((1 << s->sid_split) - 1);
|
||||
l1ptr = (dma_addr_t)(strtab_base + l1_ste_offset * sizeof(l1std));
|
||||
/* TODO: guarantee 64-bit single-copy atomicity */
|
||||
ret = dma_memory_read(&address_space_memory, l1ptr,
|
||||
(uint8_t *)&l1std, sizeof(l1std));
|
||||
ret = dma_memory_read(&address_space_memory, l1ptr, &l1std,
|
||||
sizeof(l1std));
|
||||
if (ret != MEMTX_OK) {
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"Could not read L1PTR at 0X%"PRIx64"\n", l1ptr);
|
||||
|
||||
@@ -1164,7 +1164,8 @@ static void fimd_update_memory_section(Exynos4210fimdState *s, unsigned win)
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
w->host_fb_addr = cpu_physical_memory_map(fb_start_addr, &fb_mapped_len, 0);
|
||||
w->host_fb_addr = cpu_physical_memory_map(fb_start_addr, &fb_mapped_len,
|
||||
false);
|
||||
if (!w->host_fb_addr) {
|
||||
DPRINT_ERROR("Failed to map window %u framebuffer\n", win);
|
||||
goto error_return;
|
||||
|
||||
@@ -218,7 +218,7 @@ static void tmu2_start(MilkymistTMU2State *s)
|
||||
glGenTextures(1, &texture);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
fb_len = 2ULL * s->regs[R_TEXHRES] * s->regs[R_TEXVRES];
|
||||
fb = cpu_physical_memory_map(s->regs[R_TEXFBUF], &fb_len, 0);
|
||||
fb = cpu_physical_memory_map(s->regs[R_TEXFBUF], &fb_len, false);
|
||||
if (fb == NULL) {
|
||||
glDeleteTextures(1, &texture);
|
||||
glXMakeContextCurrent(s->dpy, None, None, NULL);
|
||||
@@ -262,7 +262,7 @@ static void tmu2_start(MilkymistTMU2State *s)
|
||||
|
||||
/* Read the QEMU dest. framebuffer into the OpenGL framebuffer */
|
||||
fb_len = 2ULL * s->regs[R_DSTHRES] * s->regs[R_DSTVRES];
|
||||
fb = cpu_physical_memory_map(s->regs[R_DSTFBUF], &fb_len, 0);
|
||||
fb = cpu_physical_memory_map(s->regs[R_DSTFBUF], &fb_len, false);
|
||||
if (fb == NULL) {
|
||||
glDeleteTextures(1, &texture);
|
||||
glXMakeContextCurrent(s->dpy, None, None, NULL);
|
||||
@@ -281,7 +281,7 @@ static void tmu2_start(MilkymistTMU2State *s)
|
||||
|
||||
/* Map the texture */
|
||||
mesh_len = MESH_MAXSIZE*MESH_MAXSIZE*sizeof(struct vertex);
|
||||
mesh = cpu_physical_memory_map(s->regs[R_VERTICESADDR], &mesh_len, 0);
|
||||
mesh = cpu_physical_memory_map(s->regs[R_VERTICESADDR], &mesh_len, false);
|
||||
if (mesh == NULL) {
|
||||
glDeleteTextures(1, &texture);
|
||||
glXMakeContextCurrent(s->dpy, None, None, NULL);
|
||||
@@ -298,7 +298,7 @@ static void tmu2_start(MilkymistTMU2State *s)
|
||||
|
||||
/* Write back the OpenGL framebuffer to the QEMU framebuffer */
|
||||
fb_len = 2ULL * s->regs[R_DSTHRES] * s->regs[R_DSTVRES];
|
||||
fb = cpu_physical_memory_map(s->regs[R_DSTFBUF], &fb_len, 1);
|
||||
fb = cpu_physical_memory_map(s->regs[R_DSTFBUF], &fb_len, true);
|
||||
if (fb == NULL) {
|
||||
glDeleteTextures(1, &texture);
|
||||
glXMakeContextCurrent(s->dpy, None, None, NULL);
|
||||
|
||||
@@ -632,7 +632,7 @@ static void omap_rfbi_transfer_start(struct omap_dss_s *s)
|
||||
len = s->rfbi.pixels * 2;
|
||||
|
||||
data_addr = s->dispc.l[0].addr[0];
|
||||
data = cpu_physical_memory_map(data_addr, &len, 0);
|
||||
data = cpu_physical_memory_map(data_addr, &len, false);
|
||||
if (data && len != s->rfbi.pixels * 2) {
|
||||
cpu_physical_memory_unmap(data, len, 0, 0);
|
||||
data = NULL;
|
||||
|
||||
@@ -91,9 +91,9 @@ static void omap_update_display(void *opaque)
|
||||
|
||||
frame_offset = 0;
|
||||
if (omap_lcd->plm != 2) {
|
||||
cpu_physical_memory_read(omap_lcd->dma->phys_framebuffer[
|
||||
omap_lcd->dma->current_frame],
|
||||
(void *)omap_lcd->palette, 0x200);
|
||||
cpu_physical_memory_read(
|
||||
omap_lcd->dma->phys_framebuffer[omap_lcd->dma->current_frame],
|
||||
omap_lcd->palette, 0x200);
|
||||
switch (omap_lcd->palette[0] >> 12 & 7) {
|
||||
case 3 ... 7:
|
||||
frame_offset += 0x200;
|
||||
@@ -244,8 +244,8 @@ static void omap_lcd_update(struct omap_lcd_panel_s *s) {
|
||||
|
||||
if (s->plm != 2 && !s->palette_done) {
|
||||
cpu_physical_memory_read(
|
||||
s->dma->phys_framebuffer[s->dma->current_frame],
|
||||
(void *)s->palette, 0x200);
|
||||
s->dma->phys_framebuffer[s->dma->current_frame],
|
||||
s->palette, 0x200);
|
||||
s->palette_done = 1;
|
||||
omap_lcd_interrupts(s);
|
||||
}
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ static DisplaySurface *ramfb_create_display_surface(int width, int height,
|
||||
}
|
||||
|
||||
size = (hwaddr)linesize * height;
|
||||
data = cpu_physical_memory_map(addr, &size, 0);
|
||||
data = cpu_physical_memory_map(addr, &size, false);
|
||||
if (size != (hwaddr)linesize * height) {
|
||||
cpu_physical_memory_unmap(data, size, 0, 0);
|
||||
return NULL;
|
||||
|
||||
+10
-15
@@ -225,9 +225,8 @@ static void channel_load_g(struct fs_dma_ctrl *ctrl, int c)
|
||||
hwaddr addr = channel_reg(ctrl, c, RW_GROUP);
|
||||
|
||||
/* Load and decode. FIXME: handle endianness. */
|
||||
cpu_physical_memory_read (addr,
|
||||
(void *) &ctrl->channels[c].current_g,
|
||||
sizeof ctrl->channels[c].current_g);
|
||||
cpu_physical_memory_read(addr, &ctrl->channels[c].current_g,
|
||||
sizeof(ctrl->channels[c].current_g));
|
||||
}
|
||||
|
||||
static void dump_c(int ch, struct dma_descr_context *c)
|
||||
@@ -257,9 +256,8 @@ static void channel_load_c(struct fs_dma_ctrl *ctrl, int c)
|
||||
hwaddr addr = channel_reg(ctrl, c, RW_GROUP_DOWN);
|
||||
|
||||
/* Load and decode. FIXME: handle endianness. */
|
||||
cpu_physical_memory_read (addr,
|
||||
(void *) &ctrl->channels[c].current_c,
|
||||
sizeof ctrl->channels[c].current_c);
|
||||
cpu_physical_memory_read(addr, &ctrl->channels[c].current_c,
|
||||
sizeof(ctrl->channels[c].current_c));
|
||||
|
||||
D(dump_c(c, &ctrl->channels[c].current_c));
|
||||
/* I guess this should update the current pos. */
|
||||
@@ -275,9 +273,8 @@ static void channel_load_d(struct fs_dma_ctrl *ctrl, int c)
|
||||
|
||||
/* Load and decode. FIXME: handle endianness. */
|
||||
D(printf("%s ch=%d addr=" TARGET_FMT_plx "\n", __func__, c, addr));
|
||||
cpu_physical_memory_read (addr,
|
||||
(void *) &ctrl->channels[c].current_d,
|
||||
sizeof ctrl->channels[c].current_d);
|
||||
cpu_physical_memory_read(addr, &ctrl->channels[c].current_d,
|
||||
sizeof(ctrl->channels[c].current_d));
|
||||
|
||||
D(dump_d(c, &ctrl->channels[c].current_d));
|
||||
ctrl->channels[c].regs[RW_DATA] = addr;
|
||||
@@ -290,9 +287,8 @@ static void channel_store_c(struct fs_dma_ctrl *ctrl, int c)
|
||||
/* Encode and store. FIXME: handle endianness. */
|
||||
D(printf("%s ch=%d addr=" TARGET_FMT_plx "\n", __func__, c, addr));
|
||||
D(dump_d(c, &ctrl->channels[c].current_d));
|
||||
cpu_physical_memory_write (addr,
|
||||
(void *) &ctrl->channels[c].current_c,
|
||||
sizeof ctrl->channels[c].current_c);
|
||||
cpu_physical_memory_write(addr, &ctrl->channels[c].current_c,
|
||||
sizeof(ctrl->channels[c].current_c));
|
||||
}
|
||||
|
||||
static void channel_store_d(struct fs_dma_ctrl *ctrl, int c)
|
||||
@@ -301,9 +297,8 @@ static void channel_store_d(struct fs_dma_ctrl *ctrl, int c)
|
||||
|
||||
/* Encode and store. FIXME: handle endianness. */
|
||||
D(printf("%s ch=%d addr=" TARGET_FMT_plx "\n", __func__, c, addr));
|
||||
cpu_physical_memory_write (addr,
|
||||
(void *) &ctrl->channels[c].current_d,
|
||||
sizeof ctrl->channels[c].current_d);
|
||||
cpu_physical_memory_write(addr, &ctrl->channels[c].current_d,
|
||||
sizeof(ctrl->channels[c].current_d));
|
||||
}
|
||||
|
||||
static inline void channel_stop(struct fs_dma_ctrl *ctrl, int c)
|
||||
|
||||
+5
-5
@@ -513,8 +513,8 @@ static IOMMUTLBEntry rc4030_dma_translate(IOMMUMemoryRegion *iommu, hwaddr addr,
|
||||
if (i < s->dma_tl_limit / sizeof(entry)) {
|
||||
entry_address = (s->dma_tl_base & 0x7fffffff) + i * sizeof(entry);
|
||||
if (address_space_read(ret.target_as, entry_address,
|
||||
MEMTXATTRS_UNSPECIFIED, (unsigned char *)&entry,
|
||||
sizeof(entry)) == MEMTX_OK) {
|
||||
MEMTXATTRS_UNSPECIFIED, &entry, sizeof(entry))
|
||||
== MEMTX_OK) {
|
||||
ret.translated_addr = entry.frame & ~(DMA_PAGESIZE - 1);
|
||||
ret.perm = IOMMU_RW;
|
||||
}
|
||||
@@ -590,7 +590,7 @@ static const VMStateDescription vmstate_rc4030 = {
|
||||
};
|
||||
|
||||
static void rc4030_do_dma(void *opaque, int n, uint8_t *buf,
|
||||
int len, int is_write)
|
||||
int len, bool is_write)
|
||||
{
|
||||
rc4030State *s = opaque;
|
||||
hwaddr dma_addr;
|
||||
@@ -630,13 +630,13 @@ struct rc4030DMAState {
|
||||
void rc4030_dma_read(void *dma, uint8_t *buf, int len)
|
||||
{
|
||||
rc4030_dma s = dma;
|
||||
rc4030_do_dma(s->opaque, s->n, buf, len, 0);
|
||||
rc4030_do_dma(s->opaque, s->n, buf, len, false);
|
||||
}
|
||||
|
||||
void rc4030_dma_write(void *dma, uint8_t *buf, int len)
|
||||
{
|
||||
rc4030_dma s = dma;
|
||||
rc4030_do_dma(s->opaque, s->n, buf, len, 1);
|
||||
rc4030_do_dma(s->opaque, s->n, buf, len, true);
|
||||
}
|
||||
|
||||
static rc4030_dma *rc4030_allocate_dmas(void *opaque, int n)
|
||||
|
||||
+4
-7
@@ -311,8 +311,7 @@ static bool zdma_load_descriptor(XlnxZDMA *s, uint64_t addr, void *buf)
|
||||
return false;
|
||||
}
|
||||
|
||||
address_space_rw(s->dma_as, addr, s->attr,
|
||||
buf, sizeof(XlnxZDMADescr), false);
|
||||
address_space_read(s->dma_as, addr, s->attr, buf, sizeof(XlnxZDMADescr));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -364,7 +363,7 @@ static uint64_t zdma_update_descr_addr(XlnxZDMA *s, bool type,
|
||||
} else {
|
||||
addr = zdma_get_regaddr64(s, basereg);
|
||||
addr += sizeof(s->dsc_dst);
|
||||
address_space_rw(s->dma_as, addr, s->attr, (void *) &next, 8, false);
|
||||
address_space_read(s->dma_as, addr, s->attr, &next, 8);
|
||||
zdma_put_regaddr64(s, basereg, next);
|
||||
}
|
||||
return next;
|
||||
@@ -416,8 +415,7 @@ static void zdma_write_dst(XlnxZDMA *s, uint8_t *buf, uint32_t len)
|
||||
}
|
||||
}
|
||||
|
||||
address_space_rw(s->dma_as, s->dsc_dst.addr, s->attr, buf, dlen,
|
||||
true);
|
||||
address_space_write(s->dma_as, s->dsc_dst.addr, s->attr, buf, dlen);
|
||||
if (burst_type == AXI_BURST_INCR) {
|
||||
s->dsc_dst.addr += dlen;
|
||||
}
|
||||
@@ -493,8 +491,7 @@ static void zdma_process_descr(XlnxZDMA *s)
|
||||
len = s->cfg.bus_width / 8;
|
||||
}
|
||||
} else {
|
||||
address_space_rw(s->dma_as, src_addr, s->attr, s->buf, len,
|
||||
false);
|
||||
address_space_read(s->dma_as, src_addr, s->attr, s->buf, len);
|
||||
if (burst_type == AXI_BURST_INCR) {
|
||||
src_addr += len;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1461,7 +1461,7 @@ static void ahci_commit_buf(IDEDMA *dma, uint32_t tx_bytes)
|
||||
ad->cur_cmd->status = cpu_to_le32(tx_bytes);
|
||||
}
|
||||
|
||||
static int ahci_dma_rw_buf(IDEDMA *dma, int is_write)
|
||||
static int ahci_dma_rw_buf(IDEDMA *dma, bool is_write)
|
||||
{
|
||||
AHCIDevice *ad = DO_UPCAST(AHCIDevice, dma, dma);
|
||||
IDEState *s = &ad->port.ifs[0];
|
||||
|
||||
+1
-1
@@ -2570,7 +2570,7 @@ static void ide_init1(IDEBus *bus, int unit)
|
||||
ide_sector_write_timer_cb, s);
|
||||
}
|
||||
|
||||
static int ide_nop_int(IDEDMA *dma, int x)
|
||||
static int ide_nop_int(IDEDMA *dma, bool is_write)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -376,7 +376,7 @@ static void macio_ide_reset(DeviceState *dev)
|
||||
ide_bus_reset(&d->bus);
|
||||
}
|
||||
|
||||
static int ide_nop_int(IDEDMA *dma, int x)
|
||||
static int ide_nop_int(IDEDMA *dma, bool is_write)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -181,7 +181,7 @@ static int32_t bmdma_prepare_buf(IDEDMA *dma, int32_t limit)
|
||||
}
|
||||
|
||||
/* return 0 if buffer completed */
|
||||
static int bmdma_rw_buf(IDEDMA *dma, int is_write)
|
||||
static int bmdma_rw_buf(IDEDMA *dma, bool is_write)
|
||||
{
|
||||
BMDMAState *bm = DO_UPCAST(BMDMAState, dma, dma);
|
||||
IDEState *s = bmdma_active_if(bm);
|
||||
|
||||
@@ -125,7 +125,7 @@ static void test_flush_page_write(void *opaque, hwaddr addr, uint64_t data,
|
||||
unsigned len)
|
||||
{
|
||||
hwaddr page = 4096;
|
||||
void *a = cpu_physical_memory_map(data & ~0xffful, &page, 0);
|
||||
void *a = cpu_physical_memory_map(data & ~0xffful, &page, false);
|
||||
|
||||
/* We might not be able to get the full page, only mprotect what we actually
|
||||
have mapped */
|
||||
|
||||
+9
-12
@@ -871,7 +871,7 @@ static void gem_get_rx_desc(CadenceGEMState *s, int q)
|
||||
|
||||
/* read current descriptor */
|
||||
address_space_read(&s->dma_as, desc_addr, MEMTXATTRS_UNSPECIFIED,
|
||||
(uint8_t *)s->rx_desc[q],
|
||||
s->rx_desc[q],
|
||||
sizeof(uint32_t) * gem_get_desc_len(s, true));
|
||||
|
||||
/* Descriptor owned by software ? */
|
||||
@@ -1029,9 +1029,8 @@ static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
|
||||
|
||||
/* Descriptor write-back. */
|
||||
desc_addr = gem_get_rx_desc_addr(s, q);
|
||||
address_space_write(&s->dma_as, desc_addr,
|
||||
MEMTXATTRS_UNSPECIFIED,
|
||||
(uint8_t *)s->rx_desc[q],
|
||||
address_space_write(&s->dma_as, desc_addr, MEMTXATTRS_UNSPECIFIED,
|
||||
s->rx_desc[q],
|
||||
sizeof(uint32_t) * gem_get_desc_len(s, true));
|
||||
|
||||
/* Next descriptor */
|
||||
@@ -1137,7 +1136,7 @@ static void gem_transmit(CadenceGEMState *s)
|
||||
|
||||
DB_PRINT("read descriptor 0x%" HWADDR_PRIx "\n", packet_desc_addr);
|
||||
address_space_read(&s->dma_as, packet_desc_addr,
|
||||
MEMTXATTRS_UNSPECIFIED, (uint8_t *)desc,
|
||||
MEMTXATTRS_UNSPECIFIED, desc,
|
||||
sizeof(uint32_t) * gem_get_desc_len(s, false));
|
||||
/* Handle all descriptors owned by hardware */
|
||||
while (tx_desc_get_used(desc) == 0) {
|
||||
@@ -1185,14 +1184,12 @@ static void gem_transmit(CadenceGEMState *s)
|
||||
* the processor.
|
||||
*/
|
||||
address_space_read(&s->dma_as, desc_addr,
|
||||
MEMTXATTRS_UNSPECIFIED,
|
||||
(uint8_t *)desc_first,
|
||||
MEMTXATTRS_UNSPECIFIED, desc_first,
|
||||
sizeof(desc_first));
|
||||
tx_desc_set_used(desc_first);
|
||||
address_space_write(&s->dma_as, desc_addr,
|
||||
MEMTXATTRS_UNSPECIFIED,
|
||||
(uint8_t *)desc_first,
|
||||
sizeof(desc_first));
|
||||
MEMTXATTRS_UNSPECIFIED, desc_first,
|
||||
sizeof(desc_first));
|
||||
/* Advance the hardware current descriptor past this packet */
|
||||
if (tx_desc_get_wrap(desc)) {
|
||||
s->tx_desc_addr[q] = s->regs[GEM_TXQBASE];
|
||||
@@ -1246,8 +1243,8 @@ static void gem_transmit(CadenceGEMState *s)
|
||||
}
|
||||
DB_PRINT("read descriptor 0x%" HWADDR_PRIx "\n", packet_desc_addr);
|
||||
address_space_read(&s->dma_as, packet_desc_addr,
|
||||
MEMTXATTRS_UNSPECIFIED, (uint8_t *)desc,
|
||||
sizeof(uint32_t) * gem_get_desc_len(s, false));
|
||||
MEMTXATTRS_UNSPECIFIED, desc,
|
||||
sizeof(uint32_t) * gem_get_desc_len(s, false));
|
||||
}
|
||||
|
||||
if (tx_desc_get_used(desc)) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user