17 lines
		
	
	
	
		
			460 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			17 lines
		
	
	
	
		
			460 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
 | |
| .define	.gto
 | |
|         ! $Id$
 | |
| 
 | |
| .extern	.strlb
 | |
| 	! Nonlocal goto.
 | |
| 	! On the stack is a pointer to a block containing :
 | |
| 	! 1. the new local base		(ptr+8)
 | |
| 	! 2. the new stack pointer	(ptr+4)
 | |
| 	! 3. the new program counter	(ptr)
 | |
| .gto:
 | |
| 	movl	(sp)+,r2
 | |
| 	movl	4(r2),sp	! Store new stack pointer
 | |
| 	pushl	(r2)		! Push target address
 | |
| 	pushl	8(r2)		! Push new local base
 | |
| 	jsb	.strlb		! Store in fp, compute ap
 | |
| 	rsb
 |