summaryrefslogtreecommitdiffstats
path: root/lib/libc/amd64/gen
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1996-01-22 00:02:33 +0000
committerjulian <julian@FreeBSD.org>1996-01-22 00:02:33 +0000
commit619b731f5bb5e09dcf1eaf1fbd96383ca64398fd (patch)
treea89c7f50ec371cef4418259b9dccdd31ebb2f61f /lib/libc/amd64/gen
parent663b14fb2f3198fb0bfb62ae16b6b56c2a4dd055 (diff)
downloadFreeBSD-src-619b731f5bb5e09dcf1eaf1fbd96383ca64398fd.zip
FreeBSD-src-619b731f5bb5e09dcf1eaf1fbd96383ca64398fd.tar.gz
Reviewed by: julian and (hsu?)
Submitted by: John Birrel(L?) changes for threadsafe operations
Diffstat (limited to 'lib/libc/amd64/gen')
-rw-r--r--lib/libc/amd64/gen/_setjmp.S12
-rw-r--r--lib/libc/amd64/gen/setjmp.S20
-rw-r--r--lib/libc/amd64/gen/sigsetjmp.S20
3 files changed, 46 insertions, 6 deletions
diff --git a/lib/libc/amd64/gen/_setjmp.S b/lib/libc/amd64/gen/_setjmp.S
index abd2684..23a2cde 100644
--- a/lib/libc/amd64/gen/_setjmp.S
+++ b/lib/libc/amd64/gen/_setjmp.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: _setjmp.S,v 1.3 1995/01/23 01:26:41 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: _setjmp.S,v 1.3 1995/01/23 01:26:41 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/*
@@ -53,7 +53,11 @@
#include "DEFS.h"
+#ifdef _THREAD_SAFE
+ENTRY(__thread_sys_setjmp)
+#else
ENTRY(_setjmp)
+#endif
movl 4(%esp),%eax
movl 0(%esp),%edx
movl %edx, 0(%eax) /* rta */
@@ -66,7 +70,11 @@ ENTRY(_setjmp)
xorl %eax,%eax
ret
+#ifdef _THREAD_SAFE
+ENTRY(__thread_sys_longjmp)
+#else
ENTRY(_longjmp)
+#endif
movl 4(%esp),%edx
movl 8(%esp),%eax
movl 0(%edx),%ecx
diff --git a/lib/libc/amd64/gen/setjmp.S b/lib/libc/amd64/gen/setjmp.S
index fa52b83..89efa92 100644
--- a/lib/libc/amd64/gen/setjmp.S
+++ b/lib/libc/amd64/gen/setjmp.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: setjmp.S,v 1.3 1995/01/23 01:27:08 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id$"
+ .asciz "$Id: setjmp.S,v 1.3 1995/01/23 01:27:08 davidg Exp $"
#endif /* LIBC_RCS and not lint */
/*
@@ -54,9 +54,17 @@
#include "DEFS.h"
#include "SYS.h"
+#ifdef _THREAD_SAFE
+ENTRY(_thread_sys_setjmp)
+#else
ENTRY(setjmp)
+#endif
pushl $0
+#ifdef _THREAD_SAFE
+ call PIC_PLT(__thread_sys_sigblock)
+#else
call PIC_PLT(_sigblock)
+#endif
popl %edx
movl 4(%esp),%ecx
movl 0(%esp),%edx
@@ -71,10 +79,18 @@ ENTRY(setjmp)
xorl %eax,%eax
ret
+#ifdef _THREAD_SAFE
+ENTRY(_thread_sys_longjmp)
+#else
ENTRY(longjmp)
+#endif
movl 4(%esp),%edx
pushl 24(%edx)
+#ifdef _THREAD_SAFE
+ call PIC_PLT(__thread_sys_sigsetmask)
+#else
call PIC_PLT(_sigsetmask) /* XXX this is not reentrant */
+#endif
popl %eax
movl 4(%esp),%edx
movl 8(%esp),%eax
diff --git a/lib/libc/amd64/gen/sigsetjmp.S b/lib/libc/amd64/gen/sigsetjmp.S
index 4f592a3..1e15101 100644
--- a/lib/libc/amd64/gen/sigsetjmp.S
+++ b/lib/libc/amd64/gen/sigsetjmp.S
@@ -33,12 +33,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sigsetjmp.S,v 1.3 1994/12/27 13:34:04 bde Exp $
+ * $Id: sigsetjmp.S,v 1.4 1995/01/23 01:27:10 davidg Exp $
*/
#if defined(LIBC_RCS) && !defined(lint)
.text
- .asciz "$Id: sigsetjmp.S,v 1.3 1994/12/27 13:34:04 bde Exp $"
+ .asciz "$Id: sigsetjmp.S,v 1.4 1995/01/23 01:27:10 davidg Exp $"
#endif /* LIBC_RCS and not lint */
#include "DEFS.h"
@@ -59,14 +59,22 @@
* use sigreturn() if sigreturn() works.
*/
+#ifdef _THREAD_SAFE
+ENTRY(_thread_sys_sigsetjmp)
+#else
ENTRY(sigsetjmp)
+#endif
movl 8(%esp),%eax
movl 4(%esp),%ecx
movl %eax,32(%ecx)
testl %eax,%eax
jz 1f
pushl $0
+#ifdef _THREAD_SAFE
+ call PIC_PLT(__thread_sys_sigblock)
+#else
call PIC_PLT(_sigblock)
+#endif
addl $4,%esp
movl 4(%esp),%ecx
movl %eax,24(%ecx)
@@ -81,12 +89,20 @@ ENTRY(sigsetjmp)
xorl %eax,%eax
ret
+#ifdef _THREAD_SAFE
+ENTRY(_thread_sys_siglongjmp)
+#else
ENTRY(siglongjmp)
+#endif
movl 4(%esp),%edx
cmpl $0,32(%edx)
jz 1f
pushl 24(%edx)
+#ifdef _THREAD_SAFE
+ call PIC_PLT(_thread_sys_sigsetmask)
+#else
call PIC_PLT(_sigsetmask)
+#endif
addl $4,%esp
1: movl 4(%esp),%edx
movl 8(%esp),%eax
OpenPOWER on IntegriCloud