Date: Mon, 16 Oct 2006 16:25:45 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: gonzo@freebsd.org Cc: perforce@freebsd.org Subject: Re: PERFORCE change 107824 for review Message-ID: <20061016.162545.179961016.imp@bsdimp.com> In-Reply-To: <200610131444.k9DEi74J035961@repoman.freebsd.org> References: <200610131444.k9DEi74J035961@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <200610131444.k9DEi74J035961@repoman.freebsd.org> Oleksandr Tymoshenko <gonzo@freebsd.org> writes: : http://perforce.freebsd.org/chv.cgi?CH=107824 : : Change 107824 by gonzo@gonzo_hq on 2006/10/13 14:43:46 : : o Tweak exception handlers to conform new pmap model. Kernel map : works fine, userland still in action. Did this code come from the NetBSD code, or was it just the idea? Seems odd that these small changes would require adding a NetBSD license... Warner : Affected files ... : : .. //depot/projects/mips2/src/sys/mips/mips/exception.S#11 edit : : Differences ... : : ==== //depot/projects/mips2/src/sys/mips/mips/exception.S#11 (text+ko) ==== : : @@ -23,9 +23,128 @@ : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF : * SUCH DAMAGE. : * : - * $P4: //depot/projects/mips2/src/sys/mips/mips/exception.S#10 $ : + * $P4: //depot/projects/mips2/src/sys/mips/mips/exception.S#11 $ : + */ : + : +/* $NetBSD: mipsX_subr.S,v 1.19 2005/12/11 12:18:09 christos Exp $ */ : + : +/* : + * Copyright 2002 Wasabi Systems, Inc. : + * All rights reserved. : + * : + * Written by Simon Burge for Wasabi Systems, Inc. : + * : + * Redistribution and use in source and binary forms, with or without : + * modification, are permitted provided that the following conditions : + * are met: : + * 1. Redistributions of source code must retain the above copyright : + * notice, this list of conditions and the following disclaimer. : + * 2. Redistributions in binary form must reproduce the above copyright : + * notice, this list of conditions and the following disclaimer in the : + * documentation and/or other materials provided with the distribution. : + * 3. All advertising materials mentioning features or use of this software : + * must display the following acknowledgement: : + * This product includes software developed for the NetBSD Project by : + * Wasabi Systems, Inc. : + * 4. The name of Wasabi Systems, Inc. may not be used to endorse : + * or promote products derived from this software without specific prior : + * written permission. : + * : + * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND : + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED : + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR : + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC : + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR : + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF : + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS : + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN : + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) : + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE : + * POSSIBILITY OF SUCH DAMAGE. : + */ : + : +/* : + * Copyright (c) 1997 Jonathan Stone (hereinafter referred to as the author) : + * All rights reserved. : + * : + * Redistribution and use in source and binary forms, with or without : + * modification, are permitted provided that the following conditions : + * are met: : + * 1. Redistributions of source code must retain the above copyright : + * notice, this list of conditions and the following disclaimer. : + * 2. Redistributions in binary form must reproduce the above copyright : + * notice, this list of conditions and the following disclaimer in the : + * documentation and/or other materials provided with the distribution. : + * 3. All advertising materials mentioning features or use of this software : + * must display the following acknowledgement: : + * This product includes software developed by Jonathan R. Stone for : + * the NetBSD Project. : + * 4. The name of the author may not be used to endorse or promote products : + * derived from this software without specific prior written permission. : + * : + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND : + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE : + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE : + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE : + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL : + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS : + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) : + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT : + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY : + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF : + * SUCH DAMAGE. : + */ : + : +/* : + * Copyright (c) 1992, 1993 : + * The Regents of the University of California. All rights reserved. : + * : + * This code is derived from software contributed to Berkeley by : + * Digital Equipment Corporation and Ralph Campbell. : + * : + * Redistribution and use in source and binary forms, with or without : + * modification, are permitted provided that the following conditions : + * are met: : + * 1. Redistributions of source code must retain the above copyright : + * notice, this list of conditions and the following disclaimer. : + * 2. Redistributions in binary form must reproduce the above copyright : + * notice, this list of conditions and the following disclaimer in the : + * documentation and/or other materials provided with the distribution. : + * 3. Neither the name of the University nor the names of its contributors : + * may be used to endorse or promote products derived from this software : + * without specific prior written permission. : + * : + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND : + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE : + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE : + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE : + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL : + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS : + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) : + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT : + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY : + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF : + * SUCH DAMAGE. : + * : + * Copyright (C) 1989 Digital Equipment Corporation. : + * Permission to use, copy, modify, and distribute this software and : + * its documentation for any purpose and without fee is hereby granted, : + * provided that the above copyright notice appears in all copies. : + * Digital Equipment Corporation makes no representations about the : + * suitability of this software for any purpose. It is provided "as is" : + * without express or implied warranty. : + * : + * from: Header: /sprite/src/kernel/mach/ds3100.md/RCS/loMem.s, : + * v 1.1 89/07/11 17:55:04 nelson Exp SPRITE (DECWRL) : + * from: Header: /sprite/src/kernel/mach/ds3100.md/RCS/machAsm.s, : + * v 9.2 90/01/29 18:00:39 shirriff Exp SPRITE (DECWRL) : + * from: Header: /sprite/src/kernel/vm/ds3100.md/vmPmaxAsm.s, : + * v 1.1 89/07/10 14:27:41 nelson Exp SPRITE (DECWRL) : + * : + * @(#)locore.s 8.5 (Berkeley) 1/4/94 : */ : : + : #include "opt_ddb.h" : : #include <machine/asm.h> : @@ -201,38 +320,31 @@ : LEAF(TLBMissVector) : .set noat : : - mfc0 k0, MIPS_COP_0_BAD_VADDR : + mfc0 k0, MIPS_COP_0_BAD_VADDR # k0=badaddr : + bltz k0, 5f # k0<0 -> 5f (kernel fault) : nop : - bltz k0, 5f : - nop : : +6: : /* Userland */ : -6: : - /* XXX We should switch stack elsewhere. */ : - subu sp, sp, TF_SIZE : - lw k1, PC_CURTHREAD(t2) : - lw k1, TD_KSTACK(k1) : - subu k1, k1, TF_SIZE : + lui k1, %hi(segtab_active) : + lw k1, %lo(segtab_active)(k1) : + srl k0, 20 : + andi k0, k0, 0xffc : + addu k1, k0, k1 : + lw k1, 0(k1) : : - la k0, 4f : - j exception_save_registers : - nop : + mfc0 k0, MIPS_COP_0_BAD_VADDR # k0=bad address (again) : + beq k1, zero, 7f # ==0 -- no page table : + srl k0, 10 # k0=VPN (aka va>>10) : : - move sp, k1 : - : -4: mfc0 a1, MIPS_COP_0_CAUSE : - mfc0 a2, MIPS_COP_0_BAD_VADDR : - jal trap : - move a0, k1 : + break # XXX: Not ready yet : : - move k1, sp : - jal exception_restore_registers : - nop : - : - addu sp, sp, TF_SIZE : eret : 5: : - j kernfault : + j KVATLBMiss : + nop : +7: j GenericException : + nop : : VEND(TLBMissVector) : .data : @@ -240,7 +352,8 @@ : .text : : : -kernfault: : +LEAF(KVATLBMiss) : + .set noat : /* : * Shift right logical to get a page index, but leaving : * enough bits to index an array of 64 bit values, plus : @@ -281,32 +394,17 @@ : : tlbp : : - mfc0 k1, MIPS_COP_0_BAD_VADDR : - srl k1, PAGE_SHIFT : - andi k1, k1, 1 : - bne k1, zero, 2f : + mfc0 k0, MIPS_COP_0_TLB_INDEX : + nop : + bltz k0, 2f : nop : : - mfc0 k1, MIPS_COP_0_TLB_LO0 : - b 3f : - nop : + tlbwi : + eret : 2: : - mfc0 k1, MIPS_COP_0_TLB_LO1 : - nop : -3: : - andi k1, 2 : - bne k1, zero, 4f : - nop : - /* : - * The PTE that triggered the fault is not valid. We need to do a : - * "real" page fault. : - * : - * XXX Maybe we should just ignore the fact that it's not valid here : - * and just let the TLB Invalid Exception (vector 0x80000180) handler : - * deal with it. : - */ : - j 6b : - nop : + tlbwr : + eret : + : : 4: : mfc0 k0, MIPS_COP_0_TLB_INDEX : @@ -322,6 +420,7 @@ : : eret : .set at : +END(KVATLBMiss) : : : LEAF(XTLBMissVector) :
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061016.162545.179961016.imp>