Message ID | 20121202161653.4416.21917.malonedeb@wampee.canonical.com |
---|---|
State | New |
Headers | show |
> CPU_LOG_EXEC (and CPU_LOG_TB_CPU) does not work (i.e. not of each tb
dumped) because tb links is occur.
This is true, but I'm afraid I don't think this patch is the right
approach. Enabling debug tracing shouldn't cause us to change behaviour,
so we can't just disable TB linking when doing debug logging.
** Description changed: Hello! CPU_LOG_EXEC (and CPU_LOG_TB_CPU) does not work (i.e. not of each tb dumped) because tb links is occur. Patch: diff --git a/cpu-exec.c b/cpu-exec.c index 904ee73..509d50c 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -582,7 +582,11 @@ int cpu_exec(CPUArchState *env) - /* see if we can patch the calling TB. When the TB - spans two pages, we cannot safely do a direct - jump. */ + /* 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 +#ifdef CONFIG_DEBUG_EXEC + && !qemu_loglevel_mask(CPU_LOG_EXEC | CPU_LOG_TB_CPU) +#endif + ) { - tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb); - } - spin_unlock(&tb_lock); + tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb); + } + spin_unlock(&tb_lock);
** Changed in: qemu Assignee: (unassigned) => Daniil Troshkov (troshkovdanil) ** Changed in: qemu Status: New => Invalid
diff --git a/cpu-exec.c b/cpu-exec.c index 904ee73..509d50c 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -582,7 +582,11 @@ int cpu_exec(CPUArchState *env) /* 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 +#ifdef CONFIG_DEBUG_EXEC + && !qemu_loglevel_mask(CPU_LOG_EXEC | CPU_LOG_TB_CPU) +#endif + ) { tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb); } spin_unlock(&tb_lock);