Added end library and floating point processor support
This commit is contained in:
		
							parent
							
								
									14ce396d6f
								
							
						
					
					
						commit
						ac966f41eb
					
				
					 8 changed files with 360 additions and 20 deletions
				
			
		|  | @ -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…
	
	Add table
		
		Reference in a new issue