qemu-riscv
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-riscv] [Qemu-devel] [PATCH v4 08/15] exec: Access MemoryRegion


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-riscv] [Qemu-devel] [PATCH v4 08/15] exec: Access MemoryRegion with MemOp
Date: Thu, 25 Jul 2019 13:32:18 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0

On 7/25/19 11:55 AM, address@hidden wrote:
> Signed-off-by: Tony Nguyen <address@hidden>
> ---
>  exec.c            |  6 ++++--
>  memory_ldst.inc.c | 18 +++++++++---------
>  2 files changed, 13 insertions(+), 11 deletions(-)
> 
> diff --git a/exec.c b/exec.c
> index 3e78de3..5013864 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -3334,7 +3334,8 @@ static MemTxResult flatview_write_continue(FlatView 
> *fv, hwaddr addr,
>              /* XXX: could force current_cpu to NULL to avoid
>                 potential bugs */
>              val = ldn_p(buf, l);
> -            result |= memory_region_dispatch_write(mr, addr1, val, l, attrs);
> +            result |= memory_region_dispatch_write(mr, addr1, val,
> +                                                   SIZE_MEMOP(l), attrs);
>          } else {
>              /* RAM case */
>              ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
> @@ -3395,7 +3396,8 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr 
> addr,
>              /* I/O case */
>              release_lock |= prepare_mmio_access(mr);
>              l = memory_access_size(mr, l, addr1);
> -            result |= memory_region_dispatch_read(mr, addr1, &val, l, attrs);
> +            result |= memory_region_dispatch_read(mr, addr1, &val,
> +                                                  SIZE_MEMOP(l), attrs);
>              stn_p(buf, l, val);
>          } else {
>              /* RAM case */
> diff --git a/memory_ldst.inc.c b/memory_ldst.inc.c
> index acf865b..e073cf9 100644
> --- a/memory_ldst.inc.c
> +++ b/memory_ldst.inc.c
> @@ -38,7 +38,7 @@ static inline uint32_t glue(address_space_ldl_internal, 
> SUFFIX)(ARG1_DECL,
>          release_lock |= prepare_mmio_access(mr);
> 
>          /* I/O case */
> -        r = memory_region_dispatch_read(mr, addr1, &val, 4, attrs);
> +        r = memory_region_dispatch_read(mr, addr1, &val, SIZE_MEMOP(4), 
> attrs);
>  #if defined(TARGET_WORDS_BIGENDIAN)
>          if (endian == DEVICE_LITTLE_ENDIAN) {
>              val = bswap32(val);
> @@ -114,7 +114,7 @@ static inline uint64_t glue(address_space_ldq_internal, 
> SUFFIX)(ARG1_DECL,
>          release_lock |= prepare_mmio_access(mr);
> 
>          /* I/O case */
> -        r = memory_region_dispatch_read(mr, addr1, &val, 8, attrs);
> +        r = memory_region_dispatch_read(mr, addr1, &val, SIZE_MEMOP(8), 
> attrs);
>  #if defined(TARGET_WORDS_BIGENDIAN)
>          if (endian == DEVICE_LITTLE_ENDIAN) {
>              val = bswap64(val);
> @@ -188,7 +188,7 @@ uint32_t glue(address_space_ldub, SUFFIX)(ARG1_DECL,
>          release_lock |= prepare_mmio_access(mr);
> 
>          /* I/O case */
> -        r = memory_region_dispatch_read(mr, addr1, &val, 1, attrs);
> +        r = memory_region_dispatch_read(mr, addr1, &val, SIZE_MEMOP(1), 
> attrs);
>      } else {
>          /* RAM case */
>          ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
> @@ -224,7 +224,7 @@ static inline uint32_t glue(address_space_lduw_internal, 
> SUFFIX)(ARG1_DECL,
>          release_lock |= prepare_mmio_access(mr);
> 
>          /* I/O case */
> -        r = memory_region_dispatch_read(mr, addr1, &val, 2, attrs);
> +        r = memory_region_dispatch_read(mr, addr1, &val, SIZE_MEMOP(2), 
> attrs);
>  #if defined(TARGET_WORDS_BIGENDIAN)
>          if (endian == DEVICE_LITTLE_ENDIAN) {
>              val = bswap16(val);
> @@ -300,7 +300,7 @@ void glue(address_space_stl_notdirty, SUFFIX)(ARG1_DECL,
>      if (l < 4 || !memory_access_is_direct(mr, true)) {
>          release_lock |= prepare_mmio_access(mr);
> 
> -        r = memory_region_dispatch_write(mr, addr1, val, 4, attrs);
> +        r = memory_region_dispatch_write(mr, addr1, val, SIZE_MEMOP(4), 
> attrs);
>      } else {
>          ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
>          stl_p(ptr, val);
> @@ -346,7 +346,7 @@ static inline void glue(address_space_stl_internal, 
> SUFFIX)(ARG1_DECL,
>              val = bswap32(val);
>          }
>  #endif
> -        r = memory_region_dispatch_write(mr, addr1, val, 4, attrs);
> +        r = memory_region_dispatch_write(mr, addr1, val, SIZE_MEMOP(4), 
> attrs);
>      } else {
>          /* RAM case */
>          ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
> @@ -408,7 +408,7 @@ void glue(address_space_stb, SUFFIX)(ARG1_DECL,
>      mr = TRANSLATE(addr, &addr1, &l, true, attrs);
>      if (!memory_access_is_direct(mr, true)) {
>          release_lock |= prepare_mmio_access(mr);
> -        r = memory_region_dispatch_write(mr, addr1, val, 1, attrs);
> +        r = memory_region_dispatch_write(mr, addr1, val, SIZE_MEMOP(1), 
> attrs);
>      } else {
>          /* RAM case */
>          ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
> @@ -451,7 +451,7 @@ static inline void glue(address_space_stw_internal, 
> SUFFIX)(ARG1_DECL,
>              val = bswap16(val);
>          }
>  #endif
> -        r = memory_region_dispatch_write(mr, addr1, val, 2, attrs);
> +        r = memory_region_dispatch_write(mr, addr1, val, SIZE_MEMOP(2), 
> attrs);
>      } else {
>          /* RAM case */
>          ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
> @@ -524,7 +524,7 @@ static void glue(address_space_stq_internal, 
> SUFFIX)(ARG1_DECL,
>              val = bswap64(val);
>          }
>  #endif
> -        r = memory_region_dispatch_write(mr, addr1, val, 8, attrs);
> +        r = memory_region_dispatch_write(mr, addr1, val, SIZE_MEMOP(8), 
> attrs);
>      } else {
>          /* RAM case */
>          ptr = qemu_map_ram_ptr(mr->ram_block, addr1);
> --
> 1.8.3.1
> 
> 
> 

Reviewed-by: Philippe Mathieu-Daudé <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]