Added head_em.s for Sun floating point emulation
This commit is contained in:
		
							parent
							
								
									b6b4cee71f
								
							
						
					
					
						commit
						284bd607fd
					
				
					 3 changed files with 79 additions and 1 deletions
				
			
		|  | @ -19,3 +19,4 @@ mlf8.s | ||||||
| sbf4.s | sbf4.s | ||||||
| sbf8.s | sbf8.s | ||||||
| vars.s | vars.s | ||||||
|  | head_em.s | ||||||
|  |  | ||||||
|  | @ -9,7 +9,8 @@ FOBJ =	adf4.o adf8.o cff.o cfi.o cfu.o cif.o cmf4.o cmf8.o cuf.o dvf4.o \ | ||||||
| 	dvf8.o fef4.o fef8.o fif4.o fif8.o mlf4.o mlf8.o sbf4.o sbf8.o vars.o | 	dvf8.o fef4.o fef8.o fif4.o fif8.o mlf4.o mlf8.o sbf4.o sbf8.o vars.o | ||||||
| 
 | 
 | ||||||
| OBJ =	$(EMOBJ) $(FOBJ) | OBJ =	$(EMOBJ) $(FOBJ) | ||||||
| all:	libext.a | 
 | ||||||
|  | all:	libext.a head_em.sun.o | ||||||
| 
 | 
 | ||||||
| .s.o: | .s.o: | ||||||
| 	sun3 -c $*.s | 	sun3 -c $*.s | ||||||
|  | @ -19,11 +20,16 @@ libext.a:	$(OBJ) | ||||||
| 	ar rv libext.a $(OBJ) | 	ar rv libext.a $(OBJ) | ||||||
| 	ranlib libext.a | 	ranlib libext.a | ||||||
| 
 | 
 | ||||||
|  | head_em.sun.o:	head_em.o | ||||||
|  | 	../../../lib/sun3/cv -u head_em.o head_em.sun.o | ||||||
|  | 
 | ||||||
| install:	all | install:	all | ||||||
| 	../../install libext.a tail_ext | 	../../install libext.a tail_ext | ||||||
|  | 	../../install head_em.sun.o head_em.sun | ||||||
| 
 | 
 | ||||||
| cmp:	all | cmp:	all | ||||||
| 	-../../compare libext.a tail_ext | 	-../../compare libext.a tail_ext | ||||||
|  | 	-../../compare head_em.sun.o head_em.sun | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
| 	rm -f *.[oa] | 	rm -f *.[oa] | ||||||
|  |  | ||||||
							
								
								
									
										71
									
								
								mach/sun3/libce/head_em.s
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								mach/sun3/libce/head_em.s
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,71 @@ | ||||||
|  | .define .lino,.filn | ||||||
|  | .define EXIT
 | ||||||
|  | .define	begtext,begdata,begbss | ||||||
|  | .define	EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO | ||||||
|  | .define	hol0,.reghp,.limhp,.trpim,.trppc | ||||||
|  | .define fsoft_used,start_float | ||||||
|  | .sect .text | ||||||
|  | .sect .rom | ||||||
|  | .sect .data | ||||||
|  | .sect .bss | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ! runtime startof for 68020 machine | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | LINO_AD	= 0 | ||||||
|  | FILN_AD	= 4 | ||||||
|  | 
 | ||||||
|  | EARRAY	= 0 | ||||||
|  | ERANGE	= 1 | ||||||
|  | ESET	= 2 | ||||||
|  | EIDIVZ	= 6 | ||||||
|  | EHEAP	= 17 | ||||||
|  | EILLINS	= 18 | ||||||
|  | ECASE	= 20 | ||||||
|  | EBADGTO = 27 | ||||||
|  | 
 | ||||||
|  | 	.sect .text | ||||||
|  | begtext: | ||||||
|  | 	move.l	(sp),d2 | ||||||
|  | 	lea	(4,sp),a0 | ||||||
|  | 	move.l	d2,d1 | ||||||
|  | 	add.l	#1,d1 | ||||||
|  | 	asl.l	#2,d1 | ||||||
|  | 	move.l	a0,a1 | ||||||
|  | 	add.l	d1,a1 | ||||||
|  | 	pea	(a1) | ||||||
|  | 	pea	(a0) | ||||||
|  | 	move.l	d2,-(sp) | ||||||
|  | 	move.l	#0,a6 | ||||||
|  | 	jsr	(fsoft_used) | ||||||
|  | 	jsr	(_m_a_i_n) | ||||||
|  | 	move.l	d0,(sp)		! no stack cleanup needed | ||||||
|  | EXIT: | ||||||
|  | 	jsr	(_exit) | ||||||
|  | 
 | ||||||
|  | fsoft_used: | ||||||
|  | start_float: | ||||||
|  | 	jmp	(_finitfp_) | ||||||
|  | 
 | ||||||
|  | 	.sect .data | ||||||
|  | begdata: | ||||||
|  | 	.data4 0		! may be at virtual address 0 with no problem | ||||||
|  | hol0: | ||||||
|  | .lino: | ||||||
|  | 	.data4	0	! lino | ||||||
|  | .filn: | ||||||
|  | 	.data4	0	! filn | ||||||
|  | .reghp: | ||||||
|  | 	.data4	_end
 | ||||||
|  | .limhp: | ||||||
|  | 	.data4	_end
 | ||||||
|  | .trppc: | ||||||
|  | 	.data4	0
 | ||||||
|  | .trpim: | ||||||
|  | 	.data4	0	! USED TO BE 2 BYTES; IS THIS RIGHT?
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	.sect .bss | ||||||
|  | begbss: !initialization is not needed because ALL entries are in zero space! | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue