Explorar el Código

[MIPS] Add __ucmpdi2 implementation

Recent GCC SVN versions may generate calls to __ucmpdi2.

Signed-off-by: Thiemo Seufer <ths@networkno.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Thiemo Seufer hace 18 años
padre
commit
df6b106bf0
Se han modificado 2 ficheros con 20 adiciones y 1 borrados
  1. 1 1
      arch/mips/lib/Makefile
  2. 19 0
      arch/mips/lib/ucmpdi2.c

+ 1 - 1
arch/mips/lib/Makefile

@@ -9,4 +9,4 @@ obj-y			+= iomap.o
 obj-$(CONFIG_PCI)	+= iomap-pci.o
 obj-$(CONFIG_PCI)	+= iomap-pci.o
 
 
 # libgcc-style stuff needed in the kernel
 # 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

+ 19 - 0
arch/mips/lib/ucmpdi2.c

@@ -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;
+}