The QTest framework implementation of the read/write[bwlq]
commands doesn't care about which address space is used.
Historically it accessed the default address space of the
first vCPU (although this is dubious since there is no vCPU
within QTest).
On all targets the first address space is &address_space_memory:
* Only ARM and X86 call cpu_address_space_init() to set an AS,
and the index #0 is &address_space_memory:
target/arm/cpu.h:2505: ARMASIdx_NS = 0,
target/arm/cpu.c:2162: cpu_address_space_init(cs, ARMASIdx_NS,
"cpu-memory", cs->memory);
target/i386/cpu.h:2578: X86ASIdx_MEM = 0,
target/i386/kvm/kvm-cpu.c:102: cpu_address_space_init(cs, X86ASIdx_MEM,
"cpu-memory", cs->memory);
target/i386/tcg/system/tcg-cpu.c:77: cpu_address_space_init(cs,
X86ASIdx_MEM, "cpu-memory", cs->memory);
* Other targets don't call cpu_address_space_init() so default
to &address_space_memory.
Directly use '&address_space_memory' instead of first_cpu->as.
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
system/qtest.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/system/qtest.c b/system/qtest.c
index fa42c9f9215..62bb9120dc7 100644
--- a/system/qtest.c
+++ b/system/qtest.c
@@ -16,6 +16,7 @@
#include "system/qtest.h"
#include "system/runstate.h"
#include "chardev/char-fe.h"
+#include "system/address-spaces.h"
#include "system/ioport.h"
#include "system/memory.h"
#include "exec/tswap.h"
@@ -512,22 +513,22 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
if (words[0][5] == 'b') {
uint8_t data = value;
- address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_write(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
&data, 1);
} else if (words[0][5] == 'w') {
uint16_t data = value;
tswap16s(&data);
- address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_write(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
&data, 2);
} else if (words[0][5] == 'l') {
uint32_t data = value;
tswap32s(&data);
- address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_write(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
&data, 4);
} else if (words[0][5] == 'q') {
uint64_t data = value;
tswap64s(&data);
- address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_write(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
&data, 8);
}
qtest_send(chr, "OK\n");
@@ -545,21 +546,21 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
if (words[0][4] == 'b') {
uint8_t data;
- address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_read(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
&data, 1);
value = data;
} else if (words[0][4] == 'w') {
uint16_t data;
- address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_read(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
&data, 2);
value = tswap16(data);
} else if (words[0][4] == 'l') {
uint32_t data;
- address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_read(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
&data, 4);
value = tswap32(data);
} else if (words[0][4] == 'q') {
- address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_read(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
&value, 8);
tswap64s(&value);
}
@@ -579,7 +580,7 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
g_assert(len);
data = g_malloc(len);
- address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED, data,
+ address_space_read(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED, data,
len);
enc = qemu_hexdump_line(NULL, data, len, 0, 0);
@@ -600,7 +601,7 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
g_assert(ret == 0);
data = g_malloc(len);
- address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED, data,
+ address_space_read(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED, data,
len);
b64_data = g_base64_encode(data, len);
qtest_sendf(chr, "OK %s\n", b64_data);
@@ -634,7 +635,7 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
data[i] = 0;
}
}
- address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED, data,
+ address_space_write(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED, data,
len);
g_free(data);
@@ -656,7 +657,7 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
if (len) {
data = g_malloc(len);
memset(data, pattern, len);
- address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ address_space_write(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED,
data, len);
g_free(data);
}
@@ -689,7 +690,7 @@ static void qtest_process_command(CharBackend *chr, gchar
**words)
out_len = MIN(out_len, len);
}
- address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED, data,
+ address_space_write(&address_space_memory, addr,
MEMTXATTRS_UNSPECIFIED, data,
len);
qtest_send(chr, "OK\n");
--
2.51.0