This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


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: MIPS SF toolchain


Matej Kupljen wrote:
Hi

I think I found the problem.


-------------------------------------------------------------
0002fe80 <__longjmp>:
  2fe80:       c4940038        lwc1    $f20,56(a0)
  2fe84:       c495003c        lwc1    $f21,60(a0)

....


This code is written in sysdeps/mips/setjmp_aux.c in inline assembly.


and
-------------------------------------------------------------
0002ff70 <__sigsetjmp_aux>:
  2ff70:       3c1c0017        lui     gp,0x17
  2ff74:       279cce40        addiu   gp,gp,-12736


This code is written in sysdeps/mips/__longjmp.c in inline assembly.


How to solve this?


Because I am using sf, there is no need to store those
registers, or is it?
Can I just #ifdef this code if compiled for sf?


I do have some patches for glibc to get rid of these in a soft float build. However as Ralf Baechle said in the other message, the kernel FP emulator works and is not that large of an overhead.


The reason I did the glibc patch was that some IDT processor/linux kernel combination I was using was broken WRT the FP emulator. I suppose if you had a lot of code doing setjump (like C++ code with exeception handling that uses setjump/longjump as would be obtained with uClibc) than this would be bad. But since you are using glibc, the tools will be using DWARF exception handling and it is not really an issue.

David Daney.

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


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