diff options
author | Sergey Fedorov <serge.fdrv@gmail.com> | 2016-04-09 01:00:23 +0300 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2016-05-12 14:06:42 -1000 |
commit | 90aa39a1cc4837360889f0e033ca25cc82100308 (patch) | |
tree | b8f857f456fec4ecd5b5931f41c7b17b52a353eb /tcg/tcg-op.h | |
parent | 5b053a4a28278bca606eeff7d1c0730df1b047e9 (diff) | |
download | qemu-90aa39a1cc4837360889f0e033ca25cc82100308.zip qemu-90aa39a1cc4837360889f0e033ca25cc82100308.tar.gz qemu-90aa39a1cc4837360889f0e033ca25cc82100308.tar.bz2 |
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 'tcg/tcg-op.h')
-rw-r--r-- | tcg/tcg-op.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h index ace3961..f217e80 100644 --- a/tcg/tcg-op.h +++ b/tcg/tcg-op.h @@ -759,9 +759,12 @@ static inline void tcg_gen_exit_tb(uintptr_t val) * * See tcg/README for more info about this TCG operation. * - * NOTE: Direct jumps with goto_tb are only safe within the pages this TB - * resides in because we don't take care of direct jumps when address mapping - * changes, e.g. in tlb_flush(). + * NOTE: In softmmu emulation, direct jumps with goto_tb are only safe within + * the pages this TB resides in because we don't take care of direct jumps when + * address mapping changes, e.g. in tlb_flush(). In user mode, there's only a + * static address translation, so the destination address is always valid, TBs + * are always invalidated properly, and direct jumps are reset when mapping + * changes. */ void tcg_gen_goto_tb(unsigned idx); |