35 lines
		
	
	
		
			631 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			631 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
;;
 | 
						|
;;  The errno will be in r5 if r11 is -1.
 | 
						|
;;
 | 
						|
	.text
 | 
						|
	.global __trap0
 | 
						|
__trap0:
 | 
						|
	;; non-leaf function so need to create stack frame to
 | 
						|
	;; store ra and fp
 | 
						|
	subi	sp, sp, #16
 | 
						|
	stw	ra, sp, #12
 | 
						|
	or	r0, r0, r0		;; nop
 | 
						|
	stw	fp, sp, #8
 | 
						|
	or	fp, sp, sp
 | 
						|
	stw	r5, sp, #4
 | 
						|
	or	r0, r0, r0		;; nop
 | 
						|
	stw	r6, sp, #0
 | 
						|
	addi	r6, r0, #$-1
 | 
						|
	si	r14
 | 
						|
	or	r0, r0, r0		;; nop
 | 
						|
	brne	r11, r6, .L0
 | 
						|
	ldui	r6, #%hi16(errno)
 | 
						|
	addui	r6, r6, #%lo16(errno)
 | 
						|
	stw	r5, r6, #0
 | 
						|
	or	r0, r0, r0		;; nop
 | 
						|
.L0:
 | 
						|
	ldw	r6, sp, #0
 | 
						|
	or	r0, r0, r0		;; nop
 | 
						|
	ldw	r5, sp, #4
 | 
						|
	or	r0, r0, r0		;; nop
 | 
						|
	ldw	ra, sp, #12
 | 
						|
	or	r0, r0, r0		;; nop
 | 
						|
	ldw	fp, sp, #8
 | 
						|
	jal	r0, r14
 | 
						|
	addi	sp, sp, #16
 |