xref: /openbmc/linux/lib/ucmpdi2.c (revision a9a08845)
1  /*
2   * This program is free software; you can redistribute it and/or modify
3   * it under the terms of the GNU General Public License as published by
4   * the Free Software Foundation; either version 2 of the License, or
5   * (at your option) any later version.
6   *
7   * This program is distributed in the hope that it will be useful,
8   * but WITHOUT ANY WARRANTY; without even the implied warranty of
9   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10   * GNU General Public License for more details.
11   *
12   * You should have received a copy of the GNU General Public License
13   * along with this program; if not, see the file COPYING, or write
14   * to the Free Software Foundation, Inc.
15   */
16  
17  #include <linux/module.h>
18  #include <linux/libgcc.h>
19  
20  word_type __ucmpdi2(unsigned long long a, unsigned long long b)
21  {
22  	const DWunion au = {.ll = a};
23  	const DWunion bu = {.ll = b};
24  
25  	if ((unsigned int) au.s.high < (unsigned int) bu.s.high)
26  		return 0;
27  	else if ((unsigned int) au.s.high > (unsigned int) bu.s.high)
28  		return 2;
29  	if ((unsigned int) au.s.low < (unsigned int) bu.s.low)
30  		return 0;
31  	else if ((unsigned int) au.s.low > (unsigned int) bu.s.low)
32  		return 2;
33  	return 1;
34  }
35  EXPORT_SYMBOL(__ucmpdi2);
36