diff options
Diffstat (limited to 'arch/parisc/lib/ucmpdi2.c')
-rw-r--r-- | arch/parisc/lib/ucmpdi2.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/parisc/lib/ucmpdi2.c b/arch/parisc/lib/ucmpdi2.c new file mode 100644 index 0000000000..9d8b4dbae2 --- /dev/null +++ b/arch/parisc/lib/ucmpdi2.c @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0 +#include <linux/module.h> +#include <linux/libgcc.h> + +union ull_union { + unsigned long long ull; + struct { + unsigned int high; + unsigned int low; + } ui; +}; + +word_type __ucmpdi2(unsigned long long a, unsigned long long b) +{ + union ull_union au = {.ull = a}; + union ull_union bu = {.ull = b}; + + if (au.ui.high < bu.ui.high) + return 0; + else if (au.ui.high > bu.ui.high) + return 2; + if (au.ui.low < bu.ui.low) + return 0; + else if (au.ui.low > bu.ui.low) + return 2; + return 1; +} |