17 lines
		
	
	
		
			451 B
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			17 lines
		
	
	
		
			451 B
		
	
	
	
		
			ArmAsm
		
	
	
	
| ; Trap 0 handler (syscall interface).
 | |
| ;
 | |
| ; The trap handler returns the result in r0 and the error code (errno value)
 | |
| ; in r2.  r1 is reserved in case an 8 byte quantity ever needs to be
 | |
| ; returned in registers.
 | |
| 
 | |
| 	.text
 | |
| 	.global	__trap0
 | |
| __trap0:
 | |
| 	trap	#0		; trap 0 returns result in r0, error code in r2
 | |
| 	cmpui	r2,#1		; is error code zero?
 | |
| 	bc	.Lret		; yes, skip setting errno
 | |
| 	ld	r4,@(sp)	; no, set errno
 | |
| 	st	r2,@r4
 | |
| .Lret:
 | |
| 	jmp	lr		; return to caller
 |