76 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| /* setjmp/longjmp routines.
 | |
|  *
 | |
|  * Written by Michael Hayes <m.hayes@elec.canterbury.ac.nz>.
 | |
|  *
 | |
|  * The author hereby grant permission to use, copy, modify, distribute,
 | |
|  * and license this software and its documentation for any purpose, provided
 | |
|  * that existing copyright notices are retained in all copies and that this
 | |
|  * notice is included verbatim in any distributions. No written agreement,
 | |
|  * license, or royalty fee is required for any of the authorized uses.
 | |
|  * Modifications to this software may be copyrighted by their authors
 | |
|  * and need not follow the licensing terms described here, provided that
 | |
|  * the new terms are clearly indicated on the first page of each file where
 | |
|  * they apply.
 | |
|  */
 | |
| 
 | |
| 	.sect .text
 | |
| 	.global setjmp
 | |
| 	.global longjmp
 | |
| 
 | |
| setjmp:
 | |
| 	pop	r1	   
 | |
| 	ldi	sp, ar0
 | |
| #ifndef _REGPARM
 | |
| 	ldi	*ar0, ar2	
 | |
| #endif
 | |
| 
 | |
| 	sti	r4, *ar2++
 | |
| 	sti	r5, *ar2++
 | |
| 	stf	r6, *ar2++
 | |
| 	stf	r7, *ar2++
 | |
| #ifdef _TMS320C4x
 | |
| 	sti	r8, *ar2++
 | |
| #endif
 | |
| 	sti	ar3, *ar2++
 | |
| 	sti	ar4, *ar2++
 | |
| 	sti	ar5, *ar2++
 | |
| 	sti	ar6, *ar2++
 | |
| 	sti	ar7, *ar2++
 | |
| 	bd	r1	
 | |
| 	sti	r1, *ar2++ 
 | |
| 	sti	ar0, *ar2  
 | |
| 	ldi	0, r0	
 | |
| 
 | |
| 	
 | |
| longjmp:
 | |
| #ifndef _REGPARM
 | |
| 	ldi	sp, ar0
 | |
| 	ldi	*-ar0(1), ar2  
 | |
| 	ldi	*-ar0(2), r0   
 | |
| 	ldiz	1, r0	
 | |
| #else
 | |
| 	ldi	r2, r0	 
 | |
| 	ldiz	1, r0	
 | |
| #endif
 | |
|  
 | |
| 	ldi	*ar2++, r4 
 | |
| 	ldi	*ar2++, r5 
 | |
| 	ldf	*ar2++, r6 
 | |
| 	ldf	*ar2++, r7
 | |
| #ifdef _TMS320C4x
 | |
| 	ldi	*ar2++, r8
 | |
| #endif
 | |
| 	ldi	*ar2++, ar3
 | |
| 	ldi	*ar2++, ar4 
 | |
| 	ldi	*ar2++, ar5 
 | |
| 	ldi	*ar2++, ar6 
 | |
| 	ldi	*ar2++, ar7 
 | |
| 	ldi	*ar2++, r1 
 | |
| 	ldi	*ar2, sp	
 | |
|     
 | |
| 	b	 r1	
 | |
| 	.end
 | |
| 	
 | |
| 	
 | |
| 
 |