From: Kevin Buettner <kevinb@redhat.com>
To: Jim Blandy <jimb@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: RFA: recognize new instructions in rs6000 prologues
Date: Fri, 26 Mar 2004 14:12:00 -0000 [thread overview]
Message-ID: <20040325221648.77308418@saguaro> (raw)
In-Reply-To: <vt2hdwexovn.fsf@zenia.home>
On 24 Mar 2004 10:10:04 -0500
Jim Blandy <jimb@redhat.com> wrote:
>
> These prologues are generated by a not-yet-released compiler, but the
> test suite does catch the problem.
>
> 2004-02-25 Jim Blandy <jimb@redhat.com>
>
> * rs6000-tdep.c (skip_prologue): Recognize moves from argument
> registers to temp register r0 and byte stores as prologue
> instructions.
>
> *** gdb/rs6000-tdep.c.~2~ 2004-02-25 15:14:13.000000000 -0500
> --- gdb/rs6000-tdep.c 2004-02-25 15:15:43.000000000 -0500
> ***************
> *** 772,777 ****
> --- 772,785 ----
>
> /* store parameters in stack */
> }
> + /* Move parameters from argument registers to temporary register. */
> + else if ((op & 0xfc0007fe) == 0x7c000378 && /* mr(.) Rx,Ry */
> + (((op >> 21) & 31) >= 3) && /* R3 >= Ry >= R10 */
> + (((op >> 21) & 31) <= 10) &&
> + (((op >> 16) & 31) == 0)) /* Rx: scratch register r0 */
> + {
> + continue;
> + }
Is this case really needed? I would have thought that the catchall
case at the end would handle this situation. I'm concerned that
adding this case may cause us to overshoot the prologue in some
circumstances. (Of course, there's a danger of doing that anyway...)
> else if ((op & 0xfc1f0003) == 0xf8010000 || /* std rx,NUM(r1) */
> (op & 0xfc1f0000) == 0xd8010000 || /* stfd Rx,NUM(r1) */
> (op & 0xfc1f0000) == 0xfc010000) /* frsp, fp?,NUM(r1) */
> ***************
> *** 781,790 ****
> /* store parameters in stack via frame pointer */
> }
> else if (framep &&
> ! ((op & 0xfc1f0000) == 0x901f0000 || /* st rx,NUM(r1) */
> ! (op & 0xfc1f0000) == 0xd81f0000 || /* stfd Rx,NUM(r1) */
> ! (op & 0xfc1f0000) == 0xfc1f0000))
> ! { /* frsp, fp?,NUM(r1) */
> continue;
>
> /* Set up frame pointer */
> --- 789,799 ----
> /* store parameters in stack via frame pointer */
> }
> else if (framep &&
> ! ((op & 0xfc1f0000) == 0x901f0000 || /* st rx,NUM(r31) */
> ! (op & 0xfc1f0000) == 0x981f0000 || /* stb Rx,NUM(r31) */
> ! (op & 0xfc1f0000) == 0xd81f0000 || /* stfd Rx,NUM(r31) */
> ! (op & 0xfc1f0000) == 0xfc1f0000)) /* frsp, fp?,NUM(r31) */
> ! {
> continue;
>
> /* Set up frame pointer */
This part is okay.
Kevin
next prev parent reply other threads:[~2004-03-26 14:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-24 15:11 Jim Blandy
2004-03-26 14:12 ` Kevin Buettner [this message]
2004-03-26 16:56 ` Jim Blandy
2004-03-26 23:39 ` Kevin Buettner
2004-03-29 3:43 ` Jim Blandy
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=20040325221648.77308418@saguaro \
--to=kevinb@redhat.com \
--cc=gdb-patches@sources.redhat.com \
--cc=jimb@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox