1*3299Sschwartz /* 2*3299Sschwartz * CDDL HEADER START 3*3299Sschwartz * 4*3299Sschwartz * The contents of this file are subject to the terms of the 5*3299Sschwartz * Common Development and Distribution License (the "License"). 6*3299Sschwartz * You may not use this file except in compliance with the License. 7*3299Sschwartz * 8*3299Sschwartz * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*3299Sschwartz * or http://www.opensolaris.org/os/licensing. 10*3299Sschwartz * See the License for the specific language governing permissions 11*3299Sschwartz * and limitations under the License. 12*3299Sschwartz * 13*3299Sschwartz * When distributing Covered Code, include this CDDL HEADER in each 14*3299Sschwartz * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*3299Sschwartz * If applicable, add the following below this CDDL HEADER, with the 16*3299Sschwartz * fields enclosed by brackets "[]" replaced with your own identifying 17*3299Sschwartz * information: Portions Copyright [yyyy] [name of copyright owner] 18*3299Sschwartz * 19*3299Sschwartz * CDDL HEADER END 20*3299Sschwartz */ 21*3299Sschwartz 22*3299Sschwartz /* 23*3299Sschwartz * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24*3299Sschwartz * Use is subject to license terms. 25*3299Sschwartz */ 26*3299Sschwartz 27*3299Sschwartz #pragma ident "%Z%%M% %I% %E% SMI" 28*3299Sschwartz 29*3299Sschwartz /* 30*3299Sschwartz * Tables to drive the N2 PIU performance counter driver. 31*3299Sschwartz * 32*3299Sschwartz * Please see n2piupc-tables.h for an explanation of how the table is put 33*3299Sschwartz * together. 34*3299Sschwartz */ 35*3299Sschwartz 36*3299Sschwartz #include <sys/types.h> 37*3299Sschwartz #include <sys/kstat.h> 38*3299Sschwartz #include "n2piupc_tables.h" 39*3299Sschwartz #include "n2piupc.h" 40*3299Sschwartz #include "n2piupc_biterr.h" 41*3299Sschwartz 42*3299Sschwartz static n2piu_event_t imu_ctr_1_evts[] = { 43*3299Sschwartz { IMU01_S_EVT_NONE, IMU01_EVT_NONE }, 44*3299Sschwartz { IMU01_S_EVT_CLK, IMU01_EVT_CLK }, 45*3299Sschwartz { IMU01_S_EVT_TOTAL_MONDO, IMU01_EVT_TOTAL_MONDO }, 46*3299Sschwartz { IMU01_S_EVT_TOTAL_MSI, IMU01_EVT_TOTAL_MSI }, 47*3299Sschwartz { IMU01_S_EVT_NAK_MONDO, IMU01_EVT_NAK_MONDO }, 48*3299Sschwartz { IMU01_S_EVT_EQ_WR, IMU01_EVT_EQ_WR }, 49*3299Sschwartz { IMU01_S_EVT_EQ_MONDO, IMU01_EVT_EQ_MONDO }, 50*3299Sschwartz { COMMON_S_CLEAR_PIC, IMU_CTR_EVT_MASK } 51*3299Sschwartz }; 52*3299Sschwartz 53*3299Sschwartz static n2piu_event_t imu_ctr_0_evts[] = { 54*3299Sschwartz { IMU01_S_EVT_NONE, IMU01_EVT_NONE }, 55*3299Sschwartz { IMU01_S_EVT_CLK, IMU01_EVT_CLK }, 56*3299Sschwartz { IMU01_S_EVT_TOTAL_MONDO, IMU01_EVT_TOTAL_MONDO }, 57*3299Sschwartz { IMU01_S_EVT_TOTAL_MSI, IMU01_EVT_TOTAL_MSI }, 58*3299Sschwartz { IMU01_S_EVT_NAK_MONDO, IMU01_EVT_NAK_MONDO }, 59*3299Sschwartz { IMU01_S_EVT_EQ_WR, IMU01_EVT_EQ_WR }, 60*3299Sschwartz { IMU01_S_EVT_EQ_MONDO, IMU01_EVT_EQ_MONDO }, 61*3299Sschwartz { COMMON_S_CLEAR_PIC, IMU_CTR_EVT_MASK } 62*3299Sschwartz }; 63*3299Sschwartz 64*3299Sschwartz static n2piu_event_t mmu_ctr_1_evts[] = { 65*3299Sschwartz { MMU01_S_EVT_NONE, MMU01_EVT_NONE }, 66*3299Sschwartz { MMU01_S_EVT_CLK, MMU01_EVT_CLK }, 67*3299Sschwartz { MMU01_S_EVT_TRANS, MMU01_EVT_TRANS }, 68*3299Sschwartz { MMU01_S_EVT_STALL, MMU01_EVT_STALL }, 69*3299Sschwartz { MMU01_S_EVT_TRANS_MISS, MMU01_EVT_TRANS_MISS }, 70*3299Sschwartz { MMU01_S_EVT_TBLWLK_STALL, MMU01_EVT_TBLWLK_STALL }, 71*3299Sschwartz { MMU01_S_EVT_BYPASS_TRANSL, MMU01_EVT_BYPASS_TRANSL }, 72*3299Sschwartz { MMU01_S_EVT_TRANSL_TRANSL, MMU01_EVT_TRANSL_TRANSL }, 73*3299Sschwartz { MMU01_S_EVT_FLOW_CNTL_STALL, MMU01_EVT_FLOW_CNTL_STALL }, 74*3299Sschwartz { MMU01_S_EVT_FLUSH_CACHE_ENT, MMU01_EVT_FLUSH_CACHE_ENT }, 75*3299Sschwartz { COMMON_S_CLEAR_PIC, MMU_CTR_EVT_MASK } 76*3299Sschwartz }; 77*3299Sschwartz 78*3299Sschwartz static n2piu_event_t mmu_ctr_0_evts[] = { 79*3299Sschwartz { MMU01_S_EVT_NONE, MMU01_EVT_NONE }, 80*3299Sschwartz { MMU01_S_EVT_CLK, MMU01_EVT_CLK }, 81*3299Sschwartz { MMU01_S_EVT_TRANS, MMU01_EVT_TRANS }, 82*3299Sschwartz { MMU01_S_EVT_STALL, MMU01_EVT_STALL }, 83*3299Sschwartz { MMU01_S_EVT_TRANS_MISS, MMU01_EVT_TRANS_MISS }, 84*3299Sschwartz { MMU01_S_EVT_TBLWLK_STALL, MMU01_EVT_TBLWLK_STALL }, 85*3299Sschwartz { MMU01_S_EVT_BYPASS_TRANSL, MMU01_EVT_BYPASS_TRANSL }, 86*3299Sschwartz { MMU01_S_EVT_TRANSL_TRANSL, MMU01_EVT_TRANSL_TRANSL }, 87*3299Sschwartz { MMU01_S_EVT_FLOW_CNTL_STALL, MMU01_EVT_FLOW_CNTL_STALL }, 88*3299Sschwartz { MMU01_S_EVT_FLUSH_CACHE_ENT, MMU01_EVT_FLUSH_CACHE_ENT }, 89*3299Sschwartz { COMMON_S_CLEAR_PIC, MMU_CTR_EVT_MASK } 90*3299Sschwartz }; 91*3299Sschwartz 92*3299Sschwartz static n2piu_event_t peu_ctr_2_evts[] = { 93*3299Sschwartz { PEU2_S_EVT_NONE, PEU2_EVT_NONE }, 94*3299Sschwartz { PEU2_S_EVT_NONPST_CMPL_TIME, PEU2_EVT_NONPST_CMPL_TIME }, 95*3299Sschwartz { PEU2_S_EVT_XMIT_DATA, PEU2_EVT_XMIT_DATA }, 96*3299Sschwartz { PEU2_S_EVT_RCVD_DATA, PEU2_EVT_RCVD_DATA }, 97*3299Sschwartz { COMMON_S_CLEAR_PIC, PEU_CTR_2_EVT_MASK } 98*3299Sschwartz }; 99*3299Sschwartz 100*3299Sschwartz static n2piu_event_t peu_ctr_1_evts[] = { 101*3299Sschwartz { PEU01_S_EVT_NONE, PEU01_EVT_NONE }, 102*3299Sschwartz { PEU01_S_EVT_CLK, PEU01_EVT_CLK }, 103*3299Sschwartz { PEU01_S_EVT_COMPL, PEU01_EVT_COMPL }, 104*3299Sschwartz { PEU01_S_EVT_XMT_POST_CR_UNAV, PEU01_EVT_XMT_POST_CR_UNAV }, 105*3299Sschwartz { PEU01_S_EVT_XMT_NPOST_CR_UNAV, PEU01_EVT_XMT_NPOST_CR_UNAV }, 106*3299Sschwartz { PEU01_S_EVT_XMT_CMPL_CR_UNAV, PEU01_EVT_XMT_CMPL_CR_UNAV }, 107*3299Sschwartz { PEU01_S_EVT_XMT_ANY_CR_UNAV, PEU01_EVT_XMT_ANY_CR_UNAV }, 108*3299Sschwartz { PEU01_S_EVT_RETRY_CR_UNAV, PEU01_EVT_RETRY_CR_UNAV }, 109*3299Sschwartz { PEU01_S_EVT_MEMRD_PKT_RCVD, PEU01_EVT_MEMRD_PKT_RCVD }, 110*3299Sschwartz { PEU01_S_EVT_MEMWR_PKT_RCVD, PEU01_EVT_MEMWR_PKT_RCVD }, 111*3299Sschwartz { PEU01_S_EVT_RCV_CR_THRESH, PEU01_EVT_RCV_CR_THRESH }, 112*3299Sschwartz { PEU01_S_EVT_RCV_PST_HDR_CR_EXH, PEU01_EVT_RCV_PST_HDR_CR_EXH }, 113*3299Sschwartz { PEU01_S_EVT_RCV_PST_DA_CR_MPS, PEU01_EVT_RCV_PST_DA_CR_MPS }, 114*3299Sschwartz { PEU01_S_EVT_RCV_NPST_HDR_CR_EXH, PEU01_EVT_RCV_NPST_HDR_CR_EXH }, 115*3299Sschwartz { PEU01_S_EVT_RCVR_L0S, PEU01_EVT_RCVR_L0S }, 116*3299Sschwartz { PEU01_S_EVT_RCVR_L0S_TRANS, PEU01_EVT_RCVR_L0S_TRANS }, 117*3299Sschwartz { PEU01_S_EVT_XMTR_L0S, PEU01_EVT_XMTR_L0S }, 118*3299Sschwartz { PEU01_S_EVT_XMTR_L0S_TRANS, PEU01_EVT_XMTR_L0S_TRANS }, 119*3299Sschwartz { PEU01_S_EVT_RCVR_ERR, PEU01_EVT_RCVR_ERR }, 120*3299Sschwartz { PEU01_S_EVT_BAD_TLP, PEU01_EVT_BAD_TLP }, 121*3299Sschwartz { PEU01_S_EVT_BAD_DLLP, PEU01_EVT_BAD_DLLP }, 122*3299Sschwartz { PEU01_S_EVT_REPLAY_ROLLOVER, PEU01_EVT_REPLAY_ROLLOVER }, 123*3299Sschwartz { PEU01_S_EVT_REPLAY_TMO, PEU01_EVT_REPLAY_TMO }, 124*3299Sschwartz { COMMON_S_CLEAR_PIC, PEU_CTR_01_EVT_MASK } 125*3299Sschwartz }; 126*3299Sschwartz 127*3299Sschwartz static n2piu_event_t peu_ctr_0_evts[] = { 128*3299Sschwartz { PEU01_S_EVT_NONE, PEU01_EVT_NONE }, 129*3299Sschwartz { PEU01_S_EVT_CLK, PEU01_EVT_CLK }, 130*3299Sschwartz { PEU01_S_EVT_COMPL, PEU01_EVT_COMPL }, 131*3299Sschwartz { PEU01_S_EVT_XMT_POST_CR_UNAV, PEU01_EVT_XMT_POST_CR_UNAV }, 132*3299Sschwartz { PEU01_S_EVT_XMT_NPOST_CR_UNAV, PEU01_EVT_XMT_NPOST_CR_UNAV }, 133*3299Sschwartz { PEU01_S_EVT_XMT_CMPL_CR_UNAV, PEU01_EVT_XMT_CMPL_CR_UNAV }, 134*3299Sschwartz { PEU01_S_EVT_XMT_ANY_CR_UNAV, PEU01_EVT_XMT_ANY_CR_UNAV }, 135*3299Sschwartz { PEU01_S_EVT_RETRY_CR_UNAV, PEU01_EVT_RETRY_CR_UNAV }, 136*3299Sschwartz { PEU01_S_EVT_MEMRD_PKT_RCVD, PEU01_EVT_MEMRD_PKT_RCVD }, 137*3299Sschwartz { PEU01_S_EVT_MEMWR_PKT_RCVD, PEU01_EVT_MEMWR_PKT_RCVD }, 138*3299Sschwartz { PEU01_S_EVT_RCV_CR_THRESH, PEU01_EVT_RCV_CR_THRESH }, 139*3299Sschwartz { PEU01_S_EVT_RCV_PST_HDR_CR_EXH, PEU01_EVT_RCV_PST_HDR_CR_EXH }, 140*3299Sschwartz { PEU01_S_EVT_RCV_PST_DA_CR_MPS, PEU01_EVT_RCV_PST_DA_CR_MPS }, 141*3299Sschwartz { PEU01_S_EVT_RCV_NPST_HDR_CR_EXH, PEU01_EVT_RCV_NPST_HDR_CR_EXH }, 142*3299Sschwartz { PEU01_S_EVT_RCVR_L0S, PEU01_EVT_RCVR_L0S }, 143*3299Sschwartz { PEU01_S_EVT_RCVR_L0S_TRANS, PEU01_EVT_RCVR_L0S_TRANS }, 144*3299Sschwartz { PEU01_S_EVT_XMTR_L0S, PEU01_EVT_XMTR_L0S }, 145*3299Sschwartz { PEU01_S_EVT_XMTR_L0S_TRANS, PEU01_EVT_XMTR_L0S_TRANS }, 146*3299Sschwartz { PEU01_S_EVT_RCVR_ERR, PEU01_EVT_RCVR_ERR }, 147*3299Sschwartz { PEU01_S_EVT_BAD_TLP, PEU01_EVT_BAD_TLP }, 148*3299Sschwartz { PEU01_S_EVT_BAD_DLLP, PEU01_EVT_BAD_DLLP }, 149*3299Sschwartz { PEU01_S_EVT_REPLAY_ROLLOVER, PEU01_EVT_REPLAY_ROLLOVER }, 150*3299Sschwartz { PEU01_S_EVT_REPLAY_TMO, PEU01_EVT_REPLAY_TMO }, 151*3299Sschwartz { COMMON_S_CLEAR_PIC, PEU_CTR_01_EVT_MASK } 152*3299Sschwartz }; 153*3299Sschwartz 154*3299Sschwartz static n2piu_event_t bterr_ctr_3_evts[] = { 155*3299Sschwartz { BTERR3_S_EVT_NONE, BTERR3_EVT_ENC_NONE }, 156*3299Sschwartz { BTERR3_S_EVT_ENC_ALL, BTERR3_EVT_ENC_ALL }, 157*3299Sschwartz { BTERR3_S_EVT_ENC_LANE_0, BTERR3_EVT_ENC_LANE_0 }, 158*3299Sschwartz { BTERR3_S_EVT_ENC_LANE_1, BTERR3_EVT_ENC_LANE_1 }, 159*3299Sschwartz { BTERR3_S_EVT_ENC_LANE_2, BTERR3_EVT_ENC_LANE_2 }, 160*3299Sschwartz { BTERR3_S_EVT_ENC_LANE_3, BTERR3_EVT_ENC_LANE_3 }, 161*3299Sschwartz { BTERR3_S_EVT_ENC_LANE_4, BTERR3_EVT_ENC_LANE_4 }, 162*3299Sschwartz { BTERR3_S_EVT_ENC_LANE_5, BTERR3_EVT_ENC_LANE_5 }, 163*3299Sschwartz { BTERR3_S_EVT_ENC_LANE_6, BTERR3_EVT_ENC_LANE_6 }, 164*3299Sschwartz { BTERR3_S_EVT_ENC_LANE_7, BTERR3_EVT_ENC_LANE_7 }, 165*3299Sschwartz { COMMON_S_CLEAR_PIC, BTERR_CTR_3_EVT_MASK } 166*3299Sschwartz }; 167*3299Sschwartz 168*3299Sschwartz static n2piu_event_t bterr_ctr_2_evts[] = { 169*3299Sschwartz { BTERR2_S_EVT_PRE, BTERR2_EVT_PRE }, 170*3299Sschwartz { COMMON_S_CLEAR_PIC, NONPROG_DUMMY_MASK } 171*3299Sschwartz }; 172*3299Sschwartz 173*3299Sschwartz static n2piu_event_t bterr_ctr_1_evts[] = { 174*3299Sschwartz { BTERR1_S_EVT_BTLP, BTERR1_EVT_BTLP }, 175*3299Sschwartz { COMMON_S_CLEAR_PIC, NONPROG_DUMMY_MASK } 176*3299Sschwartz }; 177*3299Sschwartz 178*3299Sschwartz static n2piu_event_t bterr_ctr_0_evts[] = { 179*3299Sschwartz { BTERR0_S_EVT_RESET, BTERR0_EVT_RESET }, 180*3299Sschwartz { BTERR0_S_EVT_BDLLP, BTERR0_EVT_BDLLP }, 181*3299Sschwartz { COMMON_S_CLEAR_PIC, BTERR_CTR_0_EVT_MASK } 182*3299Sschwartz }; 183*3299Sschwartz 184*3299Sschwartz static n2piu_regsel_fld_t imu_regsel_flds[] = { 185*3299Sschwartz { imu_ctr_0_evts, NUM_EVTS(imu_ctr_0_evts), 186*3299Sschwartz IMU_CTR_EVT_MASK, IMU_CTR_0_EVT_OFF }, 187*3299Sschwartz { imu_ctr_1_evts, NUM_EVTS(imu_ctr_1_evts), 188*3299Sschwartz IMU_CTR_EVT_MASK, IMU_CTR_1_EVT_OFF } 189*3299Sschwartz }; 190*3299Sschwartz 191*3299Sschwartz static n2piu_regsel_fld_t mmu_regsel_flds[] = { 192*3299Sschwartz { mmu_ctr_0_evts, NUM_EVTS(mmu_ctr_0_evts), 193*3299Sschwartz MMU_CTR_EVT_MASK, MMU_CTR_0_EVT_OFF }, 194*3299Sschwartz { mmu_ctr_1_evts, NUM_EVTS(mmu_ctr_1_evts), 195*3299Sschwartz MMU_CTR_EVT_MASK, MMU_CTR_1_EVT_OFF } 196*3299Sschwartz }; 197*3299Sschwartz 198*3299Sschwartz static n2piu_regsel_fld_t peu_regsel_flds[] = { 199*3299Sschwartz { peu_ctr_0_evts, NUM_EVTS(peu_ctr_0_evts), 200*3299Sschwartz PEU_CTR_01_EVT_MASK, PEU_CTR_0_EVT_OFF }, 201*3299Sschwartz { peu_ctr_1_evts, NUM_EVTS(peu_ctr_1_evts), 202*3299Sschwartz PEU_CTR_01_EVT_MASK, PEU_CTR_1_EVT_OFF }, 203*3299Sschwartz { peu_ctr_2_evts, NUM_EVTS(peu_ctr_2_evts), 204*3299Sschwartz PEU_CTR_2_EVT_MASK, PEU_CTR_2_EVT_OFF } 205*3299Sschwartz }; 206*3299Sschwartz 207*3299Sschwartz static n2piu_regsel_fld_t bterr_regsel_flds[] = { 208*3299Sschwartz { bterr_ctr_0_evts, NUM_EVTS(bterr_ctr_0_evts), 209*3299Sschwartz BTERR_CTR_ENABLE_MASK, BTERR_CTR_ENABLE_OFF }, 210*3299Sschwartz { bterr_ctr_1_evts, NUM_EVTS(bterr_ctr_1_evts), 211*3299Sschwartz NONPROG_DUMMY_MASK, NONPROG_DUMMY_OFF }, 212*3299Sschwartz { bterr_ctr_2_evts, NUM_EVTS(bterr_ctr_2_evts), 213*3299Sschwartz NONPROG_DUMMY_MASK, NONPROG_DUMMY_OFF }, 214*3299Sschwartz { bterr_ctr_3_evts, NUM_EVTS(bterr_ctr_3_evts), 215*3299Sschwartz BTERR_CTR_3_EVT_MASK, BTERR_CTR_3_EVT_OFF } 216*3299Sschwartz }; 217*3299Sschwartz 218*3299Sschwartz static n2piu_regsel_t imu_regsel = { 219*3299Sschwartz HVIO_N2PIU_PERFREG_IMU_SEL, 220*3299Sschwartz imu_regsel_flds, 221*3299Sschwartz NUM_FLDS(imu_regsel_flds) 222*3299Sschwartz }; 223*3299Sschwartz 224*3299Sschwartz static n2piu_regsel_t mmu_regsel = { 225*3299Sschwartz HVIO_N2PIU_PERFREG_MMU_SEL, 226*3299Sschwartz mmu_regsel_flds, 227*3299Sschwartz NUM_FLDS(mmu_regsel_flds) 228*3299Sschwartz }; 229*3299Sschwartz 230*3299Sschwartz static n2piu_regsel_t peu_regsel = { 231*3299Sschwartz HVIO_N2PIU_PERFREG_PEU_SEL, 232*3299Sschwartz peu_regsel_flds, 233*3299Sschwartz NUM_FLDS(peu_regsel_flds) 234*3299Sschwartz }; 235*3299Sschwartz 236*3299Sschwartz static n2piu_regsel_t bit_err_regsel = { 237*3299Sschwartz SW_N2PIU_BITERR_SEL, 238*3299Sschwartz bterr_regsel_flds, 239*3299Sschwartz NUM_FLDS(bterr_regsel_flds) 240*3299Sschwartz }; 241*3299Sschwartz 242*3299Sschwartz /* reg off, reg size, field mask */ 243*3299Sschwartz static n2piu_cntr_t imu_cntrs[] = { 244*3299Sschwartz { HVIO_N2PIU_PERFREG_IMU_CNT0, FULL64BIT, 245*3299Sschwartz HVIO_N2PIU_PERFREG_IMU_CNT0, 0ULL}, 246*3299Sschwartz { HVIO_N2PIU_PERFREG_IMU_CNT1, FULL64BIT, 247*3299Sschwartz HVIO_N2PIU_PERFREG_IMU_CNT1, 0ULL} 248*3299Sschwartz }; 249*3299Sschwartz 250*3299Sschwartz static n2piu_cntr_t mmu_cntrs[] = { 251*3299Sschwartz { HVIO_N2PIU_PERFREG_MMU_CNT0, FULL64BIT, 252*3299Sschwartz HVIO_N2PIU_PERFREG_MMU_CNT0, 0ULL}, 253*3299Sschwartz { HVIO_N2PIU_PERFREG_MMU_CNT1, FULL64BIT, 254*3299Sschwartz HVIO_N2PIU_PERFREG_MMU_CNT1, 0ULL} 255*3299Sschwartz }; 256*3299Sschwartz 257*3299Sschwartz static n2piu_cntr_t peu_cntrs[] = { 258*3299Sschwartz { HVIO_N2PIU_PERFREG_PEU_CNT0, FULL64BIT, 259*3299Sschwartz HVIO_N2PIU_PERFREG_PEU_CNT0, 0ULL}, 260*3299Sschwartz { HVIO_N2PIU_PERFREG_PEU_CNT1, FULL64BIT, 261*3299Sschwartz HVIO_N2PIU_PERFREG_PEU_CNT1, 0ULL}, 262*3299Sschwartz { HVIO_N2PIU_PERFREG_PEU_CNT2, FULL64BIT, 263*3299Sschwartz HVIO_N2PIU_PERFREG_PEU_CNT2, 0ULL} 264*3299Sschwartz }; 265*3299Sschwartz 266*3299Sschwartz static n2piu_cntr_t bit_err_cntrs[] = { 267*3299Sschwartz { SW_N2PIU_BITERR_CNT1_DATA, BE1_BAD_DLLP_MASK, 268*3299Sschwartz SW_N2PIU_BITERR_CLR, BTERR_CTR_CLR}, 269*3299Sschwartz { SW_N2PIU_BITERR_CNT1_DATA, BE1_BAD_TLP_MASK, NO_REGISTER, 0}, 270*3299Sschwartz { SW_N2PIU_BITERR_CNT1_DATA, BE1_BAD_PRE_MASK, NO_REGISTER, 0}, 271*3299Sschwartz 272*3299Sschwartz /* Note: this register is a layered SW-implemented register. */ 273*3299Sschwartz { SW_N2PIU_BITERR_CNT2_DATA, BE2_8_10_MASK, NO_REGISTER, 0}, 274*3299Sschwartz }; 275*3299Sschwartz 276*3299Sschwartz static n2piu_grp_t imu_grp = { 277*3299Sschwartz "imu", 278*3299Sschwartz &imu_regsel, 279*3299Sschwartz imu_cntrs, 280*3299Sschwartz NUM_CTRS(imu_cntrs), 281*3299Sschwartz NULL /* Name kstats pointer, filled in at runtime. */ 282*3299Sschwartz }; 283*3299Sschwartz 284*3299Sschwartz static n2piu_grp_t mmu_grp = { 285*3299Sschwartz "mmu", 286*3299Sschwartz &mmu_regsel, 287*3299Sschwartz mmu_cntrs, 288*3299Sschwartz NUM_CTRS(mmu_cntrs), 289*3299Sschwartz NULL /* Name kstats pointer, filled in at runtime. */ 290*3299Sschwartz }; 291*3299Sschwartz 292*3299Sschwartz static n2piu_grp_t peu_grp = { 293*3299Sschwartz "peu", 294*3299Sschwartz &peu_regsel, 295*3299Sschwartz peu_cntrs, 296*3299Sschwartz NUM_CTRS(peu_cntrs), 297*3299Sschwartz NULL /* Name kstats pointer, filled in at runtime. */ 298*3299Sschwartz }; 299*3299Sschwartz 300*3299Sschwartz static n2piu_grp_t bit_err_grp = { 301*3299Sschwartz "bterr", 302*3299Sschwartz &bit_err_regsel, 303*3299Sschwartz bit_err_cntrs, 304*3299Sschwartz NUM_CTRS(bit_err_cntrs), 305*3299Sschwartz NULL /* Name kstats pointer, filled in at runtime. */ 306*3299Sschwartz }; 307*3299Sschwartz 308*3299Sschwartz n2piu_grp_t *leaf_grps[] = { 309*3299Sschwartz &imu_grp, 310*3299Sschwartz &mmu_grp, 311*3299Sschwartz &peu_grp, 312*3299Sschwartz &bit_err_grp, 313*3299Sschwartz NULL 314*3299Sschwartz }; 315