84 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.global lino,filn
 | 
						|
.global EXIT
 | 
						|
.global	begtext,begdata,begbss
 | 
						|
.global	EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO
 | 
						|
.global	hol0,reghp,limhp,trpim,trppc
 | 
						|
.global _start
 | 
						|
 | 
						|
! runtime startof for sparc on sun4
 | 
						|
 | 
						|
 | 
						|
LINO_AD	= 0
 | 
						|
FILN_AD	= 4
 | 
						|
 | 
						|
EARRAY	= 0
 | 
						|
ERANGE	= 1
 | 
						|
ESET	= 2
 | 
						|
EIDIVZ	= 6
 | 
						|
EHEAP	= 17
 | 
						|
EILLINS	= 18
 | 
						|
ECASE	= 20
 | 
						|
EBADGTO = 27
 | 
						|
 | 
						|
	.section ".text"
 | 
						|
 | 
						|
begtext:
 | 
						|
_start:
 | 
						|
	clr	%fp
 | 
						|
        ld	[%sp + 0x40], %o0
 | 
						|
	add	%sp, 0x44, %o1
 | 
						|
 | 
						|
	sub	%sp, 32, %sp
 | 
						|
 | 
						|
	sll	%o0, 0x2, %o2
 | 
						|
	add	%o2, 0x4, %o2
 | 
						|
	add	%o1, %o2, %o2
 | 
						|
	set	-0x100000, %g4		! should be a few M
 | 
						|
	clr	%l1
 | 
						|
	mov	%sp, %l0
 | 
						|
	add	%sp, %g4, %sp
 | 
						|
	dec	12, %l0
 | 
						|
					! enable divide by 0 trap and improper
 | 
						|
					! trap
 | 
						|
	st	%fsr, [%l0]
 | 
						|
	ld	[%l0], %o3
 | 
						|
	set	0x09000000, %o4
 | 
						|
	or	%o3, %o4, %o3
 | 
						|
	st	%o3, [%l0]
 | 
						|
	ld	[%l0], %fsr
 | 
						|
 | 
						|
	st	%o0, [%l0]
 | 
						|
	st	%o1, [%l0+4]
 | 
						|
	st	%o2, [%l0+8]
 | 
						|
 | 
						|
	call	$_m_a_i_n
 | 
						|
	nop
 | 
						|
	dec	4, %l0
 | 
						|
	st	%g0, [%l0]
 | 
						|
EXIT:
 | 
						|
	call	$_exit
 | 
						|
	nop
 | 
						|
 | 
						|
.type _start,#function
 | 
						|
.size _start,.-_start
 | 
						|
 | 
						|
	.section ".data"
 | 
						|
begdata:
 | 
						|
	.word 0		! may be at virtual address 0 with no problem
 | 
						|
hol0:
 | 
						|
lino:
 | 
						|
	.word	0	! lino
 | 
						|
filn:
 | 
						|
	.word	0	! filn
 | 
						|
reghp:
 | 
						|
	.word	_end
 | 
						|
limhp:
 | 
						|
	.word	_end
 | 
						|
trppc:
 | 
						|
	.word	0
 | 
						|
trpim:
 | 
						|
	.word	0	! USED TO BE 2 BYTES; IS THIS RIGHT?
 | 
						|
 | 
						|
 | 
						|
	.section ".bss"
 | 
						|
begbss: !initialization is not needed because ALL entries are in zero space!
 |