58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* More subroutines needed by GCC output code on some machines.  */
 | 
						|
/* Compile this one with gcc.  */
 | 
						|
/* Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 | 
						|
   2000, 2001  Free Software Foundation, Inc.
 | 
						|
 | 
						|
This file is part of GNU CC.
 | 
						|
 | 
						|
GNU CC is free software; you can redistribute it and/or modify
 | 
						|
it under the terms of the GNU General Public Licence as published by
 | 
						|
the Free Software Foundation; either version 2, or (at your option)
 | 
						|
any later version.
 | 
						|
 | 
						|
In addition to the permissions in the GNU General Public Licence, the
 | 
						|
Free Software Foundation gives you unlimited permission to link the
 | 
						|
compiled version of this file into combinations with other programs,
 | 
						|
and to distribute those combinations without any restriction coming
 | 
						|
from the use of this file.  (The General Public Licence restrictions
 | 
						|
do apply in other respects; for example, they cover modification of
 | 
						|
the file, and distribution when not linked into a combine
 | 
						|
executable.)
 | 
						|
 | 
						|
GNU CC is distributed in the hope that it will be useful,
 | 
						|
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
GNU General Public Licence for more details.
 | 
						|
 | 
						|
You should have received a copy of the GNU General Public Licence
 | 
						|
along with GNU CC; see the file COPYING.  If not, write to
 | 
						|
the Free Software Foundation, 59 Temple Place - Suite 330,
 | 
						|
Boston, MA 02111-1307, USA.  */
 | 
						|
 | 
						|
/* It is incorrect to include config.h here, because this file is being
 | 
						|
   compiled for the target, and hence definitions concerning only the host
 | 
						|
   do not apply.  */
 | 
						|
 | 
						|
#include <linux/types.h>
 | 
						|
 | 
						|
union DWunion {
 | 
						|
	s64 ll;
 | 
						|
	struct {
 | 
						|
		s32 low;
 | 
						|
		s32 high;
 | 
						|
	} s;
 | 
						|
};
 | 
						|
 | 
						|
s64 __negdi2(s64 u)
 | 
						|
{
 | 
						|
	union DWunion w;
 | 
						|
	union DWunion uu;
 | 
						|
 | 
						|
	uu.ll = u;
 | 
						|
 | 
						|
	w.s.low = -uu.s.low;
 | 
						|
	w.s.high = -uu.s.high - ((u32) w.s.low > 0);
 | 
						|
 | 
						|
	return w.ll;
 | 
						|
}
 |