* [Qemu-devel] [PATCH] Replace cpu_physical_memory_rw were possible
@ 2011-04-10 16:23 Stefan Weil
2011-04-12 21:34 ` Aurelien Jarno
0 siblings, 1 reply; 2+ messages in thread
From: Stefan Weil @ 2011-04-10 16:23 UTC (permalink / raw)
To: QEMU Developers; +Cc: Aurelien Jarno
Using cpu_physical_memory_read, cpu_physical_memory_write and ldub_phys
improves readability and allows removing some type casts.
lduw_phys and ldl_phys were not used because both require aligned
addresses. Therefore it is not possible to simply replace existing
calls by one of these functions.
Cc: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
disas.c | 2 +-
exec.c | 2 +-
hw/rc4030.c | 4 ++--
hw/s390-virtio-bus.c | 3 ++-
hw/s390-virtio.c | 4 ++--
hw/sm501_template.h | 2 +-
hw/usb-ohci.c | 14 ++++++--------
monitor.c | 9 ++++-----
8 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/disas.c b/disas.c
index 17b4ce4..223606c 100644
--- a/disas.c
+++ b/disas.c
@@ -345,7 +345,7 @@ monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length,
struct disassemble_info *info)
{
if (monitor_disas_is_physical) {
- cpu_physical_memory_rw(memaddr, myaddr, length, 0);
+ cpu_physical_memory_read(memaddr, myaddr, length);
} else {
cpu_memory_rw_debug(monitor_disas_env, memaddr,myaddr, length, 0);
}
diff --git a/exec.c b/exec.c
index e8f1eeb..b1ee52a 100644
--- a/exec.c
+++ b/exec.c
@@ -3932,7 +3932,7 @@ void *cpu_physical_memory_map(target_phys_addr_t addr,
bounce.addr = addr;
bounce.len = l;
if (!is_write) {
- cpu_physical_memory_rw(addr, bounce.buffer, l, 0);
+ cpu_physical_memory_read(addr, bounce.buffer, l);
}
ptr = bounce.buffer;
} else {
diff --git a/hw/rc4030.c b/hw/rc4030.c
index d30230a..6563336 100644
--- a/hw/rc4030.c
+++ b/hw/rc4030.c
@@ -307,7 +307,7 @@ static void rc4030_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
if (s->cache_ltag == 0x80000001 && s->cache_bmask == 0xf0f0f0f) {
target_phys_addr_t dest = s->cache_ptag & ~0x1;
dest += (s->cache_maint & 0x3) << 3;
- cpu_physical_memory_rw(dest, (uint8_t*)&val, 4, 1);
+ cpu_physical_memory_write(dest, &val, 4);
}
break;
/* Remote Speed Registers */
@@ -704,7 +704,7 @@ void rc4030_dma_memory_rw(void *opaque, target_phys_addr_t addr, uint8_t *buf, i
entry_addr = s->dma_tl_base + index * sizeof(dma_pagetable_entry);
/* XXX: not sure. should we really use only lowest bits? */
entry_addr &= 0x7fffffff;
- cpu_physical_memory_rw(entry_addr, (uint8_t *)&entry, sizeof(entry), 0);
+ cpu_physical_memory_read(entry_addr, &entry, sizeof(entry));
/* Read/write data at right place */
phys_addr = entry.frame + (addr & (DMA_PAGESIZE - 1));
diff --git a/hw/s390-virtio-bus.c b/hw/s390-virtio-bus.c
index 58af164..40364da 100644
--- a/hw/s390-virtio-bus.c
+++ b/hw/s390-virtio-bus.c
@@ -233,7 +233,8 @@ void s390_virtio_device_sync(VirtIOS390Device *dev)
dev->vdev->get_config(dev->vdev, dev->vdev->config);
}
- cpu_physical_memory_rw(cur_offs, dev->vdev->config, dev->vdev->config_len, 1);
+ cpu_physical_memory_write(cur_offs,
+ dev->vdev->config, dev->vdev->config_len);
cur_offs += dev->vdev->config_len;
}
diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c
index 850422f..d429f10 100644
--- a/hw/s390-virtio.c
+++ b/hw/s390-virtio.c
@@ -230,8 +230,8 @@ static void s390_init(ram_addr_t ram_size,
}
if (kernel_cmdline) {
- cpu_physical_memory_rw(KERN_PARM_AREA, (uint8_t *)kernel_cmdline,
- strlen(kernel_cmdline), 1);
+ cpu_physical_memory_write(KERN_PARM_AREA, kernel_cmdline,
+ strlen(kernel_cmdline));
}
/* Create VirtIO network adapters */
diff --git a/hw/sm501_template.h b/hw/sm501_template.h
index d1ceef9..2d4a3d8 100644
--- a/hw/sm501_template.h
+++ b/hw/sm501_template.h
@@ -120,7 +120,7 @@ static void glue(draw_hwc_line_, PIXEL_NAME)(SM501State * s, int crt,
/* get pixel value */
if (i % 4 == 0) {
- cpu_physical_memory_rw(cursor_addr, &bitset, 1, 0);
+ bitset = ldub_phys(cursor_addr);
cursor_addr++;
}
v = bitset & 3;
diff --git a/hw/usb-ohci.c b/hw/usb-ohci.c
index d2b14f7..0ad4f55 100644
--- a/hw/usb-ohci.c
+++ b/hw/usb-ohci.c
@@ -427,7 +427,7 @@ static inline int get_dwords(OHCIState *ohci,
addr += ohci->localmem_base;
for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) {
- cpu_physical_memory_rw(addr, (uint8_t *)buf, sizeof(*buf), 0);
+ cpu_physical_memory_read(addr, buf, sizeof(*buf));
*buf = le32_to_cpu(*buf);
}
@@ -444,7 +444,7 @@ static inline int put_dwords(OHCIState *ohci,
for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) {
uint32_t tmp = cpu_to_le32(*buf);
- cpu_physical_memory_rw(addr, (uint8_t *)&tmp, sizeof(tmp), 1);
+ cpu_physical_memory_write(addr, &tmp, sizeof(tmp));
}
return 1;
@@ -459,7 +459,7 @@ static inline int get_words(OHCIState *ohci,
addr += ohci->localmem_base;
for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) {
- cpu_physical_memory_rw(addr, (uint8_t *)buf, sizeof(*buf), 0);
+ cpu_physical_memory_read(addr, buf, sizeof(*buf));
*buf = le16_to_cpu(*buf);
}
@@ -476,7 +476,7 @@ static inline int put_words(OHCIState *ohci,
for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) {
uint16_t tmp = cpu_to_le16(*buf);
- cpu_physical_memory_rw(addr, (uint8_t *)&tmp, sizeof(tmp), 1);
+ cpu_physical_memory_write(addr, &tmp, sizeof(tmp));
}
return 1;
@@ -504,8 +504,7 @@ static inline int ohci_read_iso_td(OHCIState *ohci,
static inline int ohci_read_hcca(OHCIState *ohci,
uint32_t addr, struct ohci_hcca *hcca)
{
- cpu_physical_memory_rw(addr + ohci->localmem_base,
- (uint8_t *)hcca, sizeof(*hcca), 0);
+ cpu_physical_memory_read(addr + ohci->localmem_base, hcca, sizeof(*hcca));
return 1;
}
@@ -531,8 +530,7 @@ static inline int ohci_put_iso_td(OHCIState *ohci,
static inline int ohci_put_hcca(OHCIState *ohci,
uint32_t addr, struct ohci_hcca *hcca)
{
- cpu_physical_memory_rw(addr + ohci->localmem_base,
- (uint8_t *)hcca, sizeof(*hcca), 1);
+ cpu_physical_memory_write(addr + ohci->localmem_base, hcca, sizeof(*hcca));
return 1;
}
diff --git a/monitor.c b/monitor.c
index 07186ca..5f3bc72 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1429,7 +1429,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
if (l > line_size)
l = line_size;
if (is_physical) {
- cpu_physical_memory_rw(addr, buf, l, 0);
+ cpu_physical_memory_read(addr, buf, l);
} else {
env = mon_get_cpu();
if (cpu_memory_rw_debug(env, addr, buf, l, 0) < 0) {
@@ -1605,7 +1605,7 @@ static int do_physical_memory_save(Monitor *mon, const QDict *qdict,
l = sizeof(buf);
if (l > size)
l = size;
- cpu_physical_memory_rw(addr, buf, l, 0);
+ cpu_physical_memory_read(addr, buf, l);
if (fwrite(buf, 1, l, f) != l) {
monitor_printf(mon, "fwrite() error in do_physical_memory_save\n");
goto exit;
@@ -1625,17 +1625,16 @@ exit:
static void do_sum(Monitor *mon, const QDict *qdict)
{
uint32_t addr;
- uint8_t buf[1];
uint16_t sum;
uint32_t start = qdict_get_int(qdict, "start");
uint32_t size = qdict_get_int(qdict, "size");
sum = 0;
for(addr = start; addr < (start + size); addr++) {
- cpu_physical_memory_rw(addr, buf, 1, 0);
+ uint8_t val = ldub_phys(addr);
/* BSD sum algorithm ('sum' Unix command) */
sum = (sum >> 1) | (sum << 15);
- sum += buf[0];
+ sum += val;
}
monitor_printf(mon, "%05d\n", sum);
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH] Replace cpu_physical_memory_rw were possible
2011-04-10 16:23 [Qemu-devel] [PATCH] Replace cpu_physical_memory_rw were possible Stefan Weil
@ 2011-04-12 21:34 ` Aurelien Jarno
0 siblings, 0 replies; 2+ messages in thread
From: Aurelien Jarno @ 2011-04-12 21:34 UTC (permalink / raw)
To: Stefan Weil; +Cc: QEMU Developers
On Sun, Apr 10, 2011 at 06:23:39PM +0200, Stefan Weil wrote:
> Using cpu_physical_memory_read, cpu_physical_memory_write and ldub_phys
> improves readability and allows removing some type casts.
>
> lduw_phys and ldl_phys were not used because both require aligned
> addresses. Therefore it is not possible to simply replace existing
> calls by one of these functions.
>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> ---
> disas.c | 2 +-
> exec.c | 2 +-
> hw/rc4030.c | 4 ++--
> hw/s390-virtio-bus.c | 3 ++-
> hw/s390-virtio.c | 4 ++--
> hw/sm501_template.h | 2 +-
> hw/usb-ohci.c | 14 ++++++--------
> monitor.c | 9 ++++-----
> 8 files changed, 19 insertions(+), 21 deletions(-)
Thanks, applied with the 3 other ones.
> diff --git a/disas.c b/disas.c
> index 17b4ce4..223606c 100644
> --- a/disas.c
> +++ b/disas.c
> @@ -345,7 +345,7 @@ monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length,
> struct disassemble_info *info)
> {
> if (monitor_disas_is_physical) {
> - cpu_physical_memory_rw(memaddr, myaddr, length, 0);
> + cpu_physical_memory_read(memaddr, myaddr, length);
> } else {
> cpu_memory_rw_debug(monitor_disas_env, memaddr,myaddr, length, 0);
> }
> diff --git a/exec.c b/exec.c
> index e8f1eeb..b1ee52a 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -3932,7 +3932,7 @@ void *cpu_physical_memory_map(target_phys_addr_t addr,
> bounce.addr = addr;
> bounce.len = l;
> if (!is_write) {
> - cpu_physical_memory_rw(addr, bounce.buffer, l, 0);
> + cpu_physical_memory_read(addr, bounce.buffer, l);
> }
> ptr = bounce.buffer;
> } else {
> diff --git a/hw/rc4030.c b/hw/rc4030.c
> index d30230a..6563336 100644
> --- a/hw/rc4030.c
> +++ b/hw/rc4030.c
> @@ -307,7 +307,7 @@ static void rc4030_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
> if (s->cache_ltag == 0x80000001 && s->cache_bmask == 0xf0f0f0f) {
> target_phys_addr_t dest = s->cache_ptag & ~0x1;
> dest += (s->cache_maint & 0x3) << 3;
> - cpu_physical_memory_rw(dest, (uint8_t*)&val, 4, 1);
> + cpu_physical_memory_write(dest, &val, 4);
> }
> break;
> /* Remote Speed Registers */
> @@ -704,7 +704,7 @@ void rc4030_dma_memory_rw(void *opaque, target_phys_addr_t addr, uint8_t *buf, i
> entry_addr = s->dma_tl_base + index * sizeof(dma_pagetable_entry);
> /* XXX: not sure. should we really use only lowest bits? */
> entry_addr &= 0x7fffffff;
> - cpu_physical_memory_rw(entry_addr, (uint8_t *)&entry, sizeof(entry), 0);
> + cpu_physical_memory_read(entry_addr, &entry, sizeof(entry));
>
> /* Read/write data at right place */
> phys_addr = entry.frame + (addr & (DMA_PAGESIZE - 1));
> diff --git a/hw/s390-virtio-bus.c b/hw/s390-virtio-bus.c
> index 58af164..40364da 100644
> --- a/hw/s390-virtio-bus.c
> +++ b/hw/s390-virtio-bus.c
> @@ -233,7 +233,8 @@ void s390_virtio_device_sync(VirtIOS390Device *dev)
> dev->vdev->get_config(dev->vdev, dev->vdev->config);
> }
>
> - cpu_physical_memory_rw(cur_offs, dev->vdev->config, dev->vdev->config_len, 1);
> + cpu_physical_memory_write(cur_offs,
> + dev->vdev->config, dev->vdev->config_len);
> cur_offs += dev->vdev->config_len;
> }
>
> diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c
> index 850422f..d429f10 100644
> --- a/hw/s390-virtio.c
> +++ b/hw/s390-virtio.c
> @@ -230,8 +230,8 @@ static void s390_init(ram_addr_t ram_size,
> }
>
> if (kernel_cmdline) {
> - cpu_physical_memory_rw(KERN_PARM_AREA, (uint8_t *)kernel_cmdline,
> - strlen(kernel_cmdline), 1);
> + cpu_physical_memory_write(KERN_PARM_AREA, kernel_cmdline,
> + strlen(kernel_cmdline));
> }
>
> /* Create VirtIO network adapters */
> diff --git a/hw/sm501_template.h b/hw/sm501_template.h
> index d1ceef9..2d4a3d8 100644
> --- a/hw/sm501_template.h
> +++ b/hw/sm501_template.h
> @@ -120,7 +120,7 @@ static void glue(draw_hwc_line_, PIXEL_NAME)(SM501State * s, int crt,
>
> /* get pixel value */
> if (i % 4 == 0) {
> - cpu_physical_memory_rw(cursor_addr, &bitset, 1, 0);
> + bitset = ldub_phys(cursor_addr);
> cursor_addr++;
> }
> v = bitset & 3;
> diff --git a/hw/usb-ohci.c b/hw/usb-ohci.c
> index d2b14f7..0ad4f55 100644
> --- a/hw/usb-ohci.c
> +++ b/hw/usb-ohci.c
> @@ -427,7 +427,7 @@ static inline int get_dwords(OHCIState *ohci,
> addr += ohci->localmem_base;
>
> for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) {
> - cpu_physical_memory_rw(addr, (uint8_t *)buf, sizeof(*buf), 0);
> + cpu_physical_memory_read(addr, buf, sizeof(*buf));
> *buf = le32_to_cpu(*buf);
> }
>
> @@ -444,7 +444,7 @@ static inline int put_dwords(OHCIState *ohci,
>
> for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) {
> uint32_t tmp = cpu_to_le32(*buf);
> - cpu_physical_memory_rw(addr, (uint8_t *)&tmp, sizeof(tmp), 1);
> + cpu_physical_memory_write(addr, &tmp, sizeof(tmp));
> }
>
> return 1;
> @@ -459,7 +459,7 @@ static inline int get_words(OHCIState *ohci,
> addr += ohci->localmem_base;
>
> for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) {
> - cpu_physical_memory_rw(addr, (uint8_t *)buf, sizeof(*buf), 0);
> + cpu_physical_memory_read(addr, buf, sizeof(*buf));
> *buf = le16_to_cpu(*buf);
> }
>
> @@ -476,7 +476,7 @@ static inline int put_words(OHCIState *ohci,
>
> for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) {
> uint16_t tmp = cpu_to_le16(*buf);
> - cpu_physical_memory_rw(addr, (uint8_t *)&tmp, sizeof(tmp), 1);
> + cpu_physical_memory_write(addr, &tmp, sizeof(tmp));
> }
>
> return 1;
> @@ -504,8 +504,7 @@ static inline int ohci_read_iso_td(OHCIState *ohci,
> static inline int ohci_read_hcca(OHCIState *ohci,
> uint32_t addr, struct ohci_hcca *hcca)
> {
> - cpu_physical_memory_rw(addr + ohci->localmem_base,
> - (uint8_t *)hcca, sizeof(*hcca), 0);
> + cpu_physical_memory_read(addr + ohci->localmem_base, hcca, sizeof(*hcca));
> return 1;
> }
>
> @@ -531,8 +530,7 @@ static inline int ohci_put_iso_td(OHCIState *ohci,
> static inline int ohci_put_hcca(OHCIState *ohci,
> uint32_t addr, struct ohci_hcca *hcca)
> {
> - cpu_physical_memory_rw(addr + ohci->localmem_base,
> - (uint8_t *)hcca, sizeof(*hcca), 1);
> + cpu_physical_memory_write(addr + ohci->localmem_base, hcca, sizeof(*hcca));
> return 1;
> }
>
> diff --git a/monitor.c b/monitor.c
> index 07186ca..5f3bc72 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -1429,7 +1429,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
> if (l > line_size)
> l = line_size;
> if (is_physical) {
> - cpu_physical_memory_rw(addr, buf, l, 0);
> + cpu_physical_memory_read(addr, buf, l);
> } else {
> env = mon_get_cpu();
> if (cpu_memory_rw_debug(env, addr, buf, l, 0) < 0) {
> @@ -1605,7 +1605,7 @@ static int do_physical_memory_save(Monitor *mon, const QDict *qdict,
> l = sizeof(buf);
> if (l > size)
> l = size;
> - cpu_physical_memory_rw(addr, buf, l, 0);
> + cpu_physical_memory_read(addr, buf, l);
> if (fwrite(buf, 1, l, f) != l) {
> monitor_printf(mon, "fwrite() error in do_physical_memory_save\n");
> goto exit;
> @@ -1625,17 +1625,16 @@ exit:
> static void do_sum(Monitor *mon, const QDict *qdict)
> {
> uint32_t addr;
> - uint8_t buf[1];
> uint16_t sum;
> uint32_t start = qdict_get_int(qdict, "start");
> uint32_t size = qdict_get_int(qdict, "size");
>
> sum = 0;
> for(addr = start; addr < (start + size); addr++) {
> - cpu_physical_memory_rw(addr, buf, 1, 0);
> + uint8_t val = ldub_phys(addr);
> /* BSD sum algorithm ('sum' Unix command) */
> sum = (sum >> 1) | (sum << 15);
> - sum += buf[0];
> + sum += val;
> }
> monitor_printf(mon, "%05d\n", sum);
> }
> --
> 1.7.2.5
>
>
>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-04-13 1:47 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-10 16:23 [Qemu-devel] [PATCH] Replace cpu_physical_memory_rw were possible Stefan Weil
2011-04-12 21:34 ` Aurelien Jarno
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).