On Wed, Oct 21, 2015 at 11:42:59AM -1000, Richard Henderson wrote:
> Respect it to avoid linking TBs together.
>
Reviewed-by: Edgar E. Iglesias
> Reviewed-by: Peter Maydell
> Signed-off-by: Richard Henderson
> ---
> cpu-exec.c | 3 ++-
> include/qemu/log.h | 1 +
> qemu-log.c | 3 +++
> 3 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/cpu-exec.c b/cpu-exec.c
> index 8fd56a6..7eef083 100644
> --- a/cpu-exec.c
> +++ b/cpu-exec.c
> @@ -477,7 +477,8 @@ int cpu_exec(CPUState *cpu)
> /* see if we can patch the calling TB. When the TB
> spans two pages, we cannot safely do a direct
> jump. */
> -if (next_tb != 0 && tb->page_addr[1] == -1) {
> +if (next_tb != 0 && tb->page_addr[1] == -1
> +&& !qemu_loglevel_mask(CPU_LOG_TB_NOCHAIN)) {
> tb_add_jump((TranslationBlock *)(next_tb &
> ~TB_EXIT_MASK),
> next_tb & TB_EXIT_MASK, tb);
> }
> diff --git a/include/qemu/log.h b/include/qemu/log.h
> index f880e66..7de4500 100644
> --- a/include/qemu/log.h
> +++ b/include/qemu/log.h
> @@ -41,6 +41,7 @@ static inline bool qemu_log_enabled(void)
> #define LOG_UNIMP (1 << 10)
> #define LOG_GUEST_ERROR(1 << 11)
> #define CPU_LOG_MMU(1 << 12)
> +#define CPU_LOG_TB_NOCHAIN (1 << 13)
>
> /* Returns true if a bit is set in the current loglevel mask
> */
> diff --git a/qemu-log.c b/qemu-log.c
> index 13f3813..efd07c8 100644
> --- a/qemu-log.c
> +++ b/qemu-log.c
> @@ -119,6 +119,9 @@ const QEMULogItem qemu_log_items[] = {
> { LOG_GUEST_ERROR, "guest_errors",
>"log when the guest OS does something invalid (eg accessing a\n"
>"non-existent register)" },
> +{ CPU_LOG_TB_NOCHAIN, "nochain",
> + "do not chain compiled TBs so that \"exec\" and \"cpu\" show\n"
> + "complete traces" },
> { 0, NULL, NULL },
> };
>
> --
> 2.4.3
>
>