1990-01-12 10:29:26 +00:00
|
|
|
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
|
|
|
.define .gto
|
|
|
|
! $Header$
|
1985-01-18 14:30:03 +00:00
|
|
|
|
1990-01-12 10:29:26 +00:00
|
|
|
.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)
|
1985-01-18 14:30:03 +00:00
|
|
|
.gto:
|
|
|
|
movl (sp)+,r2
|
1990-01-12 10:29:26 +00:00
|
|
|
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
|
1985-01-18 14:30:03 +00:00
|
|
|
rsb
|