Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Apr 2003 16:04:06 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 29746 for review
Message-ID:  <200304252304.h3PN4658011543@repoman.freebsd.org>

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

Change 29746 by peter@peter_daintree on 2003/04/25 16:03:09

	use PCB_FULLCTX to cause fast_syscall to restore a full frame
	via doreti.  eg: in response to *context or sigreturn(2).

Affected files ...

.. //depot/projects/hammer/sys/x86_64/x86_64/exception.s#28 edit
.. //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#84 edit

Differences ...

==== //depot/projects/hammer/sys/x86_64/x86_64/exception.s#28 (text+ko) ====

@@ -227,6 +227,9 @@
 	movq	PCPU(SCRATCH_RSP),%r12	/* %r12 already saved */
 	movq	%r12,TF_RSP(%rsp)	/* user stack pointer */
 	call	syscall
+	movq	PCPU(CURPCB),%rax
+	testq	$PCB_FULLCTX,PCB_FLAGS(%rax)
+	jnz	doreti_ast
 	/* simplified from doreti */
 1:	/* Check for and handle AST's on return to userland */
 	cli

==== //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#84 (text+ko) ====

@@ -384,6 +384,7 @@
 	SIG_CANTMASK(td->td_sigmask);
 	signotify(td);
 	PROC_UNLOCK(p);
+	td->td_pcb->pcb_flags |= PCB_FULLCTX;
 	return (EJUSTRETURN);
 }
 



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