| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*	 | 
					
						
							| 
									
										
										
										
											2007-07-06 10:58:04 +09:00
										 |  |  |  * unsigned long __xdiv64_32(unsigned long long n, unsigned long d); 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/linkage.h> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .text | 
					
						
							|  |  |  | ENTRY(__xdiv64_32) | 
					
						
							| 
									
										
										
										
											2007-07-06 10:58:04 +09:00
										 |  |  | #ifdef CONFIG_CPU_LITTLE_ENDIAN | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	mov	r4, r0 | 
					
						
							|  |  |  | 	mov	r5, r1 | 
					
						
							|  |  |  | #else | 
					
						
							|  |  |  | 	mov	r4, r1 | 
					
						
							|  |  |  | 	mov	r5, r0 | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | 	cmp/hs	r6, r1 | 
					
						
							|  |  |  | 	bf.s	1f | 
					
						
							|  |  |  | 	 mov	#0, r2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	mov	r1, r2 | 
					
						
							|  |  |  | 	mov	#0, r3 | 
					
						
							|  |  |  | 	div0u | 
					
						
							|  |  |  | 	.rept	32
 | 
					
						
							|  |  |  | 	rotcl	r2 | 
					
						
							|  |  |  | 	div1	r6, r3 | 
					
						
							|  |  |  | 	.endr | 
					
						
							|  |  |  | 	rotcl	r2 | 
					
						
							|  |  |  | 	mul.l	r6, r2 | 
					
						
							|  |  |  | 	sts	macl, r3 | 
					
						
							|  |  |  | 	sub	r3, r1 | 
					
						
							|  |  |  | 1: | 
					
						
							|  |  |  | 	div0u | 
					
						
							|  |  |  | 	.rept	32
 | 
					
						
							|  |  |  | 	rotcl	r0 | 
					
						
							|  |  |  | 	div1	r6, r1 | 
					
						
							|  |  |  | 	.endr | 
					
						
							| 
									
										
										
										
											2007-07-06 10:58:04 +09:00
										 |  |  | #ifdef CONFIG_CPU_LITTLE_ENDIAN | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	mov	r2, r1 | 
					
						
							|  |  |  | 	rts | 
					
						
							|  |  |  | 	 rotcl	r0 | 
					
						
							|  |  |  | #else | 
					
						
							|  |  |  | 	rotcl	r0 | 
					
						
							|  |  |  | 	mov	r0, r1 | 
					
						
							|  |  |  | 	rts | 
					
						
							|  |  |  | 	 mov	r2, r0 | 
					
						
							|  |  |  | #endif |