summaryrefslogtreecommitdiffstats
path: root/target-alpha
diff options
context:
space:
mode:
authorSergey Fedorov2016-04-09 00:00:23 +0200
committerRichard Henderson2016-05-13 02:06:42 +0200
commit90aa39a1cc4837360889f0e033ca25cc82100308 (patch)
treeb8f857f456fec4ecd5b5931f41c7b17b52a353eb /target-alpha
parenttcg: Clean up direct block chaining safety checks (diff)
downloadqemu-90aa39a1cc4837360889f0e033ca25cc82100308.tar.gz
qemu-90aa39a1cc4837360889f0e033ca25cc82100308.tar.xz
qemu-90aa39a1cc4837360889f0e033ca25cc82100308.zip
tcg: Allow goto_tb to any target PC in user mode
In user mode, there's only a static address translation, TBs are always invalidated properly and direct jumps are reset when mapping change. Thus the destination address is always valid for direct jumps and there's no need to restrict it to the pages the TB resides in. Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> Signed-off-by: Sergey Fedorov <sergey.fedorov@linaro.org> Cc: Riku Voipio <riku.voipio@iki.fi> Cc: Blue Swirl <blauwirbel@gmail.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'target-alpha')
-rw-r--r--target-alpha/translate.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index 5b86992dd3..8c2183a418 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -460,12 +460,16 @@ static bool use_goto_tb(DisasContext *ctx, uint64_t dest)
|| ctx->singlestep_enabled || singlestep) {
return false;
}
+#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->tb->pc ^ dest) & TARGET_PAGE_MASK) == 0;
+#else
+ return true;
+#endif
}
static ExitStatus gen_bdirect(DisasContext *ctx, int ra, int32_t disp)