aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/lib/cmpdi2.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-27 18:06:28 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-27 18:06:28 -0400
commit5a99efeaa5c7139b7d76cbd5fb54fac664ba3da9 (patch)
treef86488005a159beb5e7fc733b3c5ab07fadb5cc2 /arch/sparc/lib/cmpdi2.c
parent28d9aa613daa65b295a099a8433df97de1c56a2f (diff)
parent17a82e932d67e2885d9fa18d4656ff53337b1130 (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: [SPARC32]: Make flush_tlb_kernel_range() an inline function. [SERIAL]: Fix 32-bit warnings in sunzilog.c and sunsu.c [SPARC32]: Kill unused vars and macros from prom/console.c [SPARC32]: Add __cmpdi2() libcall implementation ala. MIPS. [VIDEO]: Do not prom_halt() in cg3 and bw2 device probe. [SUNVDC]: Use slice 0xff on VD_DISK_TYPE_DISK.
Diffstat (limited to 'arch/sparc/lib/cmpdi2.c')
-rw-r--r--arch/sparc/lib/cmpdi2.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/sparc/lib/cmpdi2.c b/arch/sparc/lib/cmpdi2.c
new file mode 100644
index 00000000000..8c1306437ed
--- /dev/null
+++ b/arch/sparc/lib/cmpdi2.c
@@ -0,0 +1,27 @@
1#include <linux/module.h>
2
3#include "libgcc.h"
4
5word_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
27EXPORT_SYMBOL(__cmpdi2);