Added end library and floating point processor support
This commit is contained in:
parent
14ce396d6f
commit
ac966f41eb
|
@ -1,5 +1,9 @@
|
|||
LIST
|
||||
Makefile
|
||||
compmodule
|
||||
libem_s.a
|
||||
em_end.s
|
||||
etext.s
|
||||
edata.s
|
||||
end.s
|
||||
libem_s.a
|
||||
READ_ME
|
||||
|
|
|
@ -26,7 +26,7 @@ shp.s
|
|||
sig.s
|
||||
cms.s
|
||||
fat.s
|
||||
fakfp.s
|
||||
fp68881.s
|
||||
trp.s
|
||||
dia.s
|
||||
dvu.s
|
||||
|
|
|
@ -1,27 +1,33 @@
|
|||
# $Header$
|
||||
MACH=m68k4
|
||||
all: libem_o.a end.o
|
||||
ASAR=aal
|
||||
all: libem_o.a end.a
|
||||
|
||||
install: all
|
||||
../../install libem_o.a tail_em
|
||||
../../install end.o end_em
|
||||
../../install end.a end_em
|
||||
|
||||
cmp: all
|
||||
-../../compare libem_o.a tail_em
|
||||
-../../compare end.o end_em
|
||||
-../../compare end.a end_em
|
||||
|
||||
end.o: end.s
|
||||
end.a: em_end.s etext.s edata.s end.s
|
||||
$(MACH) -I../../../h -c em_end.s
|
||||
$(MACH) -I../../../h -c edata.s
|
||||
$(MACH) -I../../../h -c etext.s
|
||||
$(MACH) -I../../../h -c end.s
|
||||
$(ASAR) cr end.a em_end.o etext.o edata.o end.o
|
||||
|
||||
libem_o.a: libem_s.a
|
||||
ASAR=aal ; export ASAR ;\
|
||||
ASAR=$(ASAR) ; export ASAR ;\
|
||||
march . libem_o.a
|
||||
|
||||
clean:
|
||||
rm -f *.o libem_o.a
|
||||
rm -f *.o libem_o.a end.a
|
||||
|
||||
opr :
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
||||
@pr `pwd`/end.s
|
||||
@pr `pwd`/em_end.s `pwd`/edata.s `pwd`/etext.s `pwd`/end.s
|
||||
|
|
9
mach/m68k4/libem/edata.s
Normal file
9
mach/m68k4/libem/edata.s
Normal file
|
@ -0,0 +1,9 @@
|
|||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.define _edata
|
||||
.sect .data
|
||||
.align 4
|
||||
.sect .data
|
||||
_edata:
|
22
mach/m68k4/libem/em_end.s
Normal file
22
mach/m68k4/libem/em_end.s
Normal file
|
@ -0,0 +1,22 @@
|
|||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.define endtext,enddata,endbss,__end
|
||||
.sect .text
|
||||
.align 4
|
||||
.sect .rom
|
||||
.align 4
|
||||
.sect .data
|
||||
.align 4
|
||||
.sect .bss
|
||||
.align 4
|
||||
.sect .end ! only for declaration of _end, __end and endbss.
|
||||
|
||||
.sect .text
|
||||
endtext:
|
||||
.sect .data
|
||||
enddata:
|
||||
.sect .end
|
||||
__end:
|
||||
endbss:
|
|
@ -1,16 +1,7 @@
|
|||
.define endtext,enddata,endbss,_etext,_edata,_end
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .end ! only for declaration of _end and endbss.
|
||||
|
||||
.sect .text
|
||||
endtext:
|
||||
_etext:
|
||||
.sect .data
|
||||
enddata:
|
||||
_edata:
|
||||
.sect .end
|
||||
.define _end
|
||||
.sect .end ! only for declaration of _end, __end and endbss.
|
||||
_end:
|
||||
endbss:
|
||||
|
|
9
mach/m68k4/libem/etext.s
Normal file
9
mach/m68k4/libem/etext.s
Normal file
|
@ -0,0 +1,9 @@
|
|||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.define _etext
|
||||
.sect .text
|
||||
.align 4
|
||||
.sect .text
|
||||
_etext:
|
299
mach/m68k4/libem/fp68881.s
Normal file
299
mach/m68k4/libem/fp68881.s
Normal file
|
@ -0,0 +1,299 @@
|
|||
.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 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)
|
Loading…
Reference in a new issue