Help with hard versus soft float on PPC
dufault at hda.com
Fri Nov 20 12:01:40 UTC 2009
On Nov 20, 2009, at 6:06 , Till Straumann wrote:
> Again, that all was about classic PPC but I strongly
> recommend to take these warnings seriously and
> not try to mix incompatible compiler flags.
This was my fault, through a mixup I'd built some of the libraries for the 7455 (specifically the MVME5500), and I am taking the warnings seriously which is why I asked. I was going to follow up later today.
I learned a few things from this, though, including a quirk in our interrupt handling:
1. Compiling with -mfloat-gprs=single -mspe leaves the object tagged as software floating point, and that's why I started getting the warning with the 7455 hardware floating point and wasn't getting it before (or now). Does that mean it is OK to mix -float-gprs=single -mspe with software floating point? I'm not 100% sure but I think so.
2. It is not true when the e200Z6 reference manual says about IVOR9 "Auxiliary Processor Unavailable Interrupt" that "The e200z6 does not use this interrupt". When you execute the 7455 hardware floating point instruction it does take that interrupt.
3. In C_exception_Handler() we check "if (excPtr->_EXC_number == ASM_DEC_VECTOR) recoverable = 1;" and continue. However, ASM_DEC_VECTOR == 0x09 == "Auxiliary Processor Unavailable" on the MPC55xx, so we take that exception forever.
More information about the users