Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* RFA: recognize new instructions in rs6000 prologues
@ 2004-03-24 15:11 Jim Blandy
  2004-03-26 14:12 ` Kevin Buettner
  0 siblings, 1 reply; 5+ messages in thread
From: Jim Blandy @ 2004-03-24 15:11 UTC (permalink / raw)
  To: gdb-patches


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;
+         }
        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 */


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-03-29  3:43 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-03-24 15:11 RFA: recognize new instructions in rs6000 prologues Jim Blandy
2004-03-26 14:12 ` Kevin Buettner
2004-03-26 16:56   ` Jim Blandy
2004-03-26 23:39     ` Kevin Buettner
2004-03-29  3:43       ` Jim Blandy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox