From owner-p4-projects@FreeBSD.ORG Thu Aug 11 07:37:04 2005 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 B4B2C16A421; Thu, 11 Aug 2005 07:37:03 +0000 (GMT) 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 83B3016A41F for ; Thu, 11 Aug 2005 07:37:03 +0000 (GMT) (envelope-from jmallett@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4FC4A43D45 for ; Thu, 11 Aug 2005 07:37:03 +0000 (GMT) (envelope-from jmallett@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 j7B7b3T1025497 for ; Thu, 11 Aug 2005 07:37:03 GMT (envelope-from jmallett@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j7B7b2pE025494 for perforce@freebsd.org; Thu, 11 Aug 2005 07:37:02 GMT (envelope-from jmallett@freebsd.org) Date: Thu, 11 Aug 2005 07:37:02 GMT Message-Id: <200508110737.j7B7b2pE025494@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jmallett@freebsd.org using -f From: Juli Mallett To: Perforce Change Reviews Cc: Subject: PERFORCE change 81824 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: Thu, 11 Aug 2005 07:37:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=81824 Change 81824 by jmallett@jmallett_beach on 2005/08/11 07:36:01 Random thought, keep k0 and k1 from being trashed by exception nonserialization, but I can't remember if that can actually happen. Affected files ... .. //depot/projects/mips/sys/mips/mips/exception.S#31 edit Differences ... ==== //depot/projects/mips/sys/mips/mips/exception.S#31 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2003-2004 Juli Mallett + * Copyright (c) 2003-2005 Juli Mallett * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/mips/sys/mips/mips/exception.S#30 $ + * $P4: //depot/projects/mips/sys/mips/mips/exception.S#31 $ */ #include "opt_ddb.h" @@ -92,6 +92,13 @@ */ LEAF(ExceptionVector) .set noat + /* + * Save k0 and k1. + */ + dsubu sp, sp, 16 + sd k0, 0(sp) + sd k1, 8(sp) + mfc0 k0, MIPS_COP_0_CAUSE and k0, MIPS_CR_EXC_CODE dsrl k0, MIPS_CR_EXC_CODE_SHIFT @@ -168,6 +175,14 @@ jal exception_restore_registers nop daddu sp, sp, TF_SIZE + + /* + * Also need to restore k0 and k1. + */ + ld k0, 0(sp) + ld k1, 8(sp) + daddu sp, sp, 16 + eret .set at END(GenericException) @@ -236,9 +251,23 @@ bltz k0, 1f nop + /* + * Also need to restore k0 and k1. + */ + ld k0, 0(sp) + ld k1, 8(sp) + daddu sp, sp, 16 + tlbwi eret 1: + /* + * Also need to restore k0 and k1. + */ + ld k0, 0(sp) + ld k1, 8(sp) + daddu sp, sp, 16 + tlbwr eret .set at @@ -254,6 +283,14 @@ dsll k0, 4 cache (CACHE_R4K_SD | CACHEOP_R4K_HIT_WB_INV), 0(k0) cache (CACHE_R4K_D | CACHEOP_R4K_HIT_INV), 0(k0) + + /* + * Also need to restore k0 and k1. + */ + ld k0, 0(sp) + ld k1, 8(sp) + daddu sp, sp, 16 + eret .set at END(VCED)