 84f3fb7a2a
			
		
	
	
	84f3fb7a2a
	
	
	
		
			
			The traditional 68000 processors and the newer reduced instruction set ColdFire processors do not support the 32*32->64 multiply or the 64/32->32 divide instructions. This is not a difference based on the presence of a hardware MMU or not. Create a new config symbol to mark that a CPU type doesn't support the longer multiply/divide instructions. Use this then as a basis for using the fast 64bit based divide (in div64.h) and for linking in the extra libgcc functions that may be required (mulsi3, divsi3, etc). Signed-off-by: Greg Ungerer <gerg@uclinux.org> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <linux/module.h>
 | |
| 
 | |
| asmlinkage long long __ashldi3 (long long, int);
 | |
| asmlinkage long long __ashrdi3 (long long, int);
 | |
| asmlinkage long long __lshrdi3 (long long, int);
 | |
| asmlinkage long long __muldi3 (long long, long long);
 | |
| 
 | |
| /* The following are special because they're not called
 | |
|    explicitly (the C compiler generates them).  Fortunately,
 | |
|    their interface isn't gonna change any time soon now, so
 | |
|    it's OK to leave it out of version control.  */
 | |
| EXPORT_SYMBOL(__ashldi3);
 | |
| EXPORT_SYMBOL(__ashrdi3);
 | |
| EXPORT_SYMBOL(__lshrdi3);
 | |
| EXPORT_SYMBOL(__muldi3);
 | |
| 
 | |
| #if defined(CONFIG_CPU_HAS_NO_MULDIV64)
 | |
| /*
 | |
|  * Simpler 68k and ColdFire parts also need a few other gcc functions.
 | |
|  */
 | |
| extern long long __divsi3(long long, long long);
 | |
| extern long long __modsi3(long long, long long);
 | |
| extern long long __mulsi3(long long, long long);
 | |
| extern long long __udivsi3(long long, long long);
 | |
| extern long long __umodsi3(long long, long long);
 | |
| 
 | |
| EXPORT_SYMBOL(__divsi3);
 | |
| EXPORT_SYMBOL(__modsi3);
 | |
| EXPORT_SYMBOL(__mulsi3);
 | |
| EXPORT_SYMBOL(__udivsi3);
 | |
| EXPORT_SYMBOL(__umodsi3);
 | |
| #endif
 |