diff options
| author | Peter Maydell | 2019-09-27 12:10:49 +0200 |
|---|---|---|
| committer | Peter Maydell | 2019-09-27 12:10:49 +0200 |
| commit | deee6ff7b74799b6233573eca4114ecf7b30b20c (patch) | |
| tree | b4eddbabb78bc211117dc011c232beba0b6ae4ca /include/exec/cpu-all.h | |
| parent | Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (diff) | |
| parent | cputlb: Pass retaddr to tb_check_watchpoint (diff) | |
| download | qemu-deee6ff7b74799b6233573eca4114ecf7b30b20c.tar.gz qemu-deee6ff7b74799b6233573eca4114ecf7b30b20c.tar.xz qemu-deee6ff7b74799b6233573eca4114ecf7b30b20c.zip | |
Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20190925' into staging
Fixes for TLB_BSWAP
Coversion of NOTDIRTY and ROM handling to cputlb
Followup cleanups to cputlb
# gpg: Signature made Wed 25 Sep 2019 19:41:17 BST
# gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg: issuer "richard.henderson@linaro.org"
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [full]
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A 05C0 64DF 38E8 AF7E 215F
* remotes/rth/tags/pull-tcg-20190925:
cputlb: Pass retaddr to tb_check_watchpoint
cputlb: Pass retaddr to tb_invalidate_phys_page_fast
cputlb: Remove tb_invalidate_phys_page_range is_cpu_write_access
cputlb: Remove cpu->mem_io_vaddr
cputlb: Handle TLB_NOTDIRTY in probe_access
cputlb: Merge and move memory_notdirty_write_{prepare,complete}
cputlb: Partially inline memory_region_section_get_iotlb
cputlb: Move NOTDIRTY handling from I/O path to TLB path
cputlb: Move ROM handling from I/O path to TLB path
exec: Adjust notdirty tracing
cputlb: Introduce TLB_BSWAP
cputlb: Split out load/store_memop
cputlb: Use qemu_build_not_reached in load/store_helpers
qemu/compiler.h: Add qemu_build_not_reached
cputlb: Disable __always_inline__ without optimization
exec: Use TARGET_PAGE_BITS_MIN for TLB flags
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/exec/cpu-all.h')
| -rw-r--r-- | include/exec/cpu-all.h | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index d2d443c4f9..ad9ab85eb3 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -317,26 +317,35 @@ CPUArchState *cpu_copy(CPUArchState *env); #if !defined(CONFIG_USER_ONLY) -/* Flags stored in the low bits of the TLB virtual address. These are - * defined so that fast path ram access is all zeros. +/* + * Flags stored in the low bits of the TLB virtual address. + * These are defined so that fast path ram access is all zeros. * The flags all must be between TARGET_PAGE_BITS and * maximum address alignment bit. + * + * Use TARGET_PAGE_BITS_MIN so that these bits are constant + * when TARGET_PAGE_BITS_VARY is in effect. */ /* Zero if TLB entry is valid. */ -#define TLB_INVALID_MASK (1 << (TARGET_PAGE_BITS - 1)) +#define TLB_INVALID_MASK (1 << (TARGET_PAGE_BITS_MIN - 1)) /* Set if TLB entry references a clean RAM page. The iotlb entry will contain the page physical address. */ -#define TLB_NOTDIRTY (1 << (TARGET_PAGE_BITS - 2)) +#define TLB_NOTDIRTY (1 << (TARGET_PAGE_BITS_MIN - 2)) /* Set if TLB entry is an IO callback. */ -#define TLB_MMIO (1 << (TARGET_PAGE_BITS - 3)) +#define TLB_MMIO (1 << (TARGET_PAGE_BITS_MIN - 3)) /* Set if TLB entry contains a watchpoint. */ -#define TLB_WATCHPOINT (1 << (TARGET_PAGE_BITS - 4)) +#define TLB_WATCHPOINT (1 << (TARGET_PAGE_BITS_MIN - 4)) +/* Set if TLB entry requires byte swap. */ +#define TLB_BSWAP (1 << (TARGET_PAGE_BITS_MIN - 5)) +/* Set if TLB entry writes ignored. */ +#define TLB_DISCARD_WRITE (1 << (TARGET_PAGE_BITS_MIN - 6)) /* Use this mask to check interception with an alignment mask * in a TCG backend. */ #define TLB_FLAGS_MASK \ - (TLB_INVALID_MASK | TLB_NOTDIRTY | TLB_MMIO | TLB_WATCHPOINT) + (TLB_INVALID_MASK | TLB_NOTDIRTY | TLB_MMIO \ + | TLB_WATCHPOINT | TLB_BSWAP | TLB_DISCARD_WRITE) /** * tlb_hit_page: return true if page aligned @addr is a hit against the |
