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*b80c1b63SSree Vemuri * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 2344961713Sgirish */ 2444961713Sgirish 2544961713Sgirish #ifndef _SYS_NIAGARA2REGS_H 2644961713Sgirish #define _SYS_NIAGARA2REGS_H 2744961713Sgirish 2844961713Sgirish #ifdef __cplusplus 2944961713Sgirish extern "C" { 3044961713Sgirish #endif 3144961713Sgirish 3244961713Sgirish #define MB(n) ((n) * 1024 * 1024) 3344961713Sgirish 3444961713Sgirish #define L2CACHE_SIZE MB(4) 3544961713Sgirish #define L2CACHE_LINESIZE 64 3644961713Sgirish #define L2CACHE_ASSOCIATIVITY 16 3744961713Sgirish 3844961713Sgirish #define NIAGARA2_HSVC_MAJOR 1 3944961713Sgirish #define NIAGARA2_HSVC_MINOR 0 4044961713Sgirish 4159ac0c16Sdavemq #define VFALLS_HSVC_MAJOR 1 4259ac0c16Sdavemq #define VFALLS_HSVC_MINOR 0 4359ac0c16Sdavemq 444df55fdeSJanie Lu #define KT_HSVC_MAJOR 1 454df55fdeSJanie Lu #define KT_HSVC_MINOR 0 464df55fdeSJanie Lu 474df55fdeSJanie Lu #ifdef KT_IMPL 484df55fdeSJanie Lu 494df55fdeSJanie Lu /* Sample PIC overflow range is -2 to -1 */ 504df55fdeSJanie Lu #define SAMPLE_PIC_IN_OV_RANGE(x) (((uint32_t)x >= 0xfffffffe) ? 1 : 0) 514df55fdeSJanie Lu 524df55fdeSJanie Lu #endif 534df55fdeSJanie Lu 5444961713Sgirish /* PIC overflow range is -16 to -1 */ 5544961713Sgirish #define PIC_IN_OV_RANGE(x) (((uint32_t)x >= 0xfffffff0) ? 1 : 0) 5644961713Sgirish 5744961713Sgirish /* 584df55fdeSJanie Lu * SPARC Performance Instrumentation Counter 5944961713Sgirish */ 6044961713Sgirish #define PIC0_MASK (((uint64_t)1 << 32) - 1) /* pic0 in bits 31:0 */ 6144961713Sgirish #define PIC1_SHIFT 32 /* pic1 in bits 64:32 */ 6244961713Sgirish 6344961713Sgirish /* 644df55fdeSJanie Lu * SPARC Performance Control Register 6544961713Sgirish */ 664df55fdeSJanie Lu #define CPC_PCR_PRIV_SHIFT 0 674df55fdeSJanie Lu #define CPC_PCR_ST_SHIFT 1 684df55fdeSJanie Lu #define CPC_PCR_UT_SHIFT 2 698d4e547dSae112802 704df55fdeSJanie Lu #define CPC_PCR_HT_SHIFT 3 714df55fdeSJanie Lu #define CPC_PCR_HT (1ull << CPC_PCR_HT_SHIFT) 728d4e547dSae112802 734df55fdeSJanie Lu #define CPC_PCR_TOE0_SHIFT 4 744df55fdeSJanie Lu #define CPC_PCR_TOE1_SHIFT 5 754df55fdeSJanie Lu #define CPC_PCR_TOE0 (1ull << CPC_PCR_TOE0_SHIFT) 764df55fdeSJanie Lu #define CPC_PCR_TOE1 (1ull << CPC_PCR_TOE1_SHIFT) 7744961713Sgirish 784df55fdeSJanie Lu #define CPC_PCR_PIC0_SHIFT 6 794df55fdeSJanie Lu #define CPC_PCR_PIC1_SHIFT 19 804df55fdeSJanie Lu #define CPC_PCR_PIC0_MASK UINT64_C(0xfff) 814df55fdeSJanie Lu #define CPC_PCR_PIC1_MASK UINT64_C(0xfff) 8244961713Sgirish 834df55fdeSJanie Lu #define CPC_PCR_OV0_SHIFT 18 844df55fdeSJanie Lu #define CPC_PCR_OV1_SHIFT 30 854df55fdeSJanie Lu #define CPC_PCR_OV0_MASK UINT64_C(0x40000) 864df55fdeSJanie Lu #define CPC_PCR_OV1_MASK UINT64_C(0x80000000) 878d4e547dSae112802 884df55fdeSJanie Lu #if defined(KT_IMPL) 894df55fdeSJanie Lu 904df55fdeSJanie Lu #define CPC_PCR_SAMPLE_MODE_SHIFT 32 914df55fdeSJanie Lu #define CPC_PCR_SAMPLE_MODE_MASK (1ull << CPC_PCR_SAMPLE_MODE_SHIFT) 924df55fdeSJanie Lu 934df55fdeSJanie Lu #endif 944df55fdeSJanie Lu 954df55fdeSJanie Lu #define CPC_PCR_HOLDOV0_SHIFT 62 964df55fdeSJanie Lu #define CPC_PCR_HOLDOV1_SHIFT 63 974df55fdeSJanie Lu #define CPC_PCR_HOLDOV0 (1ull << CPC_PCR_HOLDOV0_SHIFT) 984df55fdeSJanie Lu #define CPC_PCR_HOLDOV1 (1ull << CPC_PCR_HOLDOV1_SHIFT) 9944961713Sgirish 10044961713Sgirish /* 10144961713Sgirish * Hypervisor FAST_TRAP API function numbers to get/set DRAM 10259ac0c16Sdavemq * performance counters for Niagara2 10344961713Sgirish */ 10444961713Sgirish #define HV_NIAGARA2_GETPERF 0x104 10544961713Sgirish #define HV_NIAGARA2_SETPERF 0x105 10644961713Sgirish 10744961713Sgirish /* 10859ac0c16Sdavemq * Hypervisor FAST_TRAP API function numbers to get/set DRAM 10959ac0c16Sdavemq * performance counters for Victoria Falls 11059ac0c16Sdavemq */ 11159ac0c16Sdavemq #define HV_VFALLS_GETPERF 0x106 11259ac0c16Sdavemq #define HV_VFALLS_SETPERF 0x107 11359ac0c16Sdavemq 11459ac0c16Sdavemq /* 1154df55fdeSJanie Lu * Hypervisor FAST_TRAP API function numbers to get/set DRAM 1164df55fdeSJanie Lu * performance counters for KT 11744961713Sgirish */ 1184df55fdeSJanie Lu #define HV_KT_GETPERF 0x122 1194df55fdeSJanie Lu #define HV_KT_SETPERF 0x123 12044961713Sgirish 1214df55fdeSJanie Lu #if defined(KT_IMPL) 1224df55fdeSJanie Lu 1234df55fdeSJanie Lu /* 1244df55fdeSJanie Lu * KT DRAM performance counters 1254df55fdeSJanie Lu */ 1264df55fdeSJanie Lu #define DRAM_PIC0_SEL_SHIFT 0x0 1274df55fdeSJanie Lu #define DRAM_PIC1_SEL_SHIFT 0x4 1284df55fdeSJanie Lu 1294df55fdeSJanie Lu #define DRAM_PIC0_SHIFT 0x0 1304df55fdeSJanie Lu #define DRAM_PIC0_MASK 0x7fffffff 1314df55fdeSJanie Lu #define DRAM_PIC1_SHIFT 0x20 1324df55fdeSJanie Lu #define DRAM_PIC1_MASK 0x7fffffff 1334df55fdeSJanie Lu 1344df55fdeSJanie Lu #else 1354df55fdeSJanie Lu 1364df55fdeSJanie Lu /* 1374df55fdeSJanie Lu * Niagara2 and VF DRAM performance counters 1384df55fdeSJanie Lu */ 1394df55fdeSJanie Lu #define DRAM_PIC0_SEL_SHIFT 0x4 1404df55fdeSJanie Lu #define DRAM_PIC1_SEL_SHIFT 0x0 1414df55fdeSJanie Lu 1424df55fdeSJanie Lu #define DRAM_PIC0_SHIFT 0x20 1434df55fdeSJanie Lu #define DRAM_PIC0_MASK 0x7fffffff 1444df55fdeSJanie Lu #define DRAM_PIC1_SHIFT 0x0 1454df55fdeSJanie Lu #define DRAM_PIC1_MASK 0x7fffffff 1464df55fdeSJanie Lu 1474df55fdeSJanie Lu #endif 14844961713Sgirish 14959ac0c16Sdavemq #if defined(NIAGARA2_IMPL) 15044961713Sgirish /* 15144961713Sgirish * SPARC/DRAM performance counter register numbers for HV_NIAGARA2_GETPERF 15259ac0c16Sdavemq * and HV_NIAGARA2_SETPERF for Niagara2 15344961713Sgirish */ 1544df55fdeSJanie Lu #define DRAM_BANKS 0x4 15564cfc8edSsvemuri 1564df55fdeSJanie Lu #define HV_SPARC_CTL 0x0 1574df55fdeSJanie Lu #define HV_DRAM_CTL0 0x1 1584df55fdeSJanie Lu #define HV_DRAM_COUNT0 0x2 1594df55fdeSJanie Lu #define HV_DRAM_CTL1 0x3 1604df55fdeSJanie Lu #define HV_DRAM_COUNT1 0x4 1614df55fdeSJanie Lu #define HV_DRAM_CTL2 0x5 1624df55fdeSJanie Lu #define HV_DRAM_COUNT2 0x6 1634df55fdeSJanie Lu #define HV_DRAM_CTL3 0x7 1644df55fdeSJanie Lu #define HV_DRAM_COUNT3 0x8 16544961713Sgirish 16659ac0c16Sdavemq #elif defined(VFALLS_IMPL) 16759ac0c16Sdavemq /* 16859ac0c16Sdavemq * SPARC/DRAM performance counter register numbers for HV_VFALLS_GETPERF 16959ac0c16Sdavemq * and HV_VFALLS_SETPERF for Victoria Falls 17064cfc8edSsvemuri * Support for 4-node configuration 17159ac0c16Sdavemq */ 1724df55fdeSJanie Lu #define DRAM_BANKS 0x8 17364cfc8edSsvemuri 1744df55fdeSJanie Lu #define HV_SPARC_CTL 0x0 1754df55fdeSJanie Lu #define HV_L2_CTL 0x1 1764df55fdeSJanie Lu #define HV_DRAM_CTL0 0x2 1774df55fdeSJanie Lu #define HV_DRAM_COUNT0 0x3 1784df55fdeSJanie Lu #define HV_DRAM_CTL1 0x4 1794df55fdeSJanie Lu #define HV_DRAM_COUNT1 0x5 1804df55fdeSJanie Lu #define HV_DRAM_CTL2 0x6 1814df55fdeSJanie Lu #define HV_DRAM_COUNT2 0x7 1824df55fdeSJanie Lu #define HV_DRAM_CTL3 0x8 1834df55fdeSJanie Lu #define HV_DRAM_COUNT3 0x9 1844df55fdeSJanie Lu #define HV_DRAM_CTL4 0xa 1854df55fdeSJanie Lu #define HV_DRAM_COUNT4 0xb 1864df55fdeSJanie Lu #define HV_DRAM_CTL5 0xc 1874df55fdeSJanie Lu #define HV_DRAM_COUNT5 0xd 1884df55fdeSJanie Lu #define HV_DRAM_CTL6 0xe 1894df55fdeSJanie Lu #define HV_DRAM_COUNT6 0xf 1904df55fdeSJanie Lu #define HV_DRAM_CTL7 0x10 1914df55fdeSJanie Lu #define HV_DRAM_COUNT7 0x11 1924df55fdeSJanie Lu 1934df55fdeSJanie Lu #define L2_CTL_MASK 0x3 1944df55fdeSJanie Lu #define SL3_MASK 0x300 195*b80c1b63SSree Vemuri #define SL_MASK 0xf00 1964df55fdeSJanie Lu 1974df55fdeSJanie Lu #elif defined(KT_IMPL) 1984df55fdeSJanie Lu /* 1994df55fdeSJanie Lu * SPARC/DRAM performance counter register numbers for HV_KT_GETPERF 2004df55fdeSJanie Lu * and HV_KT_SETPERF for KT 2014df55fdeSJanie Lu * Support for 4-node configuration 2024df55fdeSJanie Lu */ 2034df55fdeSJanie Lu 2044df55fdeSJanie Lu #define DRAM_BANKS 0x8 2054df55fdeSJanie Lu 2064df55fdeSJanie Lu #define HV_SPARC_CTL 0x0 2074df55fdeSJanie Lu #define HV_L2_CTL 0x1 2084df55fdeSJanie Lu #define HV_DRAM_CTL0 0x2 2094df55fdeSJanie Lu #define HV_DRAM_COUNT0 0x3 2104df55fdeSJanie Lu #define HV_DRAM_CTL1 0x5 2114df55fdeSJanie Lu #define HV_DRAM_COUNT1 0x6 2124df55fdeSJanie Lu #define HV_DRAM_CTL2 0x8 2134df55fdeSJanie Lu #define HV_DRAM_COUNT2 0x9 2144df55fdeSJanie Lu #define HV_DRAM_CTL3 0xb 2154df55fdeSJanie Lu #define HV_DRAM_COUNT3 0xc 2164df55fdeSJanie Lu #define HV_DRAM_CTL4 0xe 2174df55fdeSJanie Lu #define HV_DRAM_COUNT4 0xf 2184df55fdeSJanie Lu #define HV_DRAM_CTL5 0x11 2194df55fdeSJanie Lu #define HV_DRAM_COUNT5 0x12 2204df55fdeSJanie Lu #define HV_DRAM_CTL6 0x14 2214df55fdeSJanie Lu #define HV_DRAM_COUNT6 0x15 2224df55fdeSJanie Lu #define HV_DRAM_CTL7 0x17 2234df55fdeSJanie Lu #define HV_DRAM_COUNT7 0x18 2244df55fdeSJanie Lu 2254df55fdeSJanie Lu #define L2_CTL_MASK 0x3 2264df55fdeSJanie Lu #define SL3_MASK 0x300 227*b80c1b63SSree Vemuri #define SL_MASK 0xf00 2284df55fdeSJanie Lu 2294df55fdeSJanie Lu #endif 2304df55fdeSJanie Lu 2314df55fdeSJanie Lu #ifdef VFALLS_IMPL 2324df55fdeSJanie Lu /* 2334df55fdeSJanie Lu * Performance counters for Zambezi. Zambezi is only supported with 2344df55fdeSJanie Lu * Victoria Falls (UltraSPARC-T2+). 2354df55fdeSJanie Lu */ 23664cfc8edSsvemuri 23764cfc8edSsvemuri #define ZAMBEZI_PIC0_SEL_SHIFT 0x0 23864cfc8edSsvemuri #define ZAMBEZI_PIC1_SEL_SHIFT 0x8 23964cfc8edSsvemuri 24064cfc8edSsvemuri #define ZAMBEZI_LPU_COUNTERS 0x10 24164cfc8edSsvemuri #define ZAMBEZI_GPD_COUNTERS 0x4 24264cfc8edSsvemuri #define ZAMBEZI_ASU_COUNTERS 0x4 24364cfc8edSsvemuri 24464cfc8edSsvemuri #define HV_ZAM0_LPU_A_PCR 0x12 24564cfc8edSsvemuri #define HV_ZAM0_LPU_A_PIC0 0x13 24664cfc8edSsvemuri #define HV_ZAM0_LPU_A_PIC1 0x14 24764cfc8edSsvemuri #define HV_ZAM0_LPU_B_PCR 0x15 24864cfc8edSsvemuri #define HV_ZAM0_LPU_B_PIC0 0x16 24964cfc8edSsvemuri #define HV_ZAM0_LPU_B_PIC1 0x17 25064cfc8edSsvemuri #define HV_ZAM0_LPU_C_PCR 0x18 25164cfc8edSsvemuri #define HV_ZAM0_LPU_C_PIC0 0x19 25264cfc8edSsvemuri #define HV_ZAM0_LPU_C_PIC1 0x1a 25364cfc8edSsvemuri #define HV_ZAM0_LPU_D_PCR 0x1b 25464cfc8edSsvemuri #define HV_ZAM0_LPU_D_PIC0 0x1c 25564cfc8edSsvemuri #define HV_ZAM0_LPU_D_PIC1 0x1d 25664cfc8edSsvemuri #define HV_ZAM0_GPD_PCR 0x1e 25764cfc8edSsvemuri #define HV_ZAM0_GPD_PIC0 0x1f 25864cfc8edSsvemuri #define HV_ZAM0_GPD_PIC1 0x20 25964cfc8edSsvemuri #define HV_ZAM0_ASU_PCR 0x21 26064cfc8edSsvemuri #define HV_ZAM0_ASU_PIC0 0x22 26164cfc8edSsvemuri #define HV_ZAM0_ASU_PIC1 0x23 26264cfc8edSsvemuri 26364cfc8edSsvemuri #define HV_ZAM1_LPU_A_PCR 0x24 26464cfc8edSsvemuri #define HV_ZAM1_LPU_A_PIC0 0x25 26564cfc8edSsvemuri #define HV_ZAM1_LPU_A_PIC1 0x26 26664cfc8edSsvemuri #define HV_ZAM1_LPU_B_PCR 0x27 26764cfc8edSsvemuri #define HV_ZAM1_LPU_B_PIC0 0x28 26864cfc8edSsvemuri #define HV_ZAM1_LPU_B_PIC1 0x29 26964cfc8edSsvemuri #define HV_ZAM1_LPU_C_PCR 0x2a 27064cfc8edSsvemuri #define HV_ZAM1_LPU_C_PIC0 0x2b 27164cfc8edSsvemuri #define HV_ZAM1_LPU_C_PIC1 0x2c 27264cfc8edSsvemuri #define HV_ZAM1_LPU_D_PCR 0x2d 27364cfc8edSsvemuri #define HV_ZAM1_LPU_D_PIC0 0x2e 27464cfc8edSsvemuri #define HV_ZAM1_LPU_D_PIC1 0x2f 27564cfc8edSsvemuri #define HV_ZAM1_GPD_PCR 0x30 27664cfc8edSsvemuri #define HV_ZAM1_GPD_PIC0 0x31 27764cfc8edSsvemuri #define HV_ZAM1_GPD_PIC1 0x32 27864cfc8edSsvemuri #define HV_ZAM1_ASU_PCR 0x33 27964cfc8edSsvemuri #define HV_ZAM1_ASU_PIC0 0x34 28064cfc8edSsvemuri #define HV_ZAM1_ASU_PIC1 0x35 28164cfc8edSsvemuri 28264cfc8edSsvemuri #define HV_ZAM2_LPU_A_PCR 0x36 28364cfc8edSsvemuri #define HV_ZAM2_LPU_A_PIC0 0x37 28464cfc8edSsvemuri #define HV_ZAM2_LPU_A_PIC1 0x38 28564cfc8edSsvemuri #define HV_ZAM2_LPU_B_PCR 0x39 28664cfc8edSsvemuri #define HV_ZAM2_LPU_B_PIC0 0x3a 28764cfc8edSsvemuri #define HV_ZAM2_LPU_B_PIC1 0x3b 28864cfc8edSsvemuri #define HV_ZAM2_LPU_C_PCR 0x3c 28964cfc8edSsvemuri #define HV_ZAM2_LPU_C_PIC0 0x3d 29064cfc8edSsvemuri #define HV_ZAM2_LPU_C_PIC1 0x3e 29164cfc8edSsvemuri #define HV_ZAM2_LPU_D_PCR 0x3f 29264cfc8edSsvemuri #define HV_ZAM2_LPU_D_PIC0 0x40 29364cfc8edSsvemuri #define HV_ZAM2_LPU_D_PIC1 0x41 29464cfc8edSsvemuri #define HV_ZAM2_GPD_PCR 0x42 29564cfc8edSsvemuri #define HV_ZAM2_GPD_PIC0 0x43 29664cfc8edSsvemuri #define HV_ZAM2_GPD_PIC1 0x44 29764cfc8edSsvemuri #define HV_ZAM2_ASU_PCR 0x45 29864cfc8edSsvemuri #define HV_ZAM2_ASU_PIC0 0x46 29964cfc8edSsvemuri #define HV_ZAM2_ASU_PIC1 0x47 30064cfc8edSsvemuri 30164cfc8edSsvemuri #define HV_ZAM3_LPU_A_PCR 0x48 30264cfc8edSsvemuri #define HV_ZAM3_LPU_A_PIC0 0x49 30364cfc8edSsvemuri #define HV_ZAM3_LPU_A_PIC1 0x4a 30464cfc8edSsvemuri #define HV_ZAM3_LPU_B_PCR 0x4b 30564cfc8edSsvemuri #define HV_ZAM3_LPU_B_PIC0 0x4c 30664cfc8edSsvemuri #define HV_ZAM3_LPU_B_PIC1 0x4d 30764cfc8edSsvemuri #define HV_ZAM3_LPU_C_PCR 0x4e 30864cfc8edSsvemuri #define HV_ZAM3_LPU_C_PIC0 0x4f 30964cfc8edSsvemuri #define HV_ZAM3_LPU_C_PIC1 0x50 31064cfc8edSsvemuri #define HV_ZAM3_LPU_D_PCR 0x51 31164cfc8edSsvemuri #define HV_ZAM3_LPU_D_PIC0 0x52 31264cfc8edSsvemuri #define HV_ZAM3_LPU_D_PIC1 0x53 31364cfc8edSsvemuri #define HV_ZAM3_GPD_PCR 0x54 31464cfc8edSsvemuri #define HV_ZAM3_GPD_PIC0 0x55 31564cfc8edSsvemuri #define HV_ZAM3_GPD_PIC1 0x56 31664cfc8edSsvemuri #define HV_ZAM3_ASU_PCR 0x57 31764cfc8edSsvemuri #define HV_ZAM3_ASU_PIC0 0x58 31864cfc8edSsvemuri #define HV_ZAM3_ASU_PIC1 0x59 31959ac0c16Sdavemq 32059ac0c16Sdavemq #endif 32159ac0c16Sdavemq 32244961713Sgirish #ifndef _ASM 32344961713Sgirish /* 32444961713Sgirish * prototypes for hypervisor interface to get/set SPARC and DRAM 32544961713Sgirish * performance counters 32644961713Sgirish */ 32744961713Sgirish extern uint64_t hv_niagara_setperf(uint64_t regnum, uint64_t val); 32844961713Sgirish extern uint64_t hv_niagara_getperf(uint64_t regnum, uint64_t *val); 32944961713Sgirish #endif 33044961713Sgirish 33144961713Sgirish #ifdef __cplusplus 33244961713Sgirish } 33344961713Sgirish #endif 33444961713Sgirish 33544961713Sgirish #endif /* _SYS_NIAGARA2REGS_H */ 336