Deleted Added
full compact
sigsetjmp.S (50476) sigsetjmp.S (51794)
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

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

28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
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 *
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

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

28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
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 * $FreeBSD: head/lib/libc/amd64/gen/sigsetjmp.S 50476 1999-08-28 00:22:10Z peter $
36 * $FreeBSD: head/lib/libc/amd64/gen/sigsetjmp.S 51794 1999-09-29 15:18:46Z marcel $
37 */
38
39#if defined(LIBC_RCS) && !defined(lint)
40 .text
37 */
38
39#if defined(LIBC_RCS) && !defined(lint)
40 .text
41 .asciz "$FreeBSD: head/lib/libc/amd64/gen/sigsetjmp.S 50476 1999-08-28 00:22:10Z peter $"
41 .asciz "$FreeBSD: head/lib/libc/amd64/gen/sigsetjmp.S 51794 1999-09-29 15:18:46Z marcel $"
42#endif /* LIBC_RCS and not lint */
43
44#include "DEFS.h"
45#include "SYS.h"
46
47/*-
48 * TODO:
49 * Rename sigsetjmp to __sigsetjmp and siglongjmp to __siglongjmp,

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

56 * check for and handle errors.
57 *
58 * Restore _all_ the registers and the signal mask atomically. Can
59 * use sigreturn() if sigreturn() works.
60 */
61
62ENTRY(sigsetjmp)
63 movl 8(%esp),%eax
42#endif /* LIBC_RCS and not lint */
43
44#include "DEFS.h"
45#include "SYS.h"
46
47/*-
48 * TODO:
49 * Rename sigsetjmp to __sigsetjmp and siglongjmp to __siglongjmp,

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

56 * check for and handle errors.
57 *
58 * Restore _all_ the registers and the signal mask atomically. Can
59 * use sigreturn() if sigreturn() works.
60 */
61
62ENTRY(sigsetjmp)
63 movl 8(%esp),%eax
64 movl 4(%esp),%ecx
65 movl %eax,32(%ecx)
64 movl 4(%esp),%ecx
65 movl %eax,44(%ecx)
66 testl %eax,%eax
67 jz 2f
68 PIC_PROLOGUE
66 testl %eax,%eax
67 jz 2f
68 PIC_PROLOGUE
69 pushl $0
69 leal 28(%ecx), %eax
70 pushl %eax /* (sigset_t*)oset */
71 pushl $0 /* (sigset_t*)set */
72 pushl $1 /* SIG_BLOCK */
70#ifdef _THREAD_SAFE
73#ifdef _THREAD_SAFE
71 call PIC_PLT(CNAME(_thread_sys_sigblock))
74 call PIC_PLT(CNAME(_thread_sys_sigprocmask))
72#else
75#else
73 call PIC_PLT(CNAME(sigblock))
76 call PIC_PLT(CNAME(sigprocmask))
74#endif
77#endif
75 addl $4,%esp
78 addl $12,%esp
76 PIC_EPILOGUE
79 PIC_EPILOGUE
77 movl 4(%esp),%ecx
78 movl %eax,24(%ecx)
80 movl 4(%esp),%ecx
792: movl 0(%esp),%edx
80 movl %edx, 0(%ecx)
81 movl %ebx, 4(%ecx)
82 movl %esp, 8(%ecx)
83 movl %ebp,12(%ecx)
84 movl %esi,16(%ecx)
85 movl %edi,20(%ecx)
812: movl 0(%esp),%edx
82 movl %edx, 0(%ecx)
83 movl %ebx, 4(%ecx)
84 movl %esp, 8(%ecx)
85 movl %ebp,12(%ecx)
86 movl %esi,16(%ecx)
87 movl %edi,20(%ecx)
86 fnstcw 28(%ecx)
88 fnstcw 24(%ecx)
87 xorl %eax,%eax
88 ret
89
90ENTRY(siglongjmp)
91 movl 4(%esp),%edx
89 xorl %eax,%eax
90 ret
91
92ENTRY(siglongjmp)
93 movl 4(%esp),%edx
92 cmpl $0,32(%edx)
94 cmpl $0,44(%edx)
93 jz 2f
94 PIC_PROLOGUE
95 jz 2f
96 PIC_PROLOGUE
95 pushl 24(%edx)
97 pushl $0 /* (sigset_t*)oset */
98 leal 28(%edx), %eax
99 pushl %eax /* (sigset_t*)set */
100 pushl $3 /* SIG_SETMASK */
96#ifdef _THREAD_SAFE
101#ifdef _THREAD_SAFE
97 call PIC_PLT(CNAME(_thread_sys_sigsetmask))
102 call PIC_PLT(CNAME(_thread_sys_sigprocmask))
98#else
103#else
99 call PIC_PLT(CNAME(sigsetmask))
104 call PIC_PLT(CNAME(sigprocmask))
100#endif
105#endif
101 addl $4,%esp
106 addl $12,%esp
102 PIC_EPILOGUE
107 PIC_EPILOGUE
1032: movl 4(%esp),%edx
104 movl 8(%esp),%eax
108 movl 4(%esp),%edx
1092: movl 8(%esp),%eax
105 movl 0(%edx),%ecx
106 movl 4(%edx),%ebx
107 movl 8(%edx),%esp
108 movl 12(%edx),%ebp
109 movl 16(%edx),%esi
110 movl 20(%edx),%edi
111 fninit
110 movl 0(%edx),%ecx
111 movl 4(%edx),%ebx
112 movl 8(%edx),%esp
113 movl 12(%edx),%ebp
114 movl 16(%edx),%esi
115 movl 20(%edx),%edi
116 fninit
112 fldcw 28(%edx)
117 fldcw 24(%edx)
113 testl %eax,%eax
114 jnz 1f
115 incl %eax
1161: movl %ecx,0(%esp)
117 ret
118 testl %eax,%eax
119 jnz 1f
120 incl %eax
1211: movl %ecx,0(%esp)
122 ret