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
 |