From: "Andreas Färber" <afaerber@suse.de>
To: Alexander Graf <agraf@suse.de>
Cc: Julio Guerra <guerr@julio.in>,
qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Fix missing TRACE exception
Date: Fri, 23 Nov 2012 17:35:38 +0100 [thread overview]
Message-ID: <50AFA5DA.7010608@suse.de> (raw)
In-Reply-To: <BD4DFF1F-646D-4335-A7EA-16E5716FCF22@suse.de>
Am 23.11.2012 17:06, schrieb Alexander Graf:
>
> On 19.10.2012, at 12:17, Julio Guerra wrote:
>
>> This patch fixes bug 1031698 :
>> https://bugs.launchpad.net/qemu/+bug/1031698
>>
>> If we look at the (truncated) translation of the conditional branch
>> instruction in the test submitted in the bug post, the call to the
>> exception helper is missing in the "bne-false" chunk of translated
>> code :
>>
>> IN:
>> bne- 0x1800278
>>
>> OUT:
>> 0xb544236d: jne 0xb5442396
>>
>> 0xb5442373: mov %ebp,(%esp)
>> 0xb5442376: mov $0x44,%ebx
>> 0xb544237b: mov %ebx,0x4(%esp)
>> 0xb544237f: mov $0x1800278,%ebx
>> 0xb5442384: mov %ebx,0x25c(%ebp)
>> 0xb544238a: call 0x827475a
>> ^^^^^^^^^^^^^^^^^^
>> # OK : call the exception helper function
>>
>> 0xb5442396: mov %ebp,(%esp)
>> 0xb5442399: mov $0x44,%ebx
>> 0xb544239e: mov %ebx,0x4(%esp)
>> 0xb54423a2: mov $0x1800270,%ebx
>> 0xb54423a7: mov %ebx,0x25c(%ebp)
>> # KO : missing "call 0x827475a"
>>
>>
>> Indeed, gen_exception(ctx, excp) called by gen_goto_tb (called by
>> gen_bcond) changes ctx->exception's value to excp's :
>>
>> gen_bcond()
>> {
>> gen_goto_tb(ctx, 0, ctx->nip + li - 4);
>> /* ctx->exception value is POWERPC_EXCP_BRANCH */
>>
>> gen_goto_tb(ctx, 1, ctx->nip);
>> /* ctx->exception now value is POWERPC_EXCP_TRACE */
>> }
>>
>>
>> Making the following gen_goto_tb()'s test false during the second call :
>>
>> if ((ctx->singlestep_enabled &
>> (CPU_BRANCH_STEP | CPU_SINGLE_STEP)) &&
>> ctx->exception == POWERPC_EXCP_BRANCH /* false...*/) {
>> target_ulong tmp = ctx->nip;
>> ctx->nip = dest;
>> /* ... and this is the missing call */
>> gen_exception(ctx, POWERPC_EXCP_TRACE);
>> ctx->nip = tmp;
>> }
>>
>> So the patch simply adds the missing matching case, fixing our problem.
>>
>> Signed-off-by: Julio Guerra <guerr@julio.in>
>
> Thanks, applied to ppc-next :)
Please don't forget to add the missing "target-ppc: ". :)
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
prev parent reply other threads:[~2012-11-23 16:35 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-19 10:17 [Qemu-devel] [PATCH] Fix missing TRACE exception Julio Guerra
2012-11-22 9:26 ` Julio Guerra
2012-11-23 16:06 ` Alexander Graf
2012-11-23 16:35 ` Andreas Färber [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50AFA5DA.7010608@suse.de \
--to=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=guerr@julio.in \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.