[MIPS] Add __cmpdi2

Certain 32-bit kernel configurations seem to be able to cause references,
this was observed with gcc 4.1.2.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

+28 -1
+1 -1
arch/mips/lib/Makefile
··· 28 28 obj-$(CONFIG_CPU_VR41XX) += dump_tlb.o 29 29 30 30 # libgcc-style stuff needed in the kernel 31 - obj-y += ashldi3.o ashrdi3.o lshrdi3.o ucmpdi2.o 31 + obj-y += ashldi3.o ashrdi3.o cmpdi2.o lshrdi3.o ucmpdi2.o
+27
arch/mips/lib/cmpdi2.c
··· 1 + #include <linux/module.h> 2 + 3 + #include "libgcc.h" 4 + 5 + word_type __cmpdi2(long long a, long long b) 6 + { 7 + const DWunion au = { 8 + .ll = a 9 + }; 10 + const DWunion bu = { 11 + .ll = b 12 + }; 13 + 14 + if (au.s.high < bu.s.high) 15 + return 0; 16 + else if (au.s.high > bu.s.high) 17 + return 2; 18 + 19 + if ((unsigned int) au.s.low < (unsigned int) bu.s.low) 20 + return 0; 21 + else if ((unsigned int) au.s.low > (unsigned int) bu.s.low) 22 + return 2; 23 + 24 + return 1; 25 + } 26 + 27 + EXPORT_SYMBOL(__cmpdi2);