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;
							 | 
						||
| 
								 | 
							
								}
							 |