microblaze: Add __cmpdi2
authorMichal Simek <monstr@monstr.eu>
Tue, 29 Nov 2011 12:05:30 +0000 (13:05 +0100)
committerMichal Simek <monstr@monstr.eu>
Thu, 5 Jan 2012 07:22:01 +0000 (08:22 +0100)
Some new kernel configurations require __cmpdi2 function.

Signed-off-by: Michal Simek <monstr@monstr.eu>
arch/microblaze/lib/Makefile
arch/microblaze/lib/cmpdi2.c [new file with mode: 0644]

index c13067b243c3925e486bef404a1ac80aba5ebc6a..844960e8ae189767f96eb5d2e6e79ed2ac3cab2e 100644 (file)
@@ -20,6 +20,7 @@ lib-y += uaccess_old.o
 
 lib-y += ashldi3.o
 lib-y += ashrdi3.o
+lib-y += cmpdi2.o
 lib-y += divsi3.o
 lib-y += lshrdi3.o
 lib-y += modsi3.o
diff --git a/arch/microblaze/lib/cmpdi2.c b/arch/microblaze/lib/cmpdi2.c
new file mode 100644 (file)
index 0000000..a708400
--- /dev/null
@@ -0,0 +1,26 @@
+#include <linux/module.h>
+
+#include "libgcc.h"
+
+word_type __cmpdi2(long long a, long long b)
+{
+       const DWunion au = {
+               .ll = a
+       };
+       const DWunion bu = {
+               .ll = b
+       };
+
+       if (au.s.high < bu.s.high)
+               return 0;
+       else if (au.s.high > 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;
+}
+EXPORT_SYMBOL(__cmpdi2);
This page took 0.026819 seconds and 5 git commands to generate.