From owner-p4-projects@FreeBSD.ORG Mon Apr 3 21:45:30 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D963A16A437; Mon, 3 Apr 2006 21:45:30 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AC2C116A434 for ; Mon, 3 Apr 2006 21:45:30 +0000 (UTC) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 566E943D49 for ; Mon, 3 Apr 2006 21:45:30 +0000 (GMT) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k33LjUx1064618 for ; Mon, 3 Apr 2006 21:45:30 GMT (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k33LjUtQ064606 for perforce@freebsd.org; Mon, 3 Apr 2006 21:45:30 GMT (envelope-from peter@freebsd.org) Date: Mon, 3 Apr 2006 21:45:30 GMT Message-Id: <200604032145.k33LjUtQ064606@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Cc: Subject: PERFORCE change 94563 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Apr 2006 21:45:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=94563 Change 94563 by peter@peter_daintree on 2006/04/03 21:44:50 IFC @94562 Affected files ... .. //depot/projects/hammer/share/man/man9/pmap_remove.9#3 integrate .. //depot/projects/hammer/sys/alpha/alpha/pmap.c#51 integrate .. //depot/projects/hammer/sys/amd64/amd64/pmap.c#150 integrate .. //depot/projects/hammer/sys/amd64/include/pmap.h#61 integrate .. //depot/projects/hammer/sys/arm/arm/pmap.c#33 integrate .. //depot/projects/hammer/sys/i386/i386/pmap.c#83 integrate .. //depot/projects/hammer/sys/ia64/ia64/pmap.c#53 integrate .. //depot/projects/hammer/sys/kern/kern_exec.c#63 integrate .. //depot/projects/hammer/sys/kern/kern_exit.c#60 integrate .. //depot/projects/hammer/sys/powerpc/powerpc/mmu_if.m#4 integrate .. //depot/projects/hammer/sys/powerpc/powerpc/pmap_dispatch.c#5 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/machdep.c#45 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/pmap.c#41 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/trap.c#20 integrate .. //depot/projects/hammer/sys/vm/pmap.h#25 integrate .. //depot/projects/hammer/usr.bin/find/find.1#18 integrate Differences ... ==== //depot/projects/hammer/share/man/man9/pmap_remove.9#3 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/pmap_remove.9,v 1.2 2004/07/06 07:02:31 ru Exp $ +.\" $FreeBSD: src/share/man/man9/pmap_remove.9,v 1.3 2006/04/03 21:17:36 peter Exp $ .\" .Dd July 21, 2003 .Dt PMAP_REMOVE 9 @@ -42,7 +42,7 @@ .Ft void .Fn pmap_remove_all "vm_page_t m" .Ft void -.Fn pmap_remove_pages "pmap_t pmap" "vm_offset_t sva" "vm_offset_t eva" +.Fn pmap_remove_pages "pmap_t pmap" .Sh DESCRIPTION The .Fn pmap_remove @@ -72,12 +72,8 @@ .Pp The .Fn pmap_remove_pages -function removes all pages from the physical map -.Fa pmap , -within the range of physical addresses bounded by -.Fa sva -and -.Fa eva . +function removes all user pages from the physical map +.Fa pmap . This function is called when a process exits to run down its address space more quickly than would be the case for calling .Fn pmap_remove . ==== //depot/projects/hammer/sys/alpha/alpha/pmap.c#51 (text+ko) ==== @@ -148,7 +148,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.187 2005/12/02 18:02:54 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.188 2006/04/03 21:16:07 peter Exp $"); #include #include ==== //depot/projects/hammer/sys/amd64/amd64/pmap.c#150 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.540 2006/04/02 05:45:05 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.542 2006/04/03 21:36:00 peter Exp $"); /* * Manages physical address maps. ==== //depot/projects/hammer/sys/amd64/include/pmap.h#61 (text+ko) ==== @@ -39,7 +39,7 @@ * * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.129 2006/03/14 00:01:56 peter Exp $ + * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.130 2006/04/03 21:36:01 peter Exp $ */ #ifndef _MACHINE_PMAP_H_ ==== //depot/projects/hammer/sys/arm/arm/pmap.c#33 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.45 2006/03/26 22:03:43 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.46 2006/04/03 21:16:07 peter Exp $"); #include #include #include ==== //depot/projects/hammer/sys/i386/i386/pmap.c#83 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.547 2006/04/02 05:45:05 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.548 2006/04/03 21:16:07 peter Exp $"); /* * Manages physical address maps. ==== //depot/projects/hammer/sys/ia64/ia64/pmap.c#53 (text+ko) ==== @@ -46,7 +46,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.172 2005/11/20 06:09:48 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.173 2006/04/03 21:16:08 peter Exp $"); #include #include ==== //depot/projects/hammer/sys/kern/kern_exec.c#63 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.290 2006/03/08 20:21:54 ups Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.291 2006/04/03 21:16:08 peter Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_ktrace.h" ==== //depot/projects/hammer/sys/kern/kern_exit.c#60 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.286 2006/03/14 04:00:21 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_exit.c,v 1.287 2006/04/03 21:16:09 peter Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" ==== //depot/projects/hammer/sys/powerpc/powerpc/mmu_if.m#4 (text+ko) ==== @@ -23,7 +23,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/sys/powerpc/powerpc/mmu_if.m,v 1.2 2005/11/20 06:09:49 alc Exp $ +# $FreeBSD: src/sys/powerpc/powerpc/mmu_if.m,v 1.3 2006/04/03 21:16:09 peter Exp $ # #include ==== //depot/projects/hammer/sys/powerpc/powerpc/pmap_dispatch.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/pmap_dispatch.c,v 1.3 2005/11/20 06:09:49 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/pmap_dispatch.c,v 1.4 2006/04/03 21:16:09 peter Exp $"); /* * Dispatch MI pmap calls to the appropriate MMU implementation ==== //depot/projects/hammer/sys/sparc64/sparc64/machdep.c#45 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/machdep.c,v 1.128 2006/03/28 20:28:31 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/machdep.c,v 1.129 2006/04/03 21:27:01 marius Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -464,14 +464,12 @@ int oonstack; u_long sp; int sig; - int code; oonstack = 0; td = curthread; p = td->td_proc; PROC_LOCK_ASSERT(p, MA_OWNED); sig = ksi->ksi_signo; - code = ksi->ksi_code; psp = p->p_sigacts; mtx_assert(&psp->ps_mtx, MA_OWNED); tf = td->td_frame; @@ -484,7 +482,7 @@ /* Make sure we have a signal trampoline to return to. */ if (p->p_md.md_sigtramp == NULL) { /* - * No signal tramoline... kill the process. + * No signal trampoline... kill the process. */ CTR0(KTR_SIG, "sendsig: no sigtramp"); printf("sendsig: %s is too old, rebuild it\n", p->p_comm); @@ -518,12 +516,20 @@ /* Build the argument list for the signal handler. */ tf->tf_out[0] = sig; - tf->tf_out[1] = (register_t)&sfp->sf_si; tf->tf_out[2] = (register_t)&sfp->sf_uc; tf->tf_out[4] = (register_t)catcher; - /* Fill siginfo structure. */ - sf.sf_si = ksi->ksi_info; - sf.sf_si.si_addr = (void *)tf->tf_sfar; /* XXX */ + if (SIGISMEMBER(psp->ps_siginfo, sig)) { + /* Signal handler installed with SA_SIGINFO. */ + tf->tf_out[1] = (register_t)&sfp->sf_si; + + /* Fill in POSIX parts. */ + sf.sf_si = ksi->ksi_info; + sf.sf_si.si_signo = sig; /* maybe a translated signal */ + } else { + /* Old FreeBSD-style arguments. */ + tf->tf_out[1] = ksi->ksi_code; + tf->tf_out[3] = (register_t)ksi->ksi_addr; + } /* Copy the sigframe out to the user's stack. */ if (rwindow_save(td) != 0 || copyout(&sf, sfp, sizeof(*sfp)) != 0 || ==== //depot/projects/hammer/sys/sparc64/sparc64/pmap.c#41 (text+ko) ==== @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/sparc64/sparc64/pmap.c,v 1.152 2006/01/01 22:52:21 scottl Exp $ + * $FreeBSD: src/sys/sparc64/sparc64/pmap.c,v 1.153 2006/04/03 21:16:09 peter Exp $ */ /* ==== //depot/projects/hammer/sys/sparc64/sparc64/trap.c#20 (text+ko) ==== @@ -37,9 +37,11 @@ * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 * from: FreeBSD: src/sys/i386/i386/trap.c,v 1.197 2001/07/19 - * $FreeBSD: src/sys/sparc64/sparc64/trap.c,v 1.79 2006/02/28 21:25:00 brueffer Exp $ */ +#include +__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/trap.c,v 1.80 2006/04/03 21:27:01 marius Exp $"); + #include "opt_ddb.h" #include "opt_ktr.h" #include "opt_ktrace.h" @@ -165,7 +167,7 @@ "kernel stack fault", }; -const int trap_sig[] = { +static const int trap_sig[] = { SIGILL, /* reserved */ SIGILL, /* instruction access exception */ SIGILL, /* instruction access error */ @@ -233,6 +235,7 @@ struct proc *p; int error; int sig; + register_t addr; ksiginfo_t ksi; td = PCPU_GET(curthread); @@ -250,12 +253,15 @@ p = td->td_proc; td->td_pticks = 0; td->td_frame = tf; + addr = tf->tf_tpc; if (td->td_ucred != p->p_ucred) cred_update_thread(td); switch (tf->tf_type) { case T_DATA_MISS: case T_DATA_PROTECTION: + addr = tf->tf_sfar; + /* FALLTHROUGH */ case T_INSTRUCTION_MISS: sig = trap_pfault(td, tf); break; @@ -288,7 +294,7 @@ ksiginfo_init_trap(&ksi); ksi.ksi_signo = sig; ksi.ksi_code = (int)tf->tf_type; /* XXX not POSIX */ - /* ksi.ksi_addr = ? */ + ksi.ksi_addr = (void *)addr; ksi.ksi_trapno = (int)tf->tf_type; trapsignal(td, &ksi); } ==== //depot/projects/hammer/sys/vm/pmap.h#25 (text+ko) ==== @@ -57,7 +57,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $FreeBSD: src/sys/vm/pmap.h,v 1.74 2005/11/20 06:09:49 alc Exp $ + * $FreeBSD: src/sys/vm/pmap.h,v 1.75 2006/04/03 21:16:10 peter Exp $ */ /* ==== //depot/projects/hammer/usr.bin/find/find.1#18 (text+ko) ==== @@ -33,9 +33,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)find.1 8.7 (Berkeley) 5/9/95 -.\" $FreeBSD: src/usr.bin/find/find.1,v 1.74 2006/04/03 20:36:37 ceri Exp $ +.\" $FreeBSD: src/usr.bin/find/find.1,v 1.75 2006/04/03 20:53:34 ceri Exp $ .\" -.Dd April 2, 2005 +.Dd April 3, 2006 .Dt FIND 1 .Os .Sh NAME