16 lines
		
	
	
	
		
			400 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			16 lines
		
	
	
	
		
			400 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
|         # $Header$
 | |
| 
 | |
| .globl	.strlb
 | |
| .globl	.gto
 | |
| 	# 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
 |