/***************************************************************** * * * Copyright (c) 1984 * * Massachusetts Institute of Technology * * * * This material is a component of the TRIX system, developed by * * D. Goddeau, J. Sieber, and S. Ward of the * * * * RTS group * * Laboratory for Computer Science * * Massachusetts Institute of Technology * * Cambridge, Massachusetts 02139 * * * * Permission to copy this software, to redistribute it, and to * * use it for any purpose is granted, subject to the conditions * * that (1) This copyright notice remain, unchanged and in full, * * on any copy or derivative of the software; and (2) that * * references to or documentation of any copy or derivative of * * this software acknowledge its source in accordance with the * * usual standards in academic research. * * * * MIT has made no warrantee or representation that the * * operation of this software will be error-free, and MIT is * * under no obligation to provide any services, by way of * * maintenance, update, or otherwise. * * * * In conjunction with products arising from the use of this * * material, there shall be no use of the name of the * * Massachusetts Institute of Technology nor of any adaptation * * thereof in any advertising, promotional, or sales literature * * without prior written consent from MIT in each case. * * * *****************************************************************/ |setjmp, longjmp | | longjmp(a, v) |causes a "return(v)" from the |last call to | | setjmp(v) |by restoring all the registers and |adjusting the stack | |jmp_buf is set up as: | | _________________ | | pc | | ----------------- | | d2 | | ----------------- | | ... | | ----------------- | | d7 | | ----------------- | | a2 | | ----------------- | | ... | | ----------------- | | a7 | | ----------------- .globl _setjmp, _longjmp .text _setjmp: movl sp@(4),a0 |pointer to jmp_buf movl sp@,a0@ |pc moveml #0xFCFC,a0@(4) |d2-d7, a2-a7 clrl d0 |return 0 rts _longjmp: movl sp@(4),a0 |pointer to jmp_buf movl sp@(8),d0 |value returned moveml a0@(4),#0xFCFC |restore d2-d7, a2-a7 movl a0@,sp@ |restore pc of call to setjmp to stack rts