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