http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54602



--- Comment #6 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-10-11 13:48:04 
UTC ---

(In reply to comment #5)

> (In reply to comment #4)

> > 

> > I don't know the history about it.  I can only imagine that some

> > system could assume some banked regs will be not clobbered with

> > their exception handler and will be used like as normal registers.

> > A new -m option which controls the behavior of which default

> > is not to save/restore the banked regs?

> 

> Oh well, why not ;)

> But first I'd like to think this through.  I'll open a new PR for it later.



Turns out, there's already something there: 'nosave_low_regs' function

attribute, which is documented only in the source code:



sh.c (line ~9300):

   nosave_low_regs - don't save r0..r7 in an interrupt handler.

     This is useful on the SH3 and upwards,

     which has a separate set of low regs for User and Supervisor modes.

     This should only be used for the lowest level of interrupts.  Higher

levels

     of interrupts must save the registers in case they themselves are

     interrupted.



I will improve the documentation regarding this.

Reply via email to