[Qemu-devel] [PATCH for-4.0 1/3] disas.c: Use address_space_read() to read memory

Peter Maydell posted 3 patches 7 years, 2 months ago
There is a newer version of this series
[Qemu-devel] [PATCH for-4.0 1/3] disas.c: Use address_space_read() to read memory
Posted by Peter Maydell 7 years, 2 months ago
Currently disas.c reads physical memory using
cpu_physical_memory_read(). This effectively hard-codes
assuming that all CPUs have the same view of physical
memory. Switch to address_space_read() instead, which
lets us use the AddressSpace for the CPU we're
disassembling for.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 disas.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/disas.c b/disas.c
index 5325b7e6be6..f9c517b3588 100644
--- a/disas.c
+++ b/disas.c
@@ -588,7 +588,10 @@ static int
 physical_read_memory(bfd_vma memaddr, bfd_byte *myaddr, int length,
                      struct disassemble_info *info)
 {
-    cpu_physical_memory_read(memaddr, myaddr, length);
+    CPUDebug *s = container_of(info, CPUDebug, info);
+
+    address_space_read(s->cpu->as, memaddr, MEMTXATTRS_UNSPECIFIED,
+                       myaddr, length);
     return 0;
 }
 
-- 
2.19.1


Re: [Qemu-devel] [PATCH for-4.0 1/3] disas.c: Use address_space_read() to read memory
Posted by Philippe Mathieu-Daudé 7 years, 2 months ago
On 22/11/18 12:29, Peter Maydell wrote:
> Currently disas.c reads physical memory using
> cpu_physical_memory_read(). This effectively hard-codes
> assuming that all CPUs have the same view of physical
> memory. Switch to address_space_read() instead, which
> lets us use the AddressSpace for the CPU we're
> disassembling for.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---
>  disas.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/disas.c b/disas.c
> index 5325b7e6be6..f9c517b3588 100644
> --- a/disas.c
> +++ b/disas.c
> @@ -588,7 +588,10 @@ static int
>  physical_read_memory(bfd_vma memaddr, bfd_byte *myaddr, int length,
>                       struct disassemble_info *info)
>  {
> -    cpu_physical_memory_read(memaddr, myaddr, length);
> +    CPUDebug *s = container_of(info, CPUDebug, info);
> +
> +    address_space_read(s->cpu->as, memaddr, MEMTXATTRS_UNSPECIFIED,
> +                       myaddr, length);
>      return 0;
>  }
>  
>