This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH,rs6000] fix interrupt safety issue on E500 targets


On Wed, Oct 03, 2007 at 08:45:24AM -0700, Andrew Pinski wrote:
> On 10/3/07, Andrew Pinski <pinskia@gmail.com> wrote:
> > On 10/3/07, Nathan Froyd <froydnj@codesourcery.com> wrote:
> > > Tested on powerpc-none-linux-gnuspe with no regressions.  OK to commit?
> >
> > I think this is needed for all sysv based abis and not just SPE.
> 
> And I think this is related to PR30282.

Any objection to simply calling rs6000_emit_stack_tie unconditionally
before the stack adjustment, then?  (Patch below--I don't know what
AIX/Darwin requires here, but I can't imagine it would hurt performance
that much.)

-Nathan

Index: rs6000.c
===================================================================
--- rs6000.c	(revision 128981)
+++ rs6000.c	(working copy)
@@ -16329,13 +16329,14 @@ rs6000_emit_epilogue (int sibcall)
 	    }
     }
 
+  /* This blockage is needed so that sched doesn't decide to move
+     the sp change before the register restores.  */
+  rs6000_emit_stack_tie ();
+    
   /* If this is V.4, unwind the stack pointer after all of the loads
      have been done.  */
   if (frame_reg_rtx != sp_reg_rtx)
     {
-      /* This blockage is needed so that sched doesn't decide to move
-	 the sp change before the register restores.  */
-      rs6000_emit_stack_tie ();
       if (TARGET_SPE_ABI
           && info->spe_64bit_regs_used != 0
           && info->first_gp_reg_save != 32)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]