From owner-p4-projects@FreeBSD.ORG Tue Nov 28 15:31:59 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 7276916A412; Tue, 28 Nov 2006 15:31:59 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3628516A407 for ; Tue, 28 Nov 2006 15:31:59 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9587243CA6 for ; Tue, 28 Nov 2006 15:31:45 +0000 (GMT) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id kASFVmFt008257 for ; Tue, 28 Nov 2006 15:31:48 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id kASFVlMx008254 for perforce@freebsd.org; Tue, 28 Nov 2006 15:31:47 GMT (envelope-from gonzo@FreeBSD.org) Date: Tue, 28 Nov 2006 15:31:47 GMT Message-Id: <200611281531.kASFVlMx008254@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 110621 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: Tue, 28 Nov 2006 15:31:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=110621 Change 110621 by gonzo@gonzo_hq on 2006/11/28 15:31:06 o Use top of md_realstack area as kernelland stack pointer o Check for user mode in TLBMiss vector to jump to proper generic exception. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/exception.S#15 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/exception.S#15 (text+ko) ==== @@ -23,7 +23,7 @@ * 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#14 $ + * $P4: //depot/projects/mips2/src/sys/mips/mips/exception.S#15 $ */ /* $NetBSD: mipsX_subr.S,v 1.19 2005/12/11 12:18:09 christos Exp $ */ @@ -268,6 +268,21 @@ 1: .asciiz "ExceptionHandlerTable" .text + +/* + * This label should be right before GenericException to fall through + * the KSU_USER check + */ +slowfault: + .set noat + mfc0 k0, MIPS_COP_0_STATUS + nop + and k0, k0, MIPS_SR_KSU_USER + bne k0, zero, _C_LABEL(UserGenericException) + nop + /* fall through to GenericEception */ + .set at + LEAF(GenericException) .set noat @@ -437,7 +452,7 @@ eret tlbnotfound: - break + break ## TODO: change to panic call eret VEND(TLBInvalidVector) .data @@ -464,9 +479,9 @@ lw k1, 0(k1) mfc0 k0, MIPS_COP_0_BAD_VADDR # k0=bad address (again) + nop beq k1, zero, 7f # ==0 -- no page table srl k0, 10 # k0=VPN (aka va>>10) - nop andi k0, k0, 0xff8 # k0=page tab offset addu k1, k1, k0 # k1=pte address @@ -485,7 +500,9 @@ 5: j KVATLBMiss nop -7: j UserGenericException +7: + /* Use one jump instead of full check to reduce vector code size */ + j slowfault nop VEND(TLBMissVector) @@ -576,7 +593,6 @@ 1: .asciiz "64-bit TLB Miss Vector" .text - LEAF(VCED) .set noat la k0, panic @@ -612,7 +628,7 @@ .mask 0x80000000, -4 lw k1, pcpup lw k1, PC_CURTHREAD(k1) - lw k1, TD_MD_REALSTACK(k1) # load wired region + lw k1, TD_FRAME(k1) # load td_frame in wired region la k0, 1f j exception_save_registers nop @@ -678,7 +694,7 @@ .mask 0x80000000, -4 lw k1, pcpup lw k1, PC_CURTHREAD(k1) - lw k1, TD_MD_REALSTACK(k1) # load wired region + lw k1, TD_FRAME(k1) # load wired region la k0, 1f j exception_save_registers nop