Re: [RFC]: MD_FALLBACK_FRAME_STATE_FOR macro for darwin PPC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andrew Haley wrote:

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.


Ralf,

Is this all true?

Perhaps you could shed some light on what really needs to be done in the MIPS/linux case.

Also what should be done in the case of mips 4Kc core where there is only software floating point?

David Daney.







[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux