Add a __ucmpdi2 implementation
PATCH 1/1 Add a __ucmpdi2 implementation
Hello All,
this patch adds a __ucmpdi2 implementation, recent GCC SVN versions generate calls to it from some of the FPU emulator functions.
Tested by building and booting a little endian qemu MIPS kernel.
Thiemo
Signed-off-by Thiemo Seufer <[email protected]>
arch/mips/lib/Makefile +1 -1
@@ -9,4 +9,4 @@ obj-y += iomap.o obj-$(CONFIG_PCI) += iomap-pci.o # libgcc-style stuff needed in the kernel -lib-y += ashldi3.o ashrdi3.o lshrdi3.o +lib-y += ashldi3.o ashrdi3.o lshrdi3.o ucmpdi2.o
arch/mips/lib/ucmpdi2.c new file +19 -0
@@ -0,0 +1,19 @@ +#include <linux/module.h> + +#include "libgcc.h" + +word_type __ucmpdi2 (unsigned long a,unsigned long b) +{ +const DWunion au = {.ll = a}; +const DWunion bu = {.ll = b}; + +if ((unsigned int ) au.s.high < (unsigned int ) bu.s.high) +return 0 ; +else if ((unsigned int ) au.s.high > (unsigned int ) bu.s.high) +return 2 ; +if ((unsigned int ) au.s.low < (unsigned int ) bu.s.low) +return 0 ; +else if ((unsigned int ) au.s.low > (unsigned int ) bu.s.low) +return 2 ; +return 1 ; +}