From owner-p4-projects@FreeBSD.ORG Mon May 8 00:32:00 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 3CEC416A407; Mon, 8 May 2006 00:32:00 +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 F379716A405 for ; Mon, 8 May 2006 00:31:59 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id BCA8B43D45 for ; Mon, 8 May 2006 00:31:59 +0000 (GMT) (envelope-from kmacy@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 k480VxEh036063 for ; Mon, 8 May 2006 00:31:59 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k480Vxba036060 for perforce@freebsd.org; Mon, 8 May 2006 00:31:59 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 8 May 2006 00:31:59 GMT Message-Id: <200605080031.k480Vxba036060@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 96809 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, 08 May 2006 00:32:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=96809 Change 96809 by kmacy@kmacy_storage:sun4v_rwbuf on 2006/05/08 00:31:23 re-load floating point registers on fp not available trap if bit is set in PCB Affected files ... .. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/exception.S#49 edit Differences ... ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/exception.S#49 (text+ko) ==== @@ -591,35 +591,36 @@ .endm .macro tl0_fp_restore - ba,a %xcc, tl0_fp_restore - nop + GET_PCB(PCB_REG) ! 3 instructions + ldx [%g6 + PCB_FLAGS], %g1 + ba,pt %xcc, tl0_fp_restore + wr %g0, FPRS_FEF, %fprs .align 32 .endm .macro tl0_fp_enable - wr %g0, FPRS_FEF, %fprs + GET_PCB(PCB_REG) ! 3 instructions + ldx [PCB_REG + PCB_FLAGS], %g1 + andcc %g1, PCB_FEF, %g0 + bnz,pt %xcc, tl0_fp_restore + wr %g0, FPRS_FEF, %fprs retry .align 32 .endm ENTRY(tl0_fp_restore) - GET_PCB(PCB_REG) - - ldx [%g6 + PCB_FLAGS], %g1 andn %g1, PCB_FEF, %g1 stx %g1, [%g6 + PCB_FLAGS] - - wr %g0, FPRS_FEF, %fprs - wr %g0, ASI_BLK_S, %asi - ldda [PCB_REG + PCB_UFP + (0 * 64)] %asi, %f0 - ldda [PCB_REG + PCB_UFP + (1 * 64)] %asi, %f16 - ldda [PCB_REG + PCB_UFP + (2 * 64)] %asi, %f32 - ldda [PCB_REG + PCB_UFP + (3 * 64)] %asi, %f48 - membar #Sync - done + + ldd [PCB_REG + PCB_UFP + (0 * 64)], %f0 + ldd [PCB_REG + PCB_UFP + (1 * 64)], %f16 + ldd [PCB_REG + PCB_UFP + (2 * 64)], %f32 + ldd [PCB_REG + PCB_UFP + (3 * 64)], %f48 + retry END(tl0_fp_restore) .macro tl1_insn_excptn + nop .align 32 .endm