123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- .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
- ! $Id$
- ! 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 fpsr,d0
- and.l #0x2000,d0 ! set if Infinity
- beq 1f
- move.l #129,(a1)
- fmove.s (4,sp),fp0
- fblt 2f
- move.l #0x3f000000,(4,a1)
- jmp (a0)
- 2:
- move.l #0xbf000000,(4,a1)
- jmp (a0)
- 1:
- fmove.l fp1,d0
- add.l #1,d0
- fgetman fp0
- fbne 1f
- clr.l d0
- bra 2f
- 1:
- fmove.l #2,fp1
- fdiv fp1,fp0
- 2:
- 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 fpsr,d0
- and.l #0x2000,d0 ! set if Infinity
- beq 1f
- move.l #1025,(a1)
- fmove.d (4,sp),fp0
- fblt 2f
- move.l #0x3fe00000,(4,a1)
- clr.l (8,a1)
- jmp (a0)
- 2:
- move.l #0xbfe00000,(4,a1)
- clr.l (8,a1)
- jmp (a0)
- 1:
- fmove.l fp1,d0
- add.l #1,d0
- fgetman fp0
- fbne 1f
- clr.l d0
- bra 2f
- 1:
- fmove.l #2,fp1
- fdiv fp1,fp0
- 2:
- 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
- cmp.l #0x4f000000,(8,sp)
- bge 2f
- fintrz fp0,fp0
- fmove.l fp0,(8,sp)
- jmp (a0)
- 2:
- fadd.l #-2147483648,fp0
- fintrz fp0,fp0
- fmove.l fp0,d0
- bchg #31,d0
- move.l d0,(8,sp)
- jmp (a0)
- 1:
- fmove.d (8,sp),fp0
- fabs fp0
- cmp.l #0x41e00000,(8,sp)
- bge 1f
- fintrz fp0,fp0
- fmove.l fp0,(12,sp)
- jmp (a0)
- 1:
- fadd.l #-2147483648,fp0
- fintrz fp0,fp0
- fmove.l fp0,d0
- bchg #31,d0
- move.l d0,(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)
|