diff options
| -rw-r--r-- | arch/mips/lib/Makefile | 2 | ||||
| -rw-r--r-- | arch/mips/lib/cmpdi2.c | 27 |
2 files changed, 28 insertions, 1 deletions
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile index 91ed1eb33102..8810dfb915dd 100644 --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile | |||
| @@ -28,4 +28,4 @@ obj-$(CONFIG_CPU_TX49XX) += dump_tlb.o | |||
| 28 | obj-$(CONFIG_CPU_VR41XX) += dump_tlb.o | 28 | obj-$(CONFIG_CPU_VR41XX) += dump_tlb.o |
| 29 | 29 | ||
| 30 | # libgcc-style stuff needed in the kernel | 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 |
diff --git a/arch/mips/lib/cmpdi2.c b/arch/mips/lib/cmpdi2.c new file mode 100644 index 000000000000..8c1306437ed1 --- /dev/null +++ b/arch/mips/lib/cmpdi2.c | |||
| @@ -0,0 +1,27 @@ | |||
| 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); | ||
