On Mon, May 14, 2012 at 6:15 AM, Matt Turner <[email protected]> wrote:
> On Fri, Oct 28, 2011 at 3:19 PM, Mark H Weaver <[email protected]> wrote:
>> Hello all,
>>
>> Apologies if this has already been addressed, as I am new to this
>> mailing list and have not had time to search the archives carefully.
>>
>> I have found and fixed the underlying cause of the illegal instruction
>> (SIGILL) signals sent to processes that execute some Loongson-specific
>> floating-point operations (e.g. an madd/msub/nmadd/nmsub instruction
>> with a quiet NaN or denormalized floating-point input value).
>>
>> MIPS and Loongson processors only implement the common cases of
>> floating-point arithmetic operations in hardware.  In unusual cases, the
>> FPU signals an "Unimplemented instruction exception" and relies upon the
>> OS kernel to emulate the instruction in software.
>>
>> Linux includes a MIPS floating-point emulator to handle these cases, but
>> its emulator does not include support for the Loongson variants of
>> madd/msub/nmadd/nmsub.  It also does not include support for the
>> Loongson operations on "paired-single" floating-point format (vectors of
>> two single-precision values).
>>
>> The following patches add support for these instructions to
>> arch/mips/math-emu.  I fixed some other deficiencies in that code as
>> well, and those fixes are included in separate patches before the
>> Loongson2f patch.
>>
>> Note that during testing, I found a mistake in the documentation for the
>> Loongson 2F.  Page 95 of Loongson2FUserGuide.pdf claims that the
>> paired-single floating-point instructions should use a format (fmt)
>> field of 11.  However, the processor itself does not seem to recognize
>> instructions with (fmt=11).  It seems to be looking for (fmt=22).
>> That's the case for the Loongson2F in my Yeeloong anyway (which
>> /proc/cpuinfo identifies as "ICT Loongson-2 V0.3 FPU  V0.1").
>>
>> I also found that the GNU assembler generates instructions with (fmt=22)
>> for most (but not all) of the paired-single floating-point instructions.
>> The only exceptions I've found are the Loongson-specific madd.ps,
>> msub.ps, nmadd.ps, and nmsub.ps instructions, for which GNU as generates
>> (fmt=11), although that does not work on my Loongson2F.  Therefore, I
>> have also included a patch to GNU binutils (which will also apply to
>> GDB) to use fmt=22 for those instructions on Loongson2F.
>>
>> I should note that the documentation for Loongson 2E (not 2F) also
>> claims that the format field for paired-single instructions should use
>> fmt=11.  I don't know whether this is a mistake or not, since I do not
>> have access to a Loongson 2E processor with which to test.
>>
>> Finally, two apologies are in order:
>>
>> * Ideally I should have added support for the entire set of MIPS 5
>>  floating-point operations, but I did not have time to do that job, nor
>>  do I have a MIPS 5 processor with which to test.  Therefore, these
>>  patches address only the Loongson 2F.
>>
>> * I must admit that I have not tested these patches against the
>>  linux-loongson-community kernel.  However, I have tested them against
>>  the linux--2.6.39.1-libre-lemote kernel maintained by Alexandre Oliva,
>>  and there is no significant difference in arch/mips/math-emu between
>>  those two trees.
>>
>> Comments and suggestions solicited.
>>
>>      Mark
>
> Are you going to attempt to get these patches upstream any time soon?

Perhaps nobody is working on this patchset currently ...

>
> If not, I'll do it. Assuming you don't have copyright assignment for
> binutils and gdb,

I have failed for several times to receive the mail from USA ;-(

> can you please declare the final patch to be public
> domain?

CCed to Mark H Weaver.

BR,
Wu Zhangjin

>
> Thanks,
> Matt
>
> --
> You received this message because you are subscribed to the Google Groups 
> "loongson-dev" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/loongson-dev?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"loongson-dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/loongson-dev?hl=en.

Reply via email to