144961713Sgirish /* 244961713Sgirish * CDDL HEADER START 344961713Sgirish * 444961713Sgirish * The contents of this file are subject to the terms of the 544961713Sgirish * Common Development and Distribution License (the "License"). 644961713Sgirish * You may not use this file except in compliance with the License. 744961713Sgirish * 844961713Sgirish * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 944961713Sgirish * or http://www.opensolaris.org/os/licensing. 1044961713Sgirish * See the License for the specific language governing permissions 1144961713Sgirish * and limitations under the License. 1244961713Sgirish * 1344961713Sgirish * When distributing Covered Code, include this CDDL HEADER in each 1444961713Sgirish * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1544961713Sgirish * If applicable, add the following below this CDDL HEADER, with the 1644961713Sgirish * fields enclosed by brackets "[]" replaced with your own identifying 1744961713Sgirish * information: Portions Copyright [yyyy] [name of copyright owner] 1844961713Sgirish * 1944961713Sgirish * CDDL HEADER END 2044961713Sgirish */ 2144961713Sgirish /* 22*4df55fdeSJanie Lu * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 2344961713Sgirish * Use is subject to license terms. 2444961713Sgirish */ 2544961713Sgirish 2644961713Sgirish #ifndef _SYS_NIAGARA2REGS_H 2744961713Sgirish #define _SYS_NIAGARA2REGS_H 2844961713Sgirish 2944961713Sgirish #ifdef __cplusplus 3044961713Sgirish extern "C" { 3144961713Sgirish #endif 3244961713Sgirish 3344961713Sgirish #define MB(n) ((n) * 1024 * 1024) 3444961713Sgirish 3544961713Sgirish #define L2CACHE_SIZE MB(4) 3644961713Sgirish #define L2CACHE_LINESIZE 64 3744961713Sgirish #define L2CACHE_ASSOCIATIVITY 16 3844961713Sgirish 3944961713Sgirish #define NIAGARA2_HSVC_MAJOR 1 4044961713Sgirish #define NIAGARA2_HSVC_MINOR 0 4144961713Sgirish 4259ac0c16Sdavemq #define VFALLS_HSVC_MAJOR 1 4359ac0c16Sdavemq #define VFALLS_HSVC_MINOR 0 4459ac0c16Sdavemq 45*4df55fdeSJanie Lu #define KT_HSVC_MAJOR 1 46*4df55fdeSJanie Lu #define KT_HSVC_MINOR 0 47*4df55fdeSJanie Lu 48*4df55fdeSJanie Lu #ifdef KT_IMPL 49*4df55fdeSJanie Lu 50*4df55fdeSJanie Lu /* Sample PIC overflow range is -2 to -1 */ 51*4df55fdeSJanie Lu #define SAMPLE_PIC_IN_OV_RANGE(x) (((uint32_t)x >= 0xfffffffe) ? 1 : 0) 52*4df55fdeSJanie Lu 53*4df55fdeSJanie Lu #endif 54*4df55fdeSJanie Lu 5544961713Sgirish /* PIC overflow range is -16 to -1 */ 5644961713Sgirish #define PIC_IN_OV_RANGE(x) (((uint32_t)x >= 0xfffffff0) ? 1 : 0) 5744961713Sgirish 5844961713Sgirish /* 59*4df55fdeSJanie Lu * SPARC Performance Instrumentation Counter 6044961713Sgirish */ 6144961713Sgirish #define PIC0_MASK (((uint64_t)1 << 32) - 1) /* pic0 in bits 31:0 */ 6244961713Sgirish #define PIC1_SHIFT 32 /* pic1 in bits 64:32 */ 6344961713Sgirish 6444961713Sgirish /* 65*4df55fdeSJanie Lu * SPARC Performance Control Register 6644961713Sgirish */ 67*4df55fdeSJanie Lu #define CPC_PCR_PRIV_SHIFT 0 68*4df55fdeSJanie Lu #define CPC_PCR_ST_SHIFT 1 69*4df55fdeSJanie Lu #define CPC_PCR_UT_SHIFT 2 708d4e547dSae112802 71*4df55fdeSJanie Lu #define CPC_PCR_HT_SHIFT 3 72*4df55fdeSJanie Lu #define CPC_PCR_HT (1ull << CPC_PCR_HT_SHIFT) 738d4e547dSae112802 74*4df55fdeSJanie Lu #define CPC_PCR_TOE0_SHIFT 4 75*4df55fdeSJanie Lu #define CPC_PCR_TOE1_SHIFT 5 76*4df55fdeSJanie Lu #define CPC_PCR_TOE0 (1ull << CPC_PCR_TOE0_SHIFT) 77*4df55fdeSJanie Lu #define CPC_PCR_TOE1 (1ull << CPC_PCR_TOE1_SHIFT) 7844961713Sgirish 79*4df55fdeSJanie Lu #define CPC_PCR_PIC0_SHIFT 6 80*4df55fdeSJanie Lu #define CPC_PCR_PIC1_SHIFT 19 81*4df55fdeSJanie Lu #define CPC_PCR_PIC0_MASK UINT64_C(0xfff) 82*4df55fdeSJanie Lu #define CPC_PCR_PIC1_MASK UINT64_C(0xfff) 8344961713Sgirish 84*4df55fdeSJanie Lu #define CPC_PCR_OV0_SHIFT 18 85*4df55fdeSJanie Lu #define CPC_PCR_OV1_SHIFT 30 86*4df55fdeSJanie Lu #define CPC_PCR_OV0_MASK UINT64_C(0x40000) 87*4df55fdeSJanie Lu #define CPC_PCR_OV1_MASK UINT64_C(0x80000000) 888d4e547dSae112802 89*4df55fdeSJanie Lu #if defined(KT_IMPL) 90*4df55fdeSJanie Lu 91*4df55fdeSJanie Lu #define CPC_PCR_SAMPLE_MODE_SHIFT 32 92*4df55fdeSJanie Lu #define CPC_PCR_SAMPLE_MODE_MASK (1ull << CPC_PCR_SAMPLE_MODE_SHIFT) 93*4df55fdeSJanie Lu 94*4df55fdeSJanie Lu #endif 95*4df55fdeSJanie Lu 96*4df55fdeSJanie Lu #define CPC_PCR_HOLDOV0_SHIFT 62 97*4df55fdeSJanie Lu #define CPC_PCR_HOLDOV1_SHIFT 63 98*4df55fdeSJanie Lu #define CPC_PCR_HOLDOV0 (1ull << CPC_PCR_HOLDOV0_SHIFT) 99*4df55fdeSJanie Lu #define CPC_PCR_HOLDOV1 (1ull << CPC_PCR_HOLDOV1_SHIFT) 10044961713Sgirish 10144961713Sgirish /* 10244961713Sgirish * Hypervisor FAST_TRAP API function numbers to get/set DRAM 10359ac0c16Sdavemq * performance counters for Niagara2 10444961713Sgirish */ 10544961713Sgirish #define HV_NIAGARA2_GETPERF 0x104 10644961713Sgirish #define HV_NIAGARA2_SETPERF 0x105 10744961713Sgirish 10844961713Sgirish /* 10959ac0c16Sdavemq * Hypervisor FAST_TRAP API function numbers to get/set DRAM 11059ac0c16Sdavemq * performance counters for Victoria Falls 11159ac0c16Sdavemq */ 11259ac0c16Sdavemq #define HV_VFALLS_GETPERF 0x106 11359ac0c16Sdavemq #define HV_VFALLS_SETPERF 0x107 11459ac0c16Sdavemq 11559ac0c16Sdavemq /* 116*4df55fdeSJanie Lu * Hypervisor FAST_TRAP API function numbers to get/set DRAM 117*4df55fdeSJanie Lu * performance counters for KT 11844961713Sgirish */ 119*4df55fdeSJanie Lu #define HV_KT_GETPERF 0x122 120*4df55fdeSJanie Lu #define HV_KT_SETPERF 0x123 12144961713Sgirish 122*4df55fdeSJanie Lu #if defined(KT_IMPL) 123*4df55fdeSJanie Lu 124*4df55fdeSJanie Lu /* 125*4df55fdeSJanie Lu * KT DRAM performance counters 126*4df55fdeSJanie Lu */ 127*4df55fdeSJanie Lu #define DRAM_PIC0_SEL_SHIFT 0x0 128*4df55fdeSJanie Lu #define DRAM_PIC1_SEL_SHIFT 0x4 129*4df55fdeSJanie Lu 130*4df55fdeSJanie Lu #define DRAM_PIC0_SHIFT 0x0 131*4df55fdeSJanie Lu #define DRAM_PIC0_MASK 0x7fffffff 132*4df55fdeSJanie Lu #define DRAM_PIC1_SHIFT 0x20 133*4df55fdeSJanie Lu #define DRAM_PIC1_MASK 0x7fffffff 134*4df55fdeSJanie Lu 135*4df55fdeSJanie Lu #else 136*4df55fdeSJanie Lu 137*4df55fdeSJanie Lu /* 138*4df55fdeSJanie Lu * Niagara2 and VF DRAM performance counters 139*4df55fdeSJanie Lu */ 140*4df55fdeSJanie Lu #define DRAM_PIC0_SEL_SHIFT 0x4 141*4df55fdeSJanie Lu #define DRAM_PIC1_SEL_SHIFT 0x0 142*4df55fdeSJanie Lu 143*4df55fdeSJanie Lu #define DRAM_PIC0_SHIFT 0x20 144*4df55fdeSJanie Lu #define DRAM_PIC0_MASK 0x7fffffff 145*4df55fdeSJanie Lu #define DRAM_PIC1_SHIFT 0x0 146*4df55fdeSJanie Lu #define DRAM_PIC1_MASK 0x7fffffff 147*4df55fdeSJanie Lu 148*4df55fdeSJanie Lu #endif 14944961713Sgirish 15059ac0c16Sdavemq #if defined(NIAGARA2_IMPL) 15144961713Sgirish /* 15244961713Sgirish * SPARC/DRAM performance counter register numbers for HV_NIAGARA2_GETPERF 15359ac0c16Sdavemq * and HV_NIAGARA2_SETPERF for Niagara2 15444961713Sgirish */ 155*4df55fdeSJanie Lu #define DRAM_BANKS 0x4 15664cfc8edSsvemuri 157*4df55fdeSJanie Lu #define HV_SPARC_CTL 0x0 158*4df55fdeSJanie Lu #define HV_DRAM_CTL0 0x1 159*4df55fdeSJanie Lu #define HV_DRAM_COUNT0 0x2 160*4df55fdeSJanie Lu #define HV_DRAM_CTL1 0x3 161*4df55fdeSJanie Lu #define HV_DRAM_COUNT1 0x4 162*4df55fdeSJanie Lu #define HV_DRAM_CTL2 0x5 163*4df55fdeSJanie Lu #define HV_DRAM_COUNT2 0x6 164*4df55fdeSJanie Lu #define HV_DRAM_CTL3 0x7 165*4df55fdeSJanie Lu #define HV_DRAM_COUNT3 0x8 16644961713Sgirish 16759ac0c16Sdavemq #elif defined(VFALLS_IMPL) 16859ac0c16Sdavemq /* 16959ac0c16Sdavemq * SPARC/DRAM performance counter register numbers for HV_VFALLS_GETPERF 17059ac0c16Sdavemq * and HV_VFALLS_SETPERF for Victoria Falls 17164cfc8edSsvemuri * Support for 4-node configuration 17259ac0c16Sdavemq */ 173*4df55fdeSJanie Lu #define DRAM_BANKS 0x8 17464cfc8edSsvemuri 175*4df55fdeSJanie Lu #define HV_SPARC_CTL 0x0 176*4df55fdeSJanie Lu #define HV_L2_CTL 0x1 177*4df55fdeSJanie Lu #define HV_DRAM_CTL0 0x2 178*4df55fdeSJanie Lu #define HV_DRAM_COUNT0 0x3 179*4df55fdeSJanie Lu #define HV_DRAM_CTL1 0x4 180*4df55fdeSJanie Lu #define HV_DRAM_COUNT1 0x5 181*4df55fdeSJanie Lu #define HV_DRAM_CTL2 0x6 182*4df55fdeSJanie Lu #define HV_DRAM_COUNT2 0x7 183*4df55fdeSJanie Lu #define HV_DRAM_CTL3 0x8 184*4df55fdeSJanie Lu #define HV_DRAM_COUNT3 0x9 185*4df55fdeSJanie Lu #define HV_DRAM_CTL4 0xa 186*4df55fdeSJanie Lu #define HV_DRAM_COUNT4 0xb 187*4df55fdeSJanie Lu #define HV_DRAM_CTL5 0xc 188*4df55fdeSJanie Lu #define HV_DRAM_COUNT5 0xd 189*4df55fdeSJanie Lu #define HV_DRAM_CTL6 0xe 190*4df55fdeSJanie Lu #define HV_DRAM_COUNT6 0xf 191*4df55fdeSJanie Lu #define HV_DRAM_CTL7 0x10 192*4df55fdeSJanie Lu #define HV_DRAM_COUNT7 0x11 193*4df55fdeSJanie Lu 194*4df55fdeSJanie Lu #define L2_CTL_MASK 0x3 195*4df55fdeSJanie Lu #define SL3_MASK 0x300 196*4df55fdeSJanie Lu 197*4df55fdeSJanie Lu #elif defined(KT_IMPL) 198*4df55fdeSJanie Lu /* 199*4df55fdeSJanie Lu * SPARC/DRAM performance counter register numbers for HV_KT_GETPERF 200*4df55fdeSJanie Lu * and HV_KT_SETPERF for KT 201*4df55fdeSJanie Lu * Support for 4-node configuration 202*4df55fdeSJanie Lu */ 203*4df55fdeSJanie Lu 204*4df55fdeSJanie Lu #define DRAM_BANKS 0x8 205*4df55fdeSJanie Lu 206*4df55fdeSJanie Lu #define HV_SPARC_CTL 0x0 207*4df55fdeSJanie Lu #define HV_L2_CTL 0x1 208*4df55fdeSJanie Lu #define HV_DRAM_CTL0 0x2 209*4df55fdeSJanie Lu #define HV_DRAM_COUNT0 0x3 210*4df55fdeSJanie Lu #define HV_DRAM_CTL1 0x5 211*4df55fdeSJanie Lu #define HV_DRAM_COUNT1 0x6 212*4df55fdeSJanie Lu #define HV_DRAM_CTL2 0x8 213*4df55fdeSJanie Lu #define HV_DRAM_COUNT2 0x9 214*4df55fdeSJanie Lu #define HV_DRAM_CTL3 0xb 215*4df55fdeSJanie Lu #define HV_DRAM_COUNT3 0xc 216*4df55fdeSJanie Lu #define HV_DRAM_CTL4 0xe 217*4df55fdeSJanie Lu #define HV_DRAM_COUNT4 0xf 218*4df55fdeSJanie Lu #define HV_DRAM_CTL5 0x11 219*4df55fdeSJanie Lu #define HV_DRAM_COUNT5 0x12 220*4df55fdeSJanie Lu #define HV_DRAM_CTL6 0x14 221*4df55fdeSJanie Lu #define HV_DRAM_COUNT6 0x15 222*4df55fdeSJanie Lu #define HV_DRAM_CTL7 0x17 223*4df55fdeSJanie Lu #define HV_DRAM_COUNT7 0x18 224*4df55fdeSJanie Lu 225*4df55fdeSJanie Lu #define L2_CTL_MASK 0x3 226*4df55fdeSJanie Lu #define SL3_MASK 0x300 227*4df55fdeSJanie Lu 228*4df55fdeSJanie Lu #endif 229*4df55fdeSJanie Lu 230*4df55fdeSJanie Lu #ifdef VFALLS_IMPL 231*4df55fdeSJanie Lu /* 232*4df55fdeSJanie Lu * Performance counters for Zambezi. Zambezi is only supported with 233*4df55fdeSJanie Lu * Victoria Falls (UltraSPARC-T2+). 234*4df55fdeSJanie Lu */ 23564cfc8edSsvemuri 23664cfc8edSsvemuri #define ZAMBEZI_PIC0_SEL_SHIFT 0x0 23764cfc8edSsvemuri #define ZAMBEZI_PIC1_SEL_SHIFT 0x8 23864cfc8edSsvemuri 23964cfc8edSsvemuri #define ZAMBEZI_LPU_COUNTERS 0x10 24064cfc8edSsvemuri #define ZAMBEZI_GPD_COUNTERS 0x4 24164cfc8edSsvemuri #define ZAMBEZI_ASU_COUNTERS 0x4 24264cfc8edSsvemuri 24364cfc8edSsvemuri #define HV_ZAM0_LPU_A_PCR 0x12 24464cfc8edSsvemuri #define HV_ZAM0_LPU_A_PIC0 0x13 24564cfc8edSsvemuri #define HV_ZAM0_LPU_A_PIC1 0x14 24664cfc8edSsvemuri #define HV_ZAM0_LPU_B_PCR 0x15 24764cfc8edSsvemuri #define HV_ZAM0_LPU_B_PIC0 0x16 24864cfc8edSsvemuri #define HV_ZAM0_LPU_B_PIC1 0x17 24964cfc8edSsvemuri #define HV_ZAM0_LPU_C_PCR 0x18 25064cfc8edSsvemuri #define HV_ZAM0_LPU_C_PIC0 0x19 25164cfc8edSsvemuri #define HV_ZAM0_LPU_C_PIC1 0x1a 25264cfc8edSsvemuri #define HV_ZAM0_LPU_D_PCR 0x1b 25364cfc8edSsvemuri #define HV_ZAM0_LPU_D_PIC0 0x1c 25464cfc8edSsvemuri #define HV_ZAM0_LPU_D_PIC1 0x1d 25564cfc8edSsvemuri #define HV_ZAM0_GPD_PCR 0x1e 25664cfc8edSsvemuri #define HV_ZAM0_GPD_PIC0 0x1f 25764cfc8edSsvemuri #define HV_ZAM0_GPD_PIC1 0x20 25864cfc8edSsvemuri #define HV_ZAM0_ASU_PCR 0x21 25964cfc8edSsvemuri #define HV_ZAM0_ASU_PIC0 0x22 26064cfc8edSsvemuri #define HV_ZAM0_ASU_PIC1 0x23 26164cfc8edSsvemuri 26264cfc8edSsvemuri #define HV_ZAM1_LPU_A_PCR 0x24 26364cfc8edSsvemuri #define HV_ZAM1_LPU_A_PIC0 0x25 26464cfc8edSsvemuri #define HV_ZAM1_LPU_A_PIC1 0x26 26564cfc8edSsvemuri #define HV_ZAM1_LPU_B_PCR 0x27 26664cfc8edSsvemuri #define HV_ZAM1_LPU_B_PIC0 0x28 26764cfc8edSsvemuri #define HV_ZAM1_LPU_B_PIC1 0x29 26864cfc8edSsvemuri #define HV_ZAM1_LPU_C_PCR 0x2a 26964cfc8edSsvemuri #define HV_ZAM1_LPU_C_PIC0 0x2b 27064cfc8edSsvemuri #define HV_ZAM1_LPU_C_PIC1 0x2c 27164cfc8edSsvemuri #define HV_ZAM1_LPU_D_PCR 0x2d 27264cfc8edSsvemuri #define HV_ZAM1_LPU_D_PIC0 0x2e 27364cfc8edSsvemuri #define HV_ZAM1_LPU_D_PIC1 0x2f 27464cfc8edSsvemuri #define HV_ZAM1_GPD_PCR 0x30 27564cfc8edSsvemuri #define HV_ZAM1_GPD_PIC0 0x31 27664cfc8edSsvemuri #define HV_ZAM1_GPD_PIC1 0x32 27764cfc8edSsvemuri #define HV_ZAM1_ASU_PCR 0x33 27864cfc8edSsvemuri #define HV_ZAM1_ASU_PIC0 0x34 27964cfc8edSsvemuri #define HV_ZAM1_ASU_PIC1 0x35 28064cfc8edSsvemuri 28164cfc8edSsvemuri #define HV_ZAM2_LPU_A_PCR 0x36 28264cfc8edSsvemuri #define HV_ZAM2_LPU_A_PIC0 0x37 28364cfc8edSsvemuri #define HV_ZAM2_LPU_A_PIC1 0x38 28464cfc8edSsvemuri #define HV_ZAM2_LPU_B_PCR 0x39 28564cfc8edSsvemuri #define HV_ZAM2_LPU_B_PIC0 0x3a 28664cfc8edSsvemuri #define HV_ZAM2_LPU_B_PIC1 0x3b 28764cfc8edSsvemuri #define HV_ZAM2_LPU_C_PCR 0x3c 28864cfc8edSsvemuri #define HV_ZAM2_LPU_C_PIC0 0x3d 28964cfc8edSsvemuri #define HV_ZAM2_LPU_C_PIC1 0x3e 29064cfc8edSsvemuri #define HV_ZAM2_LPU_D_PCR 0x3f 29164cfc8edSsvemuri #define HV_ZAM2_LPU_D_PIC0 0x40 29264cfc8edSsvemuri #define HV_ZAM2_LPU_D_PIC1 0x41 29364cfc8edSsvemuri #define HV_ZAM2_GPD_PCR 0x42 29464cfc8edSsvemuri #define HV_ZAM2_GPD_PIC0 0x43 29564cfc8edSsvemuri #define HV_ZAM2_GPD_PIC1 0x44 29664cfc8edSsvemuri #define HV_ZAM2_ASU_PCR 0x45 29764cfc8edSsvemuri #define HV_ZAM2_ASU_PIC0 0x46 29864cfc8edSsvemuri #define HV_ZAM2_ASU_PIC1 0x47 29964cfc8edSsvemuri 30064cfc8edSsvemuri #define HV_ZAM3_LPU_A_PCR 0x48 30164cfc8edSsvemuri #define HV_ZAM3_LPU_A_PIC0 0x49 30264cfc8edSsvemuri #define HV_ZAM3_LPU_A_PIC1 0x4a 30364cfc8edSsvemuri #define HV_ZAM3_LPU_B_PCR 0x4b 30464cfc8edSsvemuri #define HV_ZAM3_LPU_B_PIC0 0x4c 30564cfc8edSsvemuri #define HV_ZAM3_LPU_B_PIC1 0x4d 30664cfc8edSsvemuri #define HV_ZAM3_LPU_C_PCR 0x4e 30764cfc8edSsvemuri #define HV_ZAM3_LPU_C_PIC0 0x4f 30864cfc8edSsvemuri #define HV_ZAM3_LPU_C_PIC1 0x50 30964cfc8edSsvemuri #define HV_ZAM3_LPU_D_PCR 0x51 31064cfc8edSsvemuri #define HV_ZAM3_LPU_D_PIC0 0x52 31164cfc8edSsvemuri #define HV_ZAM3_LPU_D_PIC1 0x53 31264cfc8edSsvemuri #define HV_ZAM3_GPD_PCR 0x54 31364cfc8edSsvemuri #define HV_ZAM3_GPD_PIC0 0x55 31464cfc8edSsvemuri #define HV_ZAM3_GPD_PIC1 0x56 31564cfc8edSsvemuri #define HV_ZAM3_ASU_PCR 0x57 31664cfc8edSsvemuri #define HV_ZAM3_ASU_PIC0 0x58 31764cfc8edSsvemuri #define HV_ZAM3_ASU_PIC1 0x59 31859ac0c16Sdavemq 31959ac0c16Sdavemq #endif 32059ac0c16Sdavemq 32144961713Sgirish #ifndef _ASM 32244961713Sgirish /* 32344961713Sgirish * prototypes for hypervisor interface to get/set SPARC and DRAM 32444961713Sgirish * performance counters 32544961713Sgirish */ 32644961713Sgirish extern uint64_t hv_niagara_setperf(uint64_t regnum, uint64_t val); 32744961713Sgirish extern uint64_t hv_niagara_getperf(uint64_t regnum, uint64_t *val); 32844961713Sgirish #endif 32944961713Sgirish 33044961713Sgirish #ifdef __cplusplus 33144961713Sgirish } 33244961713Sgirish #endif 33344961713Sgirish 33444961713Sgirish #endif /* _SYS_NIAGARA2REGS_H */ 335