BSD 4_3_Reno release
[unix-history] / usr / src / lib / libc / i386 / gen / _setjmp.s
CommitLineData
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
39ENTRY(_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
51ENTRY(_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
631: movl %ecx,0(%esp)
64 ret