51 lines
		
	
	
		
			850 B
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			850 B
		
	
	
	
		
			ArmAsm
		
	
	
	
| /* These are predefined by new versions of GNU cpp.  */
 | |
| 
 | |
| #ifndef __USER_LABEL_PREFIX__
 | |
| #define __USER_LABEL_PREFIX__ _
 | |
| #endif
 | |
| 
 | |
| /* ANSI concatenation macros.  */
 | |
| 
 | |
| #define CONCAT1(a, b) CONCAT2(a, b)
 | |
| #define CONCAT2(a, b) a ## b
 | |
| 
 | |
| /* Use the right prefix for global labels.  */
 | |
| 
 | |
| #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
 | |
| 
 | |
| 	.global SYM (setjmp)
 | |
| 	.global SYM (_setjmp)
 | |
| 	.global SYM (longjmp)
 | |
| 
 | |
| 	.section  .text,"x"
 | |
| 	.align 4
 | |
| SYM (_setjmp):	
 | |
| SYM (setjmp):
 | |
| 	st.d	0(r2),r20
 | |
| 	st.d	8(r2),r22
 | |
| 	st.d	16(r2),r24
 | |
| 	st.d	24(r2),r26
 | |
| 	st.d	32(r2),r28
 | |
| 	st.d	40(r2),r30
 | |
| 	st	48(r2),r1
 | |
| 	jsr	r31(r0),r0
 | |
| 	 addu	0,r0,r2
 | |
| 
 | |
| 	.section  .text,"x"
 | |
| 	.align 4
 | |
| SYM (longjmp):
 | |
| 	ld.d	0(r2),r20
 | |
| 	ld.d	8(r2),r22
 | |
| 	ld.d	16(r2),r24
 | |
| 	ld.d	24(r2),r26
 | |
| 	ld.d	32(r2),r28
 | |
| 	ld.d	40(r2),r30
 | |
| 	bcnd	L1,r4,ne0.w
 | |
| 	 ld	48(r2),r1
 | |
| 
 | |
| 	jsr	r31(r0),r0
 | |
| 	 addu	1,r0,r2
 | |
| L1:
 | |
| 	jsr	r31(r0),r0
 | |
| 	 addu	r4,r0,r2
 |