diff options
Diffstat (limited to 'arch/s390/lib/ucmpdi2.c')
| -rw-r--r-- | arch/s390/lib/ucmpdi2.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/s390/lib/ucmpdi2.c b/arch/s390/lib/ucmpdi2.c new file mode 100644 index 000000000000..3e05ff532582 --- /dev/null +++ b/arch/s390/lib/ucmpdi2.c | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | #include <linux/module.h> | ||
| 2 | |||
| 3 | union ull_union { | ||
| 4 | unsigned long long ull; | ||
| 5 | struct { | ||
| 6 | unsigned int high; | ||
| 7 | unsigned int low; | ||
| 8 | } ui; | ||
| 9 | }; | ||
| 10 | |||
| 11 | int __ucmpdi2(unsigned long long a, unsigned long long b) | ||
| 12 | { | ||
| 13 | union ull_union au = {.ull = a}; | ||
| 14 | union ull_union bu = {.ull = b}; | ||
| 15 | |||
| 16 | if (au.ui.high < bu.ui.high) | ||
| 17 | return 0; | ||
| 18 | else if (au.ui.high > bu.ui.high) | ||
| 19 | return 2; | ||
| 20 | if (au.ui.low < bu.ui.low) | ||
| 21 | return 0; | ||
| 22 | else if (au.ui.low > bu.ui.low) | ||
| 23 | return 2; | ||
| 24 | return 1; | ||
| 25 | } | ||
| 26 | EXPORT_SYMBOL(__ucmpdi2); | ||
