2 * Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr)
4 * The authors hereby grant permission to use, copy, modify, distribute,
5 * and license this software and its documentation for any purpose, provided
6 * that existing copyright notices are retained in all copies and that this
7 * notice is included verbatim in any distributions. No written agreement,
8 * license, or royalty fee is required for any of the authorized uses.
9 * Modifications to this software may be copyrighted by their authors
10 * and need not follow the licensing terms described here, provided that
11 * the new terms are clearly indicated on the first page of each file where
23 ; store r0. We won't be needing it, but what the heck.
26 loadsp 8 ; fetch argument
32 loadsp 8 ; fetch argument
40 loadsp 8 ; fetch argument
48 loadsp 8 ; fetch argument
56 loadsp 8 ; fetch argument
64 loadsp 8 ; fetch argument
72 loadsp 8 ; fetch argument
80 loadsp 8 ; fetch argument
87 loadsp 8 ; fetch argument
92 ; store return value from this fn into setjmp buffer
104 loadsp 8 ; fetch argument
109 ; set return value to 0
119 ; arguments are buffer + return value
177 ; Danger! here be dragons!
179 ; Once we are on the stack from the setjmp,
180 ; remember that calling convention has destroyed
181 ; the arguments to the setjmp fn.
184 ; copy value of r0(which is decided by the second argument
185 ; to longjmp) to setjmp buffer
190 ; store pointer to setjmp buffer in r0
202 ; Danger! here be dragons!
203 ; have now switched stacks!
205 ; restore return address since it has been destroyed
220 ; fill in correct value in r0, which we
221 ; take from the setjmp buffer....