ARM interrupt epilogue generation

Nick Clifton nickc@redhat.com
Thu Jan 30 14:15:00 GMT 2003


Hi Guys,

  I am applying the patch below to fix a small bug in the ARM port's
  epilogue generation for interrupt handlers with stack frames.  The
  saved IP register was being popped off the stack, but the stack
  pointer was not been incremented.

Cheers
        Nick

2003-01-30  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_output_epilogue): Update stack pointer
	when popping saved IP register off the stack.

Index: gcc/config/arm/arm.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.c,v
retrieving revision 1.252
diff -c -3 -p -w -r1.252 arm.c
*** gcc/config/arm/arm.c	29 Jan 2003 16:50:34 -0000	1.252
--- gcc/config/arm/arm.c	30 Jan 2003 14:06:06 -0000
*************** arm_output_epilogue (really_return)
*** 8209,8215 ****
        if (IS_INTERRUPT (func_type))
  	/* Interrupt handlers will have pushed the
  	   IP onto the stack, so restore it now.  */
! 	print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, 1 << IP_REGNUM);
      }
    else
      {
--- 8209,8215 ----
        if (IS_INTERRUPT (func_type))
  	/* Interrupt handlers will have pushed the
  	   IP onto the stack, so restore it now.  */
! 	print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, 1 << IP_REGNUM);
      }
    else
      {



More information about the Gcc-patches mailing list