[patch][0/5] powerpc: Add support to fully comply with IEEE-754 standard

Kumar Gala galak at kernel.crashing.org
Wed Feb 7 18:57:12 EST 2007


On Feb 7, 2007, at 1:21 AM, Zhu Ebony-r57400 wrote:

>
>
>> -----Original Message-----
>> From: Kumar Gala [mailto:galak at kernel.crashing.org]
>> Sent: Wednesday, February 07, 2007 3:12 PM
>> To: Zhu Ebony-r57400
>> Cc: paulus at samba.org; linuxppc-dev at ozlabs.org
>> Subject: Re: [patch][0/5] powerpc: Add support to fully
>> comply with IEEE-754 standard
>>
>>
>> On Feb 6, 2007, at 11:52 PM, Zhu Ebony-r57400 wrote:
>>
>>>>>> This snippet of code breaks it from math-emu/sfp-machine.h
>>>>>>
>>>>>>>> +#ifdef CONFIG_SPE
>>>>>>>> +#define __FPU_FPSCR	(current->thread.spefscr)
>>>>>>>> +#else
>>>>>>>>  #define __FPU_FPSCR	(current->thread.fpscr.val)
>>>>>>>> +#endif
>>>>>>
>>>>>> By doing this if I want 'classic FP' emulation as well
>> as the IEEE
>>>>>> fixup my fpscr for classic emu will not be updated properly.
>>>>>
>>>>> Logically, user can choose "SPE Support" and "Math
>>>> emulation" at the
>>>>> same time on menuconfig. But from my understanding, it is not
>>>>> necessary to select math-emu on a SPE available system,
>>>> since SPE can
>>>>> do math operation.
>>>>
>>>> This is not true.  If I want to run a "classic" PPC binary
>> with FP I
>>>> need "Math emulation" and if I want to run an SPE one I
>> enable "SPE
>>>> Support".  I could want to run both of these types of
>> binaries on the
>>>> same system at the same time.
>>>
>>> If this is the case, maybe we need a separate macro like
>>> #define __SPE_SPEFSCR	(current->thread.spefscr)
>>> But if we do this, how does the kernel know if the emulation is for
>>> "classic" PPC binary with FP or an SPE one, thus corresponding
>>> registers(fpscr or spefscr) being updated?
>>
>> It's based on what instruction you are trying to emulate.
>>
> For example, the FP_ROUNDMODE now defined by __FPU_FPSCR is
> widely used in existing code. If the kernel doesn't know the emulation
> is for
> classic PPC or SPE fixup, then it doesn't know where to get the  
> correct
> rounding mode, from fpscr or spefscr? This has confused me.

Yes, this is a good point, I guess in truth the two modes are  
mutually exclusive.

Sorry for not figuring that out sooner.  (uugh, all the stuff to make  
IEEE emulation work properly on SPE is a pain :)

- k



More information about the Linuxppc-dev mailing list