1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 2ca0ad83dSJohn David Anglin #include <linux/module.h> 3*438e9230SHelge Deller #include <linux/libgcc.h> 4ca0ad83dSJohn David Anglin 5ca0ad83dSJohn David Anglin union ull_union { 6ca0ad83dSJohn David Anglin unsigned long long ull; 7ca0ad83dSJohn David Anglin struct { 8ca0ad83dSJohn David Anglin unsigned int high; 9ca0ad83dSJohn David Anglin unsigned int low; 10ca0ad83dSJohn David Anglin } ui; 11ca0ad83dSJohn David Anglin }; 12ca0ad83dSJohn David Anglin __ucmpdi2(unsigned long long a,unsigned long long b)13*438e9230SHelge Dellerword_type __ucmpdi2(unsigned long long a, unsigned long long b) 14ca0ad83dSJohn David Anglin { 15ca0ad83dSJohn David Anglin union ull_union au = {.ull = a}; 16ca0ad83dSJohn David Anglin union ull_union bu = {.ull = b}; 17ca0ad83dSJohn David Anglin 18ca0ad83dSJohn David Anglin if (au.ui.high < bu.ui.high) 19ca0ad83dSJohn David Anglin return 0; 20ca0ad83dSJohn David Anglin else if (au.ui.high > bu.ui.high) 21ca0ad83dSJohn David Anglin return 2; 22ca0ad83dSJohn David Anglin if (au.ui.low < bu.ui.low) 23ca0ad83dSJohn David Anglin return 0; 24ca0ad83dSJohn David Anglin else if (au.ui.low > bu.ui.low) 25ca0ad83dSJohn David Anglin return 2; 26ca0ad83dSJohn David Anglin return 1; 27ca0ad83dSJohn David Anglin } 28