diff options
| author | Peter Maydell | 2018-06-29 18:21:21 +0200 |
|---|---|---|
| committer | Richard Henderson | 2018-07-02 17:02:20 +0200 |
| commit | 334692bce7f0653a93b8d84ecde8c847b08dec38 (patch) | |
| tree | 0bb2be80e0d9e50e9afc5b4545739497881898a3 /include/exec/cpu_ldst.h | |
| parent | translate-all: fix locking of TBs whose two pages share the same physical page (diff) | |
| download | qemu-334692bce7f0653a93b8d84ecde8c847b08dec38.tar.gz qemu-334692bce7f0653a93b8d84ecde8c847b08dec38.tar.xz qemu-334692bce7f0653a93b8d84ecde8c847b08dec38.zip | |
tcg: Define and use new tlb_hit() and tlb_hit_page() functions
The condition to check whether an address has hit against a particular
TLB entry is not completely trivial. We do this in various places, and
in fact in one place (get_page_addr_code()) we have got the condition
wrong. Abstract it out into new tlb_hit() and tlb_hit_page() inline
functions (one for a known-page-aligned address and one for an
arbitrary address), and use them in all the places where we had the
condition correct.
This is a no-behaviour-change patch; we leave fixing the buggy
code in get_page_addr_code() to a subsequent patch.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20180629162122.19376-2-peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/exec/cpu_ldst.h')
| -rw-r--r-- | include/exec/cpu_ldst.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h index 5de8c8a5af..0f2cb717b1 100644 --- a/include/exec/cpu_ldst.h +++ b/include/exec/cpu_ldst.h @@ -422,8 +422,7 @@ static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr, g_assert_not_reached(); } - if ((addr & TARGET_PAGE_MASK) - != (tlb_addr & (TARGET_PAGE_MASK | TLB_INVALID_MASK))) { + if (!tlb_hit(tlb_addr, addr)) { /* TLB entry is for a different page */ return NULL; } |
