--- /dev/null
+.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)