Added fp68881.s
This commit is contained in:
parent
3ed9932864
commit
2b2698c44c
|
@ -1,5 +1,5 @@
|
|||
libem_s.a
|
||||
fakfp.s
|
||||
fp68881.s
|
||||
aar.s
|
||||
lar.s
|
||||
sar.s
|
||||
|
|
245
mach/m68020/libem/fp68881.s
Normal file
245
mach/m68020/libem/fp68881.s
Normal file
|
@ -0,0 +1,245 @@
|
|||
.define .adf4, .adf8, .sbf4, .sbf8, .mlf4, .mlf8, .dvf4, .dvf8
|
||||
.define .ngf4, .ngf8, .fif4, .fif8, .fef4, .fef8
|
||||
.define .cif4, .cif8, .cuf4, .cuf8, .cfi, .cfu, .cff4, .cff8
|
||||
.define .cmf4, .cmf8
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
|
||||
! $Header$
|
||||
|
||||
! Implement interface to floating point package for M68881
|
||||
|
||||
.sect .text
|
||||
.adf4:
|
||||
move.l (sp)+,a0
|
||||
fmove.s (sp),fp0
|
||||
fadd.s (4,sp),fp0
|
||||
fmove.s fp0,(4,sp)
|
||||
jmp (a0)
|
||||
|
||||
.adf8:
|
||||
move.l (sp)+,a0
|
||||
fmove.d (sp),fp0
|
||||
fadd.d (8,sp),fp0
|
||||
fmove.d fp0,(8,sp)
|
||||
jmp (a0)
|
||||
|
||||
.sbf4:
|
||||
move.l (sp)+,a0
|
||||
fmove.s (sp),fp0
|
||||
fmove.s (4,sp),fp1
|
||||
fsub fp0,fp1
|
||||
fmove.s fp1,(4,sp)
|
||||
jmp (a0)
|
||||
|
||||
.sbf8:
|
||||
move.l (sp)+,a0
|
||||
fmove.d (sp),fp0
|
||||
fmove.d (8,sp),fp1
|
||||
fsub fp0,fp1
|
||||
fmove.d fp1,(8,sp)
|
||||
jmp (a0)
|
||||
|
||||
.mlf4:
|
||||
move.l (sp)+,a0
|
||||
fmove.s (sp),fp0
|
||||
fmul.s (4,sp),fp0
|
||||
fmove.s fp0,(4,sp)
|
||||
jmp (a0)
|
||||
|
||||
.mlf8:
|
||||
move.l (sp)+,a0
|
||||
fmove.d (sp),fp0
|
||||
fmul.d (8,sp),fp0
|
||||
fmove.d fp0,(8,sp)
|
||||
jmp (a0)
|
||||
|
||||
.dvf4:
|
||||
move.l (sp)+,a0
|
||||
fmove.s (sp),fp0
|
||||
fmove.s (4,sp),fp1
|
||||
fdiv fp0,fp1
|
||||
fmove.s fp1,(4,sp)
|
||||
jmp (a0)
|
||||
|
||||
.dvf8:
|
||||
move.l (sp)+,a0
|
||||
fmove.d (sp),fp0
|
||||
fmove.d (8,sp),fp1
|
||||
fdiv fp0,fp1
|
||||
fmove.d fp1,(8,sp)
|
||||
jmp (a0)
|
||||
|
||||
.ngf4:
|
||||
fmove.s (4,sp),fp0
|
||||
fneg fp0
|
||||
fmove.s fp0,(4,sp)
|
||||
rts
|
||||
|
||||
.ngf8:
|
||||
fmove.d (4,sp),fp0
|
||||
fneg fp0
|
||||
fmove.d fp0,(4,sp)
|
||||
rts
|
||||
|
||||
.fif4:
|
||||
move.l (sp)+,a0
|
||||
move.l (sp),a1
|
||||
fmove.s (4,sp),fp0
|
||||
fmove.s (8,sp),fp1
|
||||
fmul fp0,fp1
|
||||
fintrz fp1,fp0
|
||||
fsub fp0,fp1
|
||||
fmove.s fp1,(4,a1)
|
||||
fmove.s fp0,(a1)
|
||||
jmp (a0)
|
||||
|
||||
.fif8:
|
||||
move.l (sp)+,a0
|
||||
move.l (sp),a1
|
||||
fmove.d (4,sp),fp0
|
||||
fmove.d (12,sp),fp1
|
||||
fmul fp0,fp1
|
||||
fintrz fp1,fp0
|
||||
fsub fp0,fp1
|
||||
fmove.d fp1,(8,a1)
|
||||
fmove.d fp0,(a1)
|
||||
jmp (a0)
|
||||
|
||||
.fef4:
|
||||
move.l (sp)+,a0
|
||||
move.l (sp),a1
|
||||
fmove.s (4,sp),fp0
|
||||
fgetexp fp0,fp1
|
||||
fmove.l fp1,d0
|
||||
add.l #1,d0
|
||||
fgetman fp0
|
||||
fmove.l #2,fp1
|
||||
fdiv fp1,fp0
|
||||
fmove.s fp0,(4,a1)
|
||||
move.l d0,(a1)
|
||||
jmp (a0)
|
||||
|
||||
.fef8:
|
||||
move.l (sp)+,a0
|
||||
move.l (sp),a1
|
||||
fmove.d (4,sp),fp0
|
||||
fgetexp fp0,fp1
|
||||
fmove.l fp1,d0
|
||||
add.l #1,d0
|
||||
fgetman fp0
|
||||
fmove.l #2,fp1
|
||||
fdiv fp1,fp0
|
||||
fmove.d fp0,(4,a1)
|
||||
move.l d0,(a1)
|
||||
jmp (a0)
|
||||
|
||||
.cif4:
|
||||
move.l (sp)+,a0
|
||||
fmove.l (4,sp),fp0
|
||||
fmove.s fp0,(4,sp)
|
||||
jmp (a0)
|
||||
|
||||
.cif8:
|
||||
move.l (sp)+,a0
|
||||
fmove.l (4,sp),fp0
|
||||
fmove.d fp0,(sp)
|
||||
jmp (a0)
|
||||
|
||||
.cuf4:
|
||||
move.l (sp)+,a0
|
||||
fmove.l (4,sp),fp0
|
||||
tst.l (4,sp)
|
||||
bge 1f
|
||||
fsub.l #-2147483648,fp0
|
||||
fsub.l #-2147483648,fp0
|
||||
1:
|
||||
fmove.s fp0,(4,sp)
|
||||
jmp (a0)
|
||||
|
||||
.cuf8:
|
||||
move.l (sp)+,a0
|
||||
fmove.l (4,sp),fp0
|
||||
tst.l (4,sp)
|
||||
bge 1f
|
||||
fsub.l #-2147483648,fp0
|
||||
fsub.l #-2147483648,fp0
|
||||
1:
|
||||
fmove.d fp0,(sp)
|
||||
jmp (a0)
|
||||
|
||||
.cfi:
|
||||
move.l (sp)+,a0
|
||||
move.l (4,sp),d0
|
||||
cmp.l #4,d0
|
||||
bne 1f
|
||||
fmove.s (8,sp),fp0
|
||||
fintrz fp0,fp0
|
||||
fmove.l fp0,(8,sp)
|
||||
jmp (a0)
|
||||
1:
|
||||
fmove.d (8,sp),fp0
|
||||
fintrz fp0,fp0
|
||||
fmove.l fp0,(12,sp)
|
||||
jmp (a0)
|
||||
|
||||
.cfu:
|
||||
move.l (sp)+,a0
|
||||
move.l (4,sp),d0
|
||||
cmp.l #4,d0
|
||||
bne 1f
|
||||
fmove.s (8,sp),fp0
|
||||
fabs fp0
|
||||
fintrz fp0,fp0
|
||||
fmove.l fp0,(8,sp)
|
||||
jmp (a0)
|
||||
1:
|
||||
fmove.d (8,sp),fp0
|
||||
fabs fp0
|
||||
fintrz fp0,fp0
|
||||
fmove.l fp0,(12,sp)
|
||||
jmp (a0)
|
||||
|
||||
.cff4:
|
||||
move.l (sp)+,a0
|
||||
fmove.d (sp),fp0
|
||||
fmove.s fp0,(4,sp)
|
||||
jmp (a0)
|
||||
|
||||
.cff8:
|
||||
move.l (sp)+,a0
|
||||
fmove.s (sp),fp0
|
||||
fmove.d fp0,(sp)
|
||||
jmp (a0)
|
||||
|
||||
.cmf4:
|
||||
move.l (sp)+,a0
|
||||
clr.l d0
|
||||
fmove.s (sp),fp0
|
||||
fmove.s (4,sp),fp1
|
||||
fcmp fp0,fp1
|
||||
fbeq 2f
|
||||
fblt 1f
|
||||
add.l #1,d0
|
||||
jmp (a0)
|
||||
1:
|
||||
sub.l #1,d0
|
||||
2:
|
||||
jmp (a0)
|
||||
|
||||
.cmf8:
|
||||
move.l (sp)+,a0
|
||||
clr.l d0
|
||||
fmove.d (sp),fp0
|
||||
fmove.d (8,sp),fp1
|
||||
fcmp fp0,fp1
|
||||
fbeq 2f
|
||||
fblt 1f
|
||||
add.l #1,d0
|
||||
jmp (a0)
|
||||
1:
|
||||
sub.l #1,d0
|
||||
2:
|
||||
jmp (a0)
|
Loading…
Reference in a new issue