Commit | Line | Data |
---|---|---|
81a2808b WN |
1 | /*- |
2 | * Copyright (c) 1990 The Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
5 | * This code is derived from software contributed to Berkeley by | |
6 | * William Jolitz. | |
7 | * | |
1c15e888 C |
8 | * Redistribution and use in source and binary forms are permitted |
9 | * provided that: (1) source distributions retain this entire copyright | |
10 | * notice and comment, and (2) distributions including binaries display | |
11 | * the following acknowledgement: ``This product includes software | |
12 | * developed by the University of California, Berkeley and its contributors'' | |
13 | * in the documentation or other materials provided with the distribution | |
14 | * and in all advertising materials mentioning features or use of this | |
15 | * software. Neither the name of the University nor the names of its | |
16 | * contributors may be used to endorse or promote products derived | |
17 | * from this software without specific prior written permission. | |
18 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | |
19 | * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
20 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
81a2808b WN |
21 | */ |
22 | ||
23 | #if defined(LIBC_SCCS) && !defined(lint) | |
1c15e888 | 24 | .asciz "@(#)_setjmp.s 5.1 (Berkeley) 4/23/90" |
81a2808b WN |
25 | #endif /* LIBC_SCCS and not lint */ |
26 | ||
27 | /* | |
28 | * C library -- _setjmp, _longjmp | |
29 | * | |
30 | * _longjmp(a,v) | |
31 | * will generate a "return(v)" from the last call to | |
32 | * _setjmp(a) | |
33 | * by restoring registers from the stack. | |
34 | * The previous signal state is NOT restored. | |
35 | */ | |
36 | ||
37 | #include "DEFS.h" | |
38 | ||
39 | ENTRY(_setjmp) | |
40 | movl 4(%esp),%eax | |
41 | movl 0(%esp),%edx | |
42 | movl %edx, 0(%eax) /* rta */ | |
43 | movl %ebx, 4(%eax) | |
44 | movl %esp, 8(%eax) | |
45 | movl %ebp,12(%eax) | |
46 | movl %esi,16(%eax) | |
47 | movl %edi,20(%eax) | |
48 | movl $0,%eax | |
49 | ret | |
50 | ||
51 | ENTRY(_longjmp) | |
52 | movl 4(%esp),%edx | |
53 | movl 8(%esp),%eax | |
54 | movl 0(%edx),%ecx | |
55 | movl 4(%edx),%ebx | |
56 | movl 8(%edx),%esp | |
57 | movl 12(%edx),%ebp | |
58 | movl 16(%edx),%esi | |
59 | movl 20(%edx),%edi | |
60 | cmpl $0,%eax | |
61 | jne 1f | |
62 | movl $1,%eax | |
63 | 1: movl %ecx,0(%esp) | |
64 | ret |