#include <linux/module.h> union ull_union { unsigned long long ull; struct { unsigned int high; unsigned int low; } ui; }; int __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; }