diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2018-06-29 17:21:21 +0100 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2018-07-02 08:02:20 -0700 |
commit | 334692bce7f0653a93b8d84ecde8c847b08dec38 (patch) | |
tree | 0bb2be80e0d9e50e9afc5b4545739497881898a3 /include/exec/cpu_ldst.h | |
parent | a688e73ba8c2e3b6f3e5e683c4a9c37d2ddc8984 (diff) | |
download | qemu-334692bce7f0653a93b8d84ecde8c847b08dec38.zip qemu-334692bce7f0653a93b8d84ecde8c847b08dec38.tar.gz qemu-334692bce7f0653a93b8d84ecde8c847b08dec38.tar.bz2 |
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 5de8c8a..0f2cb71 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; } |