From owner-p4-projects@FreeBSD.ORG Sun Apr 9 00:32:50 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 1A79616A404; Sun, 9 Apr 2006 00:32:50 +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 D010116A402 for ; Sun, 9 Apr 2006 00:32:49 +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 94C8443D46 for ; Sun, 9 Apr 2006 00:32:49 +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 k390Wn54041747 for ; Sun, 9 Apr 2006 00:32:49 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k390WnL9041741 for perforce@freebsd.org; Sun, 9 Apr 2006 00:32:49 GMT (envelope-from kmacy@freebsd.org) Date: Sun, 9 Apr 2006 00:32:49 GMT Message-Id: <200604090032.k390WnL9041741@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 94828 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: Sun, 09 Apr 2006 00:32:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=94828 Change 94828 by kmacy@kmacy_storage:sun4v_rwbuf on 2006/04/09 00:31:52 save the pil the intr interrupted track resumable and non-resumable errors track the trap type in reserved traps Affected files ... .. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/exception.S#41 edit Differences ... ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/exception.S#41 (text+ko) ==== @@ -34,6 +34,7 @@ #include "opt_compat.h" #include "opt_ddb.h" +#include "opt_simulator.h" #include #include @@ -211,7 +212,7 @@ .endm .macro tl0_setup type - clr %g3 + rdpr %tt, %g3 sub %g0, 1, %g4 set trap, %g1 ba %xcc, tl0_trap @@ -233,11 +234,7 @@ .macro tl0_reserved count .rept \count -#if 0 tl0_gen T_RESERVED -#else - MAGIC_TRAP_ON;MAGIC_TRAP_ON;MAGIC_EXIT -#endif .align 32 .endr .endm @@ -272,9 +269,7 @@ .endm .macro insn_excptn - MAGIC_TRAP_ON - MAGIC_TRAP_ON - MAGIC_TRAP_ON;MAGIC_TRAP_ON;MAGIC_EXIT + tl0_gen T_RESERVED .align 32 .endm @@ -291,8 +286,13 @@ .endm .macro data_excptn - MAGIC_TRAP_ON - MAGIC_TRAP_ON;MAGIC_TRAP_ON;MAGIC_EXIT + GET_MMFSA_SCRATCH(%g1) + mov MMFSA_D_ADDR, %g2 + ldxa [%g1 + %g2]ASI_REAL, %g3 + sub %g0, 1, %g4 + set trap, %g1 + ba %xcc, tl0_trap + mov T_DATA_EXCEPTION, %g2 .align 32 .endm @@ -319,7 +319,15 @@ .endm .macro tl0_align - MAGIC_TRAP_ON;MAGIC_TRAP_ON;MAGIC_EXIT + tl0_gen T_RESERVED +#if 0 + GET_MMFSA_SCRATCH(%g1) + mov MMFSA_D_ADDR, %g3 + mov MMFSA_D_CTX, %g7 + ldxa [%g1 + %g3]ASI_REAL, %g5 + ba,pt %xcc, tsb_miss_handler + mov T_DATA_PROTECTION, %g3 +#endif .align 32 .endm @@ -334,14 +342,20 @@ .endm .macro resumable_error - MAGIC_TRAP_ON - MAGIC_EXIT + clr %g3 + sub %g0, 1, %g4 + set trap, %g1 + ba %xcc, tl0_trap + mov T_RESUMABLE_ERROR, %g2 .align 32 .endm .macro nonresumable_error - MAGIC_TRAP_ON - MAGIC_EXIT + clr %g3 + sub %g0, 1, %g4 + set trap, %g1 + ba %xcc, tl0_trap + mov T_NONRESUMABLE_ERROR, %g2 .align 32 .endm @@ -493,7 +507,6 @@ ba,a,pt %xcc, fault_64bit_so1 nop .align 128 - .endm .macro spill_mixed @@ -509,9 +522,7 @@ .endm .macro tl1_align - MAGIC_TRAP_ON - MAGIC_TRAP_ON - MAGIC_EXIT + ba,a,pt %xcc, tl1_trap .align 32 .endm @@ -1071,7 +1082,6 @@ wrpr %g0, %g1, %cleanwin rdpr %cwp, %g1 wrpr %g1, %g6, %tstate -! MAGIC_TRAP_ON retry END(user_rtt) END(utl0) @@ -1122,7 +1132,6 @@ wrpr %g0, %l0, %pil #endif GET_PCPU_SCRATCH - /* simulator incorrectly exits if tl != gl */ ldx [PCPU(CURTHREAD)], %l0 ldx [%l0 + TD_MD + MD_SAVED_PIL], %l0 wrpr %g0, %l0, %pil @@ -1166,7 +1175,7 @@ GET_PCPU_SCRATCH set ktl0, %g6 save %sp, -(CCFSZ + TF_SIZEOF), %sp - + or %g2, T_KERNEL, %g2 ! if the kwbuf is full we need to save to the stack now @@ -1186,13 +1195,14 @@ ! %g2=level %g1=mask ENTRY(tl0_intr) - wrpr %g4, 0, %pil wr %g1, 0, %clear_softint SET(intr_handlers, %g7, %g6) sllx %g4, IH_SHIFT, %g7 ldx [%g6 + %g7], %g1 ! pointer to interrupt handler - - + rdpr %pil, %g5 ! interrupted pil + wrpr %g4, 0, %pil + mov %g5, %g4 + ! %g1 pc of trap handler ! %g2, %g3 args of trap handler ! %g4 desired pil @@ -1284,6 +1294,7 @@ wrpr %g0, %g4, %pil 1: wrpr %g0, %g6, %tnpc + MAGIC_TRAP_OFF rdpr %cwp, %l0 set TSTATE_KERNEL, %l1 wrpr %l1, %l0, %tstate @@ -1328,7 +1339,6 @@ ba,pt %xcc, 4f nop 2: -! MAGIC_TRAP_ON cmp %g6, %g0 ! kernel? be,pn %xcc, 3f nop @@ -1348,13 +1358,6 @@ ! %g4 == fault type %g5 == fault addr %g6 == tag ! XXX only handle normal miss for now (look at fault type in the future) -#ifdef PMAP_DEBUG - cmp %g3, T_INSTRUCTION_MISS - bne,pn %xcc, 17f - nop -! MAGIC_TRAP_ON ! enable debugging for instruction misses -17: -#endif tsb_miss_compute_hash_addr: sethi %hi(PAGE_SIZE), %g7