[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 1/6] target/m68k: In dump_address_map() check for mem
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PULL 1/6] target/m68k: In dump_address_map() check for memory access failures |
Date: |
Fri, 17 May 2019 00:35:14 +0200 |
From: Peter Maydell <address@hidden>
In dump_address_map(), use address_space_ldl() instead of ldl_phys().
This allows us to check whether the memory access failed.
Signed-off-by: Peter Maydell <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
target/m68k/helper.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/target/m68k/helper.c b/target/m68k/helper.c
index d958a34959..5b81995ee7 100644
--- a/target/m68k/helper.c
+++ b/target/m68k/helper.c
@@ -403,6 +403,7 @@ static void dump_address_map(CPUM68KState *env, uint32_t
root_pointer)
int last_attr = -1, attr = -1;
M68kCPU *cpu = m68k_env_get_cpu(env);
CPUState *cs = CPU(cpu);
+ MemTxResult txres;
if (env->mmu.tcr & M68K_TCR_PAGE_8K) {
/* 8k page */
@@ -416,22 +417,29 @@ static void dump_address_map(CPUM68KState *env, uint32_t
root_pointer)
tib_mask = M68K_4K_PAGE_MASK;
}
for (i = 0; i < M68K_ROOT_POINTER_ENTRIES; i++) {
- tia = ldl_phys(cs->as, M68K_POINTER_BASE(root_pointer) + i * 4);
- if (!M68K_UDT_VALID(tia)) {
+ tia = address_space_ldl(cs->as, M68K_POINTER_BASE(root_pointer) + i *
4,
+ MEMTXATTRS_UNSPECIFIED, &txres);
+ if (txres != MEMTX_OK || !M68K_UDT_VALID(tia)) {
continue;
}
for (j = 0; j < M68K_ROOT_POINTER_ENTRIES; j++) {
- tib = ldl_phys(cs->as, M68K_POINTER_BASE(tia) + j * 4);
- if (!M68K_UDT_VALID(tib)) {
+ tib = address_space_ldl(cs->as, M68K_POINTER_BASE(tia) + j * 4,
+ MEMTXATTRS_UNSPECIFIED, &txres);
+ if (txres != MEMTX_OK || !M68K_UDT_VALID(tib)) {
continue;
}
for (k = 0; k < tic_size; k++) {
- tic = ldl_phys(cs->as, (tib & tib_mask) + k * 4);
- if (!M68K_PDT_VALID(tic)) {
+ tic = address_space_ldl(cs->as, (tib & tib_mask) + k * 4,
+ MEMTXATTRS_UNSPECIFIED, &txres);
+ if (txres != MEMTX_OK || !M68K_PDT_VALID(tic)) {
continue;
}
if (M68K_PDT_INDIRECT(tic)) {
- tic = ldl_phys(cs->as, M68K_INDIRECT_POINTER(tic));
+ tic = address_space_ldl(cs->as, M68K_INDIRECT_POINTER(tic),
+ MEMTXATTRS_UNSPECIFIED, &txres);
+ if (txres != MEMTX_OK) {
+ continue;
+ }
}
last_logical = logical;
--
2.20.1
- [Qemu-devel] [PULL 0/6] M68k staging patches, Laurent Vivier, 2019/05/16
- [Qemu-devel] [PULL 1/6] target/m68k: In dump_address_map() check for memory access failures,
Laurent Vivier <=
- [Qemu-devel] [PULL 2/6] target/m68k: In get_physical_address() check for memory access failures, Laurent Vivier, 2019/05/16
- [Qemu-devel] [PULL 5/6] target/m68k: Fix a tcg_temp leak, Laurent Vivier, 2019/05/16
- [Qemu-devel] [PULL 3/6] target/m68k: Switch to transaction_failed hook, Laurent Vivier, 2019/05/16
- [Qemu-devel] [PULL 4/6] target/m68k: Reduce the l1 TCGLabel scope, Laurent Vivier, 2019/05/16
- [Qemu-devel] [PULL 6/6] target/m68k: Optimize rotate_x() using extract_i32(), Laurent Vivier, 2019/05/16
- Re: [Qemu-devel] [PULL 0/6] M68k staging patches, Peter Maydell, 2019/05/17