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.
