55 lines
		
	
	
	
		
			673 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			673 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
#
 | 
						|
.global fef8, Fd0
 | 
						|
 | 
						|
fef8:
 | 
						|
	dec	4,%l0
 | 
						|
	ld	[%l0+4], %f0
 | 
						|
	ld	[%l0+8], %f1
 | 
						|
	set	Fd0, %o0
 | 
						|
	ldd	[%o0], %f8
 | 
						|
	fcmpd	%f0, %f8
 | 
						|
	nop
 | 
						|
	fbne	1f
 | 
						|
	nop
 | 
						|
	st	%g0,[%l0]
 | 
						|
	retl
 | 
						|
	nop
 | 
						|
1:	
 | 
						|
#ifdef __solaris
 | 
						|
	fdtoq	%f0,%f0
 | 
						|
#else
 | 
						|
	fdtox	%f0,%f0
 | 
						|
#endif
 | 
						|
	st	%f0,[%l0+4]
 | 
						|
	ld	[%l0+4],%o0
 | 
						|
	srl	%o0,16,%o0
 | 
						|
	set	0x7fff,%o2
 | 
						|
	and	%o0,%o2,%o1
 | 
						|
	set	16382,%o3
 | 
						|
	sub	%o1,%o3,%o1
 | 
						|
	set	1024,%o2
 | 
						|
	cmp	%o1,%o2
 | 
						|
	bl	1f
 | 
						|
	nop
 | 
						|
	mov	%o2,%o1
 | 
						|
1:
 | 
						|
	st	%o1,[%l0]
 | 
						|
	set	0x8000,%o2
 | 
						|
	and	%o0,%o2,%o0
 | 
						|
	or	%o0,%o3,%o0
 | 
						|
	sll	%o0,16,%o0
 | 
						|
	ld	[%l0+4],%o1
 | 
						|
	set	0xffff,%o2
 | 
						|
	and	%o1,%o2,%o1
 | 
						|
	or	%o1,%o0,%o0
 | 
						|
	st	%o0,[%l0+4]
 | 
						|
	ld	[%l0+4],%f0
 | 
						|
#ifdef __solaris
 | 
						|
	fqtod	%f0,%f0
 | 
						|
#else
 | 
						|
	fxtod	%f0,%f0
 | 
						|
#endif
 | 
						|
	st	%f0,[%l0+4]
 | 
						|
	st	%f1,[%l0+8]
 | 
						|
	retl
 | 
						|
	nop
 |