[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 15/15] cputlb: Fix io_readx() to respect the access_t
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PULL 15/15] cputlb: Fix io_readx() to respect the access_type |
Date: |
Fri, 26 Apr 2019 10:24:21 -0700 |
From: Shahab Vahedi <address@hidden>
This change adapts io_readx() to its input access_type. Currently
io_readx() treats any memory access as a read, although it has an
input argument "MMUAccessType access_type". This results in:
1) Calling the tlb_fill() only with MMU_DATA_LOAD
2) Considering only entry->addr_read as the tlb_addr
Buglink: https://bugs.launchpad.net/qemu/+bug/1825359
Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Shahab Vahedi <address@hidden>
Message-Id: <address@hidden>
[rth: Remove assert; fix expression formatting.]
Signed-off-by: Richard Henderson <address@hidden>
---
accel/tcg/cputlb.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index 88cc8389e9..f2f618217d 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -878,10 +878,11 @@ static uint64_t io_readx(CPUArchState *env, CPUIOTLBEntry
*iotlbentry,
CPUTLBEntry *entry;
target_ulong tlb_addr;
- tlb_fill(cpu, addr, size, MMU_DATA_LOAD, mmu_idx, retaddr);
+ tlb_fill(cpu, addr, size, access_type, mmu_idx, retaddr);
entry = tlb_entry(env, mmu_idx, addr);
- tlb_addr = entry->addr_read;
+ tlb_addr = (access_type == MMU_DATA_LOAD ?
+ entry->addr_read : entry->addr_code);
if (!(tlb_addr & ~(TARGET_PAGE_MASK | TLB_RECHECK))) {
/* RAM access */
uintptr_t haddr = addr + entry->addend;
--
2.17.1
- [Qemu-devel] [PULL 02/15] tcg: Add INDEX_op_extract2_{i32,i64}, (continued)
- [Qemu-devel] [PULL 02/15] tcg: Add INDEX_op_extract2_{i32,i64}, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 06/15] tcg/arm: Support INDEX_op_extract2_i32, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 07/15] tcg/aarch64: Support INDEX_op_extract2_{i32, i64}, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 09/15] tcg: Restart after TB code generation overflow, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 08/15] tcg: Hoist max_insns computation to tb_gen_code, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 11/15] tcg: Restart TB generation after constant pool overflow, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 10/15] tcg: Restart TB generation after relocation overflow, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 12/15] tcg: Restart TB generation after out-of-line ldst overflow, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 13/15] tcg/ppc: Allow the constant pool to overflow at 32k, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 14/15] tcg/arm: Restrict constant pool displacement to 12 bits, Richard Henderson, 2019/04/26
- [Qemu-devel] [PULL 15/15] cputlb: Fix io_readx() to respect the access_type,
Richard Henderson <=
- Re: [Qemu-devel] [PULL 00/15] tcg patch queue, no-reply, 2019/04/26
- Re: [Qemu-devel] [PULL 00/15] tcg patch queue, Peter Maydell, 2019/04/28