93 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #include "system.h"
 | |
| #include "em_abs.h"
 | |
| #ifdef BSD42
 | |
| #include "/usr/include/syscall.h"
 | |
| #endif BSD42
 | |
| 
 | |
| 	# $Header$
 | |
| 
 | |
| .globl	hol0
 | |
| .globl	.reghp
 | |
| .globl	.trppc
 | |
| .globl	.trpim
 | |
| 
 | |
| 	# run time startoff
 | |
| 	.word	0
 | |
| 	bispsw	$0100		# set FU(0100)
 | |
| 	movl	4(sp),r0
 | |
| 	clrl	-4(r0)
 | |
| 	movl	sp,r0
 | |
| 	movl	(r0)+,r1
 | |
| 	movl	r0,r2
 | |
| a1:
 | |
| 	tstl	(r0)+
 | |
| 	bneq	a1
 | |
| 	cmpl	r0,(r2)
 | |
| 	blssu	a2
 | |
| 	tstl	-(r0)
 | |
| a2:
 | |
| 	pushl	r0
 | |
| 	pushl	r2
 | |
| 	pushl	r1
 | |
| 	movl	$m1,ap
 | |
| 	chmk	(ap)+		# catch floating point exception
 | |
| 	calls	$3,_m_a_i_n
 | |
| 	movl	$m2,ap
 | |
| 	movl	r0,6(ap)
 | |
| 	chmk	(ap)+
 | |
| 	halt
 | |
| 
 | |
| 	.align	1
 | |
| sig8:
 | |
| 	.word	0x0000
 | |
| 	pushl	8(ap)
 | |
| 	movl	(sp)+,ap
 | |
| 	pushl	tab [ap]
 | |
| 	jsb	.trp
 | |
| 	movl	$m1,ap
 | |
| 	chmk	(ap)+
 | |
| 	ret
 | |
| 
 | |
| 	.data
 | |
| #ifdef BSD42
 | |
| m1:
 | |
| 	.word	SYS_sigvec
 | |
| 	.long	3
 | |
| 	.long	8
 | |
| 	.long	m1a
 | |
| 	.long	0
 | |
| m1a:
 | |
| 	.long	sig8
 | |
| 	.long	0
 | |
| 	.long	0
 | |
| #else BSD42
 | |
| m1:
 | |
| 	.word	48
 | |
| 	.long	2
 | |
| 	.long	8
 | |
| 	.long	sig8
 | |
| #endif BSD42
 | |
| m2:
 | |
| 	.word	1
 | |
| 	.long	1
 | |
| 	.long	0
 | |
| .reghp:
 | |
| 	.long	_end
 | |
| hol0:
 | |
| 	.space	8
 | |
| .trppc:
 | |
| 	.space	4
 | |
| .trpim:
 | |
| 	.long	0
 | |
| tab:
 | |
| 	.long	0
 | |
| 	.long	EIOVFL
 | |
| 	.long	EIDIVZ
 | |
| 	.long	EFOVFL
 | |
| 	.long	EFDIVZ
 | |
| 	.long	EFUNFL
 | |
| 	.long	EILLINS
 | |
| 	.long	EARRAY
 | |
| 	.long	EFOVFL
 | |
| 	.long	EFDIVZ
 | |
| 	.long	EFUNFL
 |