56 lines
673 B
ArmAsm
56 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
|