36 lines
		
	
	
	
		
			420 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			420 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.global trp, write
 | 
						|
 | 
						|
trp:
 | 
						|
	set	trpim, %o1
 | 
						|
	ld	[%o1], %o2
 | 
						|
	srl	%o2, %o0, %o1
 | 
						|
	andcc	%o2, 1, %g0
 | 
						|
	bz	2f
 | 
						|
	nop
 | 
						|
	retl
 | 
						|
	nop
 | 
						|
2:
 | 
						|
	set	trppc, %o2
 | 
						|
	ld	[%o2], %o1
 | 
						|
	tst	%o1
 | 
						|
	bz	1f
 | 
						|
	nop
 | 
						|
	st	%g0,[%o2]
 | 
						|
	dec	4, %l0
 | 
						|
	st	%o0, [%l0]
 | 
						|
	jmp	%o1
 | 
						|
	nop
 | 
						|
1:
 | 
						|
	save	%sp, -64, %sp
 | 
						|
	set	2, %o0
 | 
						|
	set	message, %o1
 | 
						|
	set	message_high-message, %o2
 | 
						|
	call	write	
 | 
						|
	nop
 | 
						|
	restore
 | 
						|
	ta	2
 | 
						|
	st	%g0, [%g0]
 | 
						|
 | 
						|
message:
 | 
						|
	.ascii	"the error code is in %o0\n"
 | 
						|
message_high:
 |