Deleted Added
full compact
sigsetjmp.S (1849) sigsetjmp.S (3851)
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 *
8 * Redistribution and use in source and binary forms, with or without

--- 21 unchanged lines hidden (view full) ---

30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 *
37 * from: @(#)setjmp.s 5.1 (Berkeley) 4/23/90"
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 *
8 * Redistribution and use in source and binary forms, with or without

--- 21 unchanged lines hidden (view full) ---

30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 *
37 * from: @(#)setjmp.s 5.1 (Berkeley) 4/23/90"
38 * $Id: sigsetjmp.S,v 1.1 1993/12/05 13:01:05 ats Exp $
38 * $Id: sigsetjmp.S,v 1.1 1994/08/05 01:18:08 wollman Exp $
39 */
40
41#if defined(LIBC_SCCS) && !defined(lint)
42 .text
39 */
40
41#if defined(LIBC_SCCS) && !defined(lint)
42 .text
43 .asciz "$Id: sigsetjmp.S,v 1.1 1993/12/05 13:01:05 ats Exp $"
43 .asciz "$Id: sigsetjmp.S,v 1.1 1994/08/05 01:18:08 wollman Exp $"
44#endif /* LIBC_SCCS and not lint */
45
46#include "DEFS.h"
47#include "SYS.h"
48
44#endif /* LIBC_SCCS and not lint */
45
46#include "DEFS.h"
47#include "SYS.h"
48
49/*-
50 * TODO:
51 * Rename sigsetjmp to __sigsetjmp and siglongjmp to __siglongjmp,
52 * remove the other *jmp functions and define everything in terms
53 * of the renamed functions. This requires compiler support for
54 * the renamed functions (introduced in gcc-2.5.3; previous versions
55 * only supported *jmp with 0 or 1 leading underscores).
56 *
57 * Use sigprocmask() instead of sigblock() and sigsetmask(), and
58 * check for and handle errors.
59 *
60 * Restore _all_ the registers and the signal mask atomically. Can
61 * use sigreturn() if sigreturn() works.
62 */
63
49ENTRY(sigsetjmp)
50 movl 8(%esp),%eax
51 movl 4(%esp),%ecx
64ENTRY(sigsetjmp)
65 movl 8(%esp),%eax
66 movl 4(%esp),%ecx
52 movl %eax,24(%ecx)
67 movl %eax,32(%ecx)
53 testl %eax,%eax
54 jz 1f
55 pushl $0
56 call PIC_PLT(_sigblock)
57 addl $4,%esp
58 movl 4(%esp),%ecx
68 testl %eax,%eax
69 jz 1f
70 pushl $0
71 call PIC_PLT(_sigblock)
72 addl $4,%esp
73 movl 4(%esp),%ecx
59 movl %eax,28(%ecx)
74 movl %eax,24(%ecx)
601: movl 0(%esp),%edx
61 movl %edx, 0(%ecx)
62 movl %ebx, 4(%ecx)
63 movl %esp, 8(%ecx)
64 movl %ebp,12(%ecx)
65 movl %esi,16(%ecx)
66 movl %edi,20(%ecx)
751: movl 0(%esp),%edx
76 movl %edx, 0(%ecx)
77 movl %ebx, 4(%ecx)
78 movl %esp, 8(%ecx)
79 movl %ebp,12(%ecx)
80 movl %esi,16(%ecx)
81 movl %edi,20(%ecx)
82 fnstcw 28(%ecx)
67 xorl %eax,%eax
68 ret
69
70ENTRY(siglongjmp)
71 movl 4(%esp),%edx
83 xorl %eax,%eax
84 ret
85
86ENTRY(siglongjmp)
87 movl 4(%esp),%edx
72 cmpl $0,24(%edx)
88 cmpl $0,32(%edx)
73 jz 1f
89 jz 1f
74 pushl 28(%edx)
90 pushl 24(%edx)
75 call PIC_PLT(_sigsetmask)
76 addl $4,%esp
771: movl 4(%esp),%edx
78 movl 8(%esp),%eax
79 movl 0(%edx),%ecx
80 movl 4(%edx),%ebx
81 movl 8(%edx),%esp
82 movl 12(%edx),%ebp
83 movl 16(%edx),%esi
84 movl 20(%edx),%edi
91 call PIC_PLT(_sigsetmask)
92 addl $4,%esp
931: movl 4(%esp),%edx
94 movl 8(%esp),%eax
95 movl 0(%edx),%ecx
96 movl 4(%edx),%ebx
97 movl 8(%edx),%esp
98 movl 12(%edx),%ebp
99 movl 16(%edx),%esi
100 movl 20(%edx),%edi
101 fninit
102 fldcw 28(%edx)
85 testl %eax,%eax
86 jnz 2f
87 incl %eax
882: movl %ecx,0(%esp)
89 ret
103 testl %eax,%eax
104 jnz 2f
105 incl %eax
1062: movl %ecx,0(%esp)
107 ret