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: [RFC]: MD_FALLBACK_FRAME_STATE_FOR macro for darwin PPC


David Daney writes:
 > Andreas Tobler wrote:
 > 
 > > David Daney wrote:
 > >
 > >
 > >> I know next to nothing about PPC ABIs, but are any of these floating 
 > >> point registers?
 > >
 > >
 > > There are, yes.
 > >
 > >> Are there any call saved FP registers in this ABI? and if so are you 
 > >> restoring them.  Although I don't think that the unwinder uses 
 > >> floating point, it seems that restoring call saved FP registers is a 
 > >> good idea if you are not already doing it.
 > >
 > >
 > > Well, here I expect the advise from the experts, I have floats around 
 > > and I may try to restore them.
 > >
 > > But, I need some guidance here.
 > 
 > When I did the MD_FALLBACK_FRAME_STATE_FOR for mips/linux I did not 
 > handle floating point either as the problem did not occur to me until 
 > after I checked in the code.
 > 
 > However after thinking about it and posting:
 > 
 > http://gcc.gnu.org/ml/gcc/2003-10/msg00972.html
 > 
 > I learned that this is a real issue.
 > 
 > I may be about ready to do some more mips/linux work soon and may 
 > revisit MD_FALLBACK_FRAME_STATE_FOR.  Because in its current state it 
 > seems to be incomplete.

You only need to restore what has been saved.  Looking at
/usr/src/linux-2.4/arch/mips/kernel/signal.c, it seems that there is a
call to save_fp_context().  However, this is only executed if
(current->used_math) is set; you mustn't restore any fp registers if
the process hasn't saved the fp state.

There is a field called sc_used_math in the sigcontext struct.  I
think this tells you what you need to know.  But I am not a kernel
hacker...

Andrew.


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