Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Apr 2003 17:11:26 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 29570 for review
Message-ID:  <200304240011.h3O0BQYV010277@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=29570

Change 29570 by peter@peter_daintree on 2003/04/23 17:11:11

	take a shot at sigsetjmp/siglongjmp

Affected files ...

.. //depot/projects/hammer/lib/libc/x86_64/gen/Makefile.inc#5 edit
.. //depot/projects/hammer/lib/libc/x86_64/gen/sigsetjmp.S#2 edit

Differences ...

==== //depot/projects/hammer/lib/libc/x86_64/gen/Makefile.inc#5 (text+ko) ====

@@ -1,4 +1,5 @@
 #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93
 # $FreeBSD: src/lib/libc/i386/gen/Makefile.inc,v 1.18 2002/11/16 06:39:11 deischen Exp $
 
-SRCS+=	_setjmp.S setjmp.S frexp.c infinity.c isinf.c
+SRCS+=	_setjmp.S setjmp.S sigsetjmp.S \
+	frexp.c infinity.c isinf.c

==== //depot/projects/hammer/lib/libc/x86_64/gen/sigsetjmp.S#2 (text+ko) ====

@@ -58,57 +58,62 @@
  */
 
 ENTRY(sigsetjmp)
-	movl	8(%esp),%eax
-	movl	4(%esp),%ecx
-	movl	%eax,44(%ecx)
-	testl	%eax,%eax
+	pushq	%rdi
+	movq	%rdi,%rcx
+	movl	%esi,88(%rcx)
+	testl	%esi,%esi
 	jz	2f
 	PIC_PROLOGUE
-	leal	28(%ecx), %eax
-	pushl	%eax			/* (sigset_t*)oset */
-	pushl	$0			/* (sigset_t*)set  */
-	pushl	$1			/* SIG_BLOCK       */
+	leaq	72(%rcx),%rdi		/* (sigset_t*)oset */
+	movq	$0,%rsi			/* (sigset_t*)set  */
+	movq	$1,%rdx			/* SIG_BLOCK       */
 	call	PIC_PLT(CNAME(_sigprocmask))
-	addl	$12,%esp
 	PIC_EPILOGUE
-	movl	4(%esp),%ecx
-2:	movl	0(%esp),%edx
-	movl	%edx, 0(%ecx)
-	movl	%ebx, 4(%ecx)
-	movl	%esp, 8(%ecx)
-	movl	%ebp,12(%ecx)
-	movl	%esi,16(%ecx)
-	movl	%edi,20(%ecx)
-	fnstcw	24(%ecx)
-	xorl	%eax,%eax
+	popq	%rdi
+	movq	%rdi,%rcx
+2:	movq	0(%rsp),%rdx		/* retval */
+	movq	%rdx, 0(%rcx)		/* retval */
+	movq	%rbx, 8(%rcx)
+	movq	%rsp,16(%rcx)
+	movq	%rbp,24(%rcx)
+	movq	%r12,32(%rcx)
+	movq	%r13,40(%rcx)
+	movq	%r14,48(%rcx)
+	movq	%r15,56(%rcx)
+	fnstcw	64(%rcx)
+	xorq	%rax,%rax
 	ret
 
-	.weak CNAME(siglongjmp);
-	.set CNAME(siglongjmp),CNAME(__siglongjmp);
-ENTRY(__siglongjmp);
-	movl	4(%esp),%edx
-	cmpl	$0,44(%edx)
+	.weak CNAME(siglongjmp)
+	.set CNAME(siglongjmp),CNAME(__siglongjmp)
+ENTRY(__siglongjmp)
+	cmpl	$0,88(%rdi)
 	jz	2f
+	movq	%rdi,%rdx
+	pushq	%rdi
+	pushq	%rsi
 	PIC_PROLOGUE
-	pushl	$0			/* (sigset_t*)oset */
-	leal	28(%edx), %eax
-	pushl	%eax			/* (sigset_t*)set  */
-	pushl	$3			/* SIG_SETMASK     */
+	movq	$0,%rdi			/* (sigset_t*)oset */
+	leaq	72(%rdx),%rsi		/* (sigset_t*)set  */
+	movq	$3,%rdx			/* SIG_SETMASK     */
 	call	PIC_PLT(CNAME(_sigprocmask))
-	addl	$12,%esp
 	PIC_EPILOGUE
-	movl	4(%esp),%edx
-2:	movl	8(%esp),%eax
-	movl	0(%edx),%ecx
-	movl	4(%edx),%ebx
-	movl	8(%edx),%esp
-	movl	12(%edx),%ebp
-	movl	16(%edx),%esi
-	movl	20(%edx),%edi
+	popq	%rsi
+	popq	%rdi			/* jmpbuf */
+2:	movq	%rdi,%rdx
+	movq	%rsi,%rax		/* retval */
+	movq	0(%rdx),%rcx
+	movq	8(%rdx),%rbx
+	movq	16(%rdx),%rsp
+	movq	24(%rdx),%rbp
+	movq	32(%rdx),%r12
+	movq	40(%rdx),%r13
+	movq	48(%rdx),%r14
+	movq	56(%rdx),%r15
 	fninit
-	fldcw	24(%edx)
-	testl	%eax,%eax
+	fldcw	64(%rdx)
+	testq	%rax,%rax
 	jnz	1f
-	incl	%eax
-1:	movl	%ecx,0(%esp)
+	incq	%rax
+1:	movq	%rcx,0(%rsp)
 	ret



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304240011.h3O0BQYV010277>