소스 검색

microblaze: Add __cmpdi2

Some new kernel configurations require __cmpdi2 function.

Signed-off-by: Michal Simek <monstr@monstr.eu>
Michal Simek 13 년 전
부모
커밋
eecb20720f
2개의 변경된 파일27개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      arch/microblaze/lib/Makefile
  2. 26 0
      arch/microblaze/lib/cmpdi2.c

+ 1 - 0
arch/microblaze/lib/Makefile

@@ -20,6 +20,7 @@ lib-y += uaccess_old.o
 
 
 lib-y += ashldi3.o
 lib-y += ashldi3.o
 lib-y += ashrdi3.o
 lib-y += ashrdi3.o
+lib-y += cmpdi2.o
 lib-y += divsi3.o
 lib-y += divsi3.o
 lib-y += lshrdi3.o
 lib-y += lshrdi3.o
 lib-y += modsi3.o
 lib-y += modsi3.o

+ 26 - 0
arch/microblaze/lib/cmpdi2.c

@@ -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);