aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2021-06-20 15:44:28 -0700
committerRichard Henderson <richard.henderson@linaro.org>2021-07-09 09:41:53 -0700
commit3fd3442abe24f8cabcbb40b73ffe7de81e5db446 (patch)
treeeea5fdd90fe5ffd09164e6e7345eae36aa2fb54d /target
parentcba201f4c74a99b6ee0a43d66f5dae8f901b4006 (diff)
downloadqemu-3fd3442abe24f8cabcbb40b73ffe7de81e5db446.zip
qemu-3fd3442abe24f8cabcbb40b73ffe7de81e5db446.tar.gz
qemu-3fd3442abe24f8cabcbb40b73ffe7de81e5db446.tar.bz2
target/alpha: Remove in_superpage
The number of links across (normal) pages using this is low, and it will shortly violate the contract for breakpoints. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'target')
-rw-r--r--target/alpha/translate.c24
1 files changed, 2 insertions, 22 deletions
diff --git a/target/alpha/translate.c b/target/alpha/translate.c
index cb2cb2d..bb7b5ce 100644
--- a/target/alpha/translate.c
+++ b/target/alpha/translate.c
@@ -438,24 +438,9 @@ static DisasJumpType gen_store_conditional(DisasContext *ctx, int ra, int rb,
return DISAS_NEXT;
}
-static bool in_superpage(DisasContext *ctx, int64_t addr)
-{
-#ifndef CONFIG_USER_ONLY
- return ((ctx->tbflags & ENV_FLAG_PS_USER) == 0
- && addr >> TARGET_VIRT_ADDR_SPACE_BITS == -1
- && ((addr >> 41) & 3) == 2);
-#else
- return false;
-#endif
-}
-
static bool use_goto_tb(DisasContext *ctx, uint64_t dest)
{
#ifndef CONFIG_USER_ONLY
- /* If the destination is in the superpage, the page perms can't change. */
- if (in_superpage(ctx, dest)) {
- return true;
- }
/* Check for the dest on the same page as the start of the TB. */
return ((ctx->base.tb->pc ^ dest) & TARGET_PAGE_MASK) == 0;
#else
@@ -2990,7 +2975,7 @@ static void alpha_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu)
{
DisasContext *ctx = container_of(dcbase, DisasContext, base);
CPUAlphaState *env = cpu->env_ptr;
- int64_t bound, mask;
+ int64_t bound;
ctx->tbflags = ctx->base.tb->flags;
ctx->mem_idx = cpu_mmu_index(env, false);
@@ -3019,12 +3004,7 @@ static void alpha_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu)
ctx->lit = NULL;
/* Bound the number of insns to execute to those left on the page. */
- if (in_superpage(ctx, ctx->base.pc_first)) {
- mask = -1ULL << 41;
- } else {
- mask = TARGET_PAGE_MASK;
- }
- bound = -(ctx->base.pc_first | mask) / 4;
+ bound = -(ctx->base.pc_first | TARGET_PAGE_MASK) / 4;
ctx->base.max_insns = MIN(ctx->base.max_insns, bound);
}