13156Sgirish /* 23156Sgirish * CDDL HEADER START 33156Sgirish * 43156Sgirish * The contents of this file are subject to the terms of the 53156Sgirish * Common Development and Distribution License (the "License"). 63156Sgirish * You may not use this file except in compliance with the License. 73156Sgirish * 83156Sgirish * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 93156Sgirish * or http://www.opensolaris.org/os/licensing. 103156Sgirish * See the License for the specific language governing permissions 113156Sgirish * and limitations under the License. 123156Sgirish * 133156Sgirish * When distributing Covered Code, include this CDDL HEADER in each 143156Sgirish * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 153156Sgirish * If applicable, add the following below this CDDL HEADER, with the 163156Sgirish * fields enclosed by brackets "[]" replaced with your own identifying 173156Sgirish * information: Portions Copyright [yyyy] [name of copyright owner] 183156Sgirish * 193156Sgirish * CDDL HEADER END 203156Sgirish */ 213156Sgirish /* 22*12217Ssree.lakshmi.vemuri@oracle.com * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 233156Sgirish */ 243156Sgirish 253156Sgirish #ifndef _SYS_NIAGARA2REGS_H 263156Sgirish #define _SYS_NIAGARA2REGS_H 273156Sgirish 283156Sgirish #ifdef __cplusplus 293156Sgirish extern "C" { 303156Sgirish #endif 313156Sgirish 323156Sgirish #define MB(n) ((n) * 1024 * 1024) 333156Sgirish 343156Sgirish #define L2CACHE_SIZE MB(4) 353156Sgirish #define L2CACHE_LINESIZE 64 363156Sgirish #define L2CACHE_ASSOCIATIVITY 16 373156Sgirish 383156Sgirish #define NIAGARA2_HSVC_MAJOR 1 393156Sgirish #define NIAGARA2_HSVC_MINOR 0 403156Sgirish 414732Sdavemq #define VFALLS_HSVC_MAJOR 1 424732Sdavemq #define VFALLS_HSVC_MINOR 0 434732Sdavemq 4411304SJanie.Lu@Sun.COM #define KT_HSVC_MAJOR 1 4511304SJanie.Lu@Sun.COM #define KT_HSVC_MINOR 0 4611304SJanie.Lu@Sun.COM 4711304SJanie.Lu@Sun.COM #ifdef KT_IMPL 4811304SJanie.Lu@Sun.COM 4911304SJanie.Lu@Sun.COM /* Sample PIC overflow range is -2 to -1 */ 5011304SJanie.Lu@Sun.COM #define SAMPLE_PIC_IN_OV_RANGE(x) (((uint32_t)x >= 0xfffffffe) ? 1 : 0) 5111304SJanie.Lu@Sun.COM 5211304SJanie.Lu@Sun.COM #endif 5311304SJanie.Lu@Sun.COM 543156Sgirish /* PIC overflow range is -16 to -1 */ 553156Sgirish #define PIC_IN_OV_RANGE(x) (((uint32_t)x >= 0xfffffff0) ? 1 : 0) 563156Sgirish 573156Sgirish /* 5811304SJanie.Lu@Sun.COM * SPARC Performance Instrumentation Counter 593156Sgirish */ 603156Sgirish #define PIC0_MASK (((uint64_t)1 << 32) - 1) /* pic0 in bits 31:0 */ 613156Sgirish #define PIC1_SHIFT 32 /* pic1 in bits 64:32 */ 623156Sgirish 633156Sgirish /* 6411304SJanie.Lu@Sun.COM * SPARC Performance Control Register 653156Sgirish */ 6611304SJanie.Lu@Sun.COM #define CPC_PCR_PRIV_SHIFT 0 6711304SJanie.Lu@Sun.COM #define CPC_PCR_ST_SHIFT 1 6811304SJanie.Lu@Sun.COM #define CPC_PCR_UT_SHIFT 2 693732Sae112802 7011304SJanie.Lu@Sun.COM #define CPC_PCR_HT_SHIFT 3 7111304SJanie.Lu@Sun.COM #define CPC_PCR_HT (1ull << CPC_PCR_HT_SHIFT) 723732Sae112802 7311304SJanie.Lu@Sun.COM #define CPC_PCR_TOE0_SHIFT 4 7411304SJanie.Lu@Sun.COM #define CPC_PCR_TOE1_SHIFT 5 7511304SJanie.Lu@Sun.COM #define CPC_PCR_TOE0 (1ull << CPC_PCR_TOE0_SHIFT) 7611304SJanie.Lu@Sun.COM #define CPC_PCR_TOE1 (1ull << CPC_PCR_TOE1_SHIFT) 773156Sgirish 7811304SJanie.Lu@Sun.COM #define CPC_PCR_PIC0_SHIFT 6 7911304SJanie.Lu@Sun.COM #define CPC_PCR_PIC1_SHIFT 19 8011304SJanie.Lu@Sun.COM #define CPC_PCR_PIC0_MASK UINT64_C(0xfff) 8111304SJanie.Lu@Sun.COM #define CPC_PCR_PIC1_MASK UINT64_C(0xfff) 8211304SJanie.Lu@Sun.COM 8311304SJanie.Lu@Sun.COM #define CPC_PCR_OV0_SHIFT 18 8411304SJanie.Lu@Sun.COM #define CPC_PCR_OV1_SHIFT 30 8511304SJanie.Lu@Sun.COM #define CPC_PCR_OV0_MASK UINT64_C(0x40000) 8611304SJanie.Lu@Sun.COM #define CPC_PCR_OV1_MASK UINT64_C(0x80000000) 873156Sgirish 8811304SJanie.Lu@Sun.COM #if defined(KT_IMPL) 8911304SJanie.Lu@Sun.COM 9011304SJanie.Lu@Sun.COM #define CPC_PCR_SAMPLE_MODE_SHIFT 32 9111304SJanie.Lu@Sun.COM #define CPC_PCR_SAMPLE_MODE_MASK (1ull << CPC_PCR_SAMPLE_MODE_SHIFT) 923732Sae112802 9311304SJanie.Lu@Sun.COM #endif 9411304SJanie.Lu@Sun.COM 9511304SJanie.Lu@Sun.COM #define CPC_PCR_HOLDOV0_SHIFT 62 9611304SJanie.Lu@Sun.COM #define CPC_PCR_HOLDOV1_SHIFT 63 9711304SJanie.Lu@Sun.COM #define CPC_PCR_HOLDOV0 (1ull << CPC_PCR_HOLDOV0_SHIFT) 9811304SJanie.Lu@Sun.COM #define CPC_PCR_HOLDOV1 (1ull << CPC_PCR_HOLDOV1_SHIFT) 993156Sgirish 1003156Sgirish /* 1013156Sgirish * Hypervisor FAST_TRAP API function numbers to get/set DRAM 1024732Sdavemq * performance counters for Niagara2 1033156Sgirish */ 1043156Sgirish #define HV_NIAGARA2_GETPERF 0x104 1053156Sgirish #define HV_NIAGARA2_SETPERF 0x105 1063156Sgirish 1073156Sgirish /* 1084732Sdavemq * Hypervisor FAST_TRAP API function numbers to get/set DRAM 1094732Sdavemq * performance counters for Victoria Falls 1104732Sdavemq */ 1114732Sdavemq #define HV_VFALLS_GETPERF 0x106 1124732Sdavemq #define HV_VFALLS_SETPERF 0x107 1134732Sdavemq 1144732Sdavemq /* 11511304SJanie.Lu@Sun.COM * Hypervisor FAST_TRAP API function numbers to get/set DRAM 11611304SJanie.Lu@Sun.COM * performance counters for KT 1173156Sgirish */ 11811304SJanie.Lu@Sun.COM #define HV_KT_GETPERF 0x122 11911304SJanie.Lu@Sun.COM #define HV_KT_SETPERF 0x123 12011304SJanie.Lu@Sun.COM 12111304SJanie.Lu@Sun.COM #if defined(KT_IMPL) 12211304SJanie.Lu@Sun.COM 12311304SJanie.Lu@Sun.COM /* 12411304SJanie.Lu@Sun.COM * KT DRAM performance counters 12511304SJanie.Lu@Sun.COM */ 12611304SJanie.Lu@Sun.COM #define DRAM_PIC0_SEL_SHIFT 0x0 12711304SJanie.Lu@Sun.COM #define DRAM_PIC1_SEL_SHIFT 0x4 1283156Sgirish 12911304SJanie.Lu@Sun.COM #define DRAM_PIC0_SHIFT 0x0 13011304SJanie.Lu@Sun.COM #define DRAM_PIC0_MASK 0x7fffffff 13111304SJanie.Lu@Sun.COM #define DRAM_PIC1_SHIFT 0x20 13211304SJanie.Lu@Sun.COM #define DRAM_PIC1_MASK 0x7fffffff 13311304SJanie.Lu@Sun.COM 13411304SJanie.Lu@Sun.COM #else 13511304SJanie.Lu@Sun.COM 13611304SJanie.Lu@Sun.COM /* 13711304SJanie.Lu@Sun.COM * Niagara2 and VF DRAM performance counters 13811304SJanie.Lu@Sun.COM */ 13911304SJanie.Lu@Sun.COM #define DRAM_PIC0_SEL_SHIFT 0x4 14011304SJanie.Lu@Sun.COM #define DRAM_PIC1_SEL_SHIFT 0x0 14111304SJanie.Lu@Sun.COM 14211304SJanie.Lu@Sun.COM #define DRAM_PIC0_SHIFT 0x20 14311304SJanie.Lu@Sun.COM #define DRAM_PIC0_MASK 0x7fffffff 14411304SJanie.Lu@Sun.COM #define DRAM_PIC1_SHIFT 0x0 14511304SJanie.Lu@Sun.COM #define DRAM_PIC1_MASK 0x7fffffff 14611304SJanie.Lu@Sun.COM 14711304SJanie.Lu@Sun.COM #endif 1483156Sgirish 1494732Sdavemq #if defined(NIAGARA2_IMPL) 1503156Sgirish /* 1513156Sgirish * SPARC/DRAM performance counter register numbers for HV_NIAGARA2_GETPERF 1524732Sdavemq * and HV_NIAGARA2_SETPERF for Niagara2 1533156Sgirish */ 15411304SJanie.Lu@Sun.COM #define DRAM_BANKS 0x4 1555146Ssvemuri 15611304SJanie.Lu@Sun.COM #define HV_SPARC_CTL 0x0 15711304SJanie.Lu@Sun.COM #define HV_DRAM_CTL0 0x1 15811304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT0 0x2 15911304SJanie.Lu@Sun.COM #define HV_DRAM_CTL1 0x3 16011304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT1 0x4 16111304SJanie.Lu@Sun.COM #define HV_DRAM_CTL2 0x5 16211304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT2 0x6 16311304SJanie.Lu@Sun.COM #define HV_DRAM_CTL3 0x7 16411304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT3 0x8 1653156Sgirish 1664732Sdavemq #elif defined(VFALLS_IMPL) 1674732Sdavemq /* 1684732Sdavemq * SPARC/DRAM performance counter register numbers for HV_VFALLS_GETPERF 1694732Sdavemq * and HV_VFALLS_SETPERF for Victoria Falls 1705146Ssvemuri * Support for 4-node configuration 1714732Sdavemq */ 17211304SJanie.Lu@Sun.COM #define DRAM_BANKS 0x8 17311304SJanie.Lu@Sun.COM 17411304SJanie.Lu@Sun.COM #define HV_SPARC_CTL 0x0 17511304SJanie.Lu@Sun.COM #define HV_L2_CTL 0x1 17611304SJanie.Lu@Sun.COM #define HV_DRAM_CTL0 0x2 17711304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT0 0x3 17811304SJanie.Lu@Sun.COM #define HV_DRAM_CTL1 0x4 17911304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT1 0x5 18011304SJanie.Lu@Sun.COM #define HV_DRAM_CTL2 0x6 18111304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT2 0x7 18211304SJanie.Lu@Sun.COM #define HV_DRAM_CTL3 0x8 18311304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT3 0x9 18411304SJanie.Lu@Sun.COM #define HV_DRAM_CTL4 0xa 18511304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT4 0xb 18611304SJanie.Lu@Sun.COM #define HV_DRAM_CTL5 0xc 18711304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT5 0xd 18811304SJanie.Lu@Sun.COM #define HV_DRAM_CTL6 0xe 18911304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT6 0xf 19011304SJanie.Lu@Sun.COM #define HV_DRAM_CTL7 0x10 19111304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT7 0x11 19211304SJanie.Lu@Sun.COM 19311304SJanie.Lu@Sun.COM #define L2_CTL_MASK 0x3 19411304SJanie.Lu@Sun.COM #define SL3_MASK 0x300 195*12217Ssree.lakshmi.vemuri@oracle.com #define SL_MASK 0xf00 19611304SJanie.Lu@Sun.COM 19711304SJanie.Lu@Sun.COM #elif defined(KT_IMPL) 19811304SJanie.Lu@Sun.COM /* 19911304SJanie.Lu@Sun.COM * SPARC/DRAM performance counter register numbers for HV_KT_GETPERF 20011304SJanie.Lu@Sun.COM * and HV_KT_SETPERF for KT 20111304SJanie.Lu@Sun.COM * Support for 4-node configuration 20211304SJanie.Lu@Sun.COM */ 2035146Ssvemuri 20411304SJanie.Lu@Sun.COM #define DRAM_BANKS 0x8 20511304SJanie.Lu@Sun.COM 20611304SJanie.Lu@Sun.COM #define HV_SPARC_CTL 0x0 20711304SJanie.Lu@Sun.COM #define HV_L2_CTL 0x1 20811304SJanie.Lu@Sun.COM #define HV_DRAM_CTL0 0x2 20911304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT0 0x3 21011304SJanie.Lu@Sun.COM #define HV_DRAM_CTL1 0x5 21111304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT1 0x6 21211304SJanie.Lu@Sun.COM #define HV_DRAM_CTL2 0x8 21311304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT2 0x9 21411304SJanie.Lu@Sun.COM #define HV_DRAM_CTL3 0xb 21511304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT3 0xc 21611304SJanie.Lu@Sun.COM #define HV_DRAM_CTL4 0xe 21711304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT4 0xf 21811304SJanie.Lu@Sun.COM #define HV_DRAM_CTL5 0x11 21911304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT5 0x12 22011304SJanie.Lu@Sun.COM #define HV_DRAM_CTL6 0x14 22111304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT6 0x15 22211304SJanie.Lu@Sun.COM #define HV_DRAM_CTL7 0x17 22311304SJanie.Lu@Sun.COM #define HV_DRAM_COUNT7 0x18 22411304SJanie.Lu@Sun.COM 22511304SJanie.Lu@Sun.COM #define L2_CTL_MASK 0x3 22611304SJanie.Lu@Sun.COM #define SL3_MASK 0x300 227*12217Ssree.lakshmi.vemuri@oracle.com #define SL_MASK 0xf00 22811304SJanie.Lu@Sun.COM 22911304SJanie.Lu@Sun.COM #endif 23011304SJanie.Lu@Sun.COM 23111304SJanie.Lu@Sun.COM #ifdef VFALLS_IMPL 23211304SJanie.Lu@Sun.COM /* 23311304SJanie.Lu@Sun.COM * Performance counters for Zambezi. Zambezi is only supported with 23411304SJanie.Lu@Sun.COM * Victoria Falls (UltraSPARC-T2+). 23511304SJanie.Lu@Sun.COM */ 2365146Ssvemuri 2375146Ssvemuri #define ZAMBEZI_PIC0_SEL_SHIFT 0x0 2385146Ssvemuri #define ZAMBEZI_PIC1_SEL_SHIFT 0x8 2395146Ssvemuri 2405146Ssvemuri #define ZAMBEZI_LPU_COUNTERS 0x10 2415146Ssvemuri #define ZAMBEZI_GPD_COUNTERS 0x4 2425146Ssvemuri #define ZAMBEZI_ASU_COUNTERS 0x4 2435146Ssvemuri 2445146Ssvemuri #define HV_ZAM0_LPU_A_PCR 0x12 2455146Ssvemuri #define HV_ZAM0_LPU_A_PIC0 0x13 2465146Ssvemuri #define HV_ZAM0_LPU_A_PIC1 0x14 2475146Ssvemuri #define HV_ZAM0_LPU_B_PCR 0x15 2485146Ssvemuri #define HV_ZAM0_LPU_B_PIC0 0x16 2495146Ssvemuri #define HV_ZAM0_LPU_B_PIC1 0x17 2505146Ssvemuri #define HV_ZAM0_LPU_C_PCR 0x18 2515146Ssvemuri #define HV_ZAM0_LPU_C_PIC0 0x19 2525146Ssvemuri #define HV_ZAM0_LPU_C_PIC1 0x1a 2535146Ssvemuri #define HV_ZAM0_LPU_D_PCR 0x1b 2545146Ssvemuri #define HV_ZAM0_LPU_D_PIC0 0x1c 2555146Ssvemuri #define HV_ZAM0_LPU_D_PIC1 0x1d 2565146Ssvemuri #define HV_ZAM0_GPD_PCR 0x1e 2575146Ssvemuri #define HV_ZAM0_GPD_PIC0 0x1f 2585146Ssvemuri #define HV_ZAM0_GPD_PIC1 0x20 2595146Ssvemuri #define HV_ZAM0_ASU_PCR 0x21 2605146Ssvemuri #define HV_ZAM0_ASU_PIC0 0x22 2615146Ssvemuri #define HV_ZAM0_ASU_PIC1 0x23 2625146Ssvemuri 2635146Ssvemuri #define HV_ZAM1_LPU_A_PCR 0x24 2645146Ssvemuri #define HV_ZAM1_LPU_A_PIC0 0x25 2655146Ssvemuri #define HV_ZAM1_LPU_A_PIC1 0x26 2665146Ssvemuri #define HV_ZAM1_LPU_B_PCR 0x27 2675146Ssvemuri #define HV_ZAM1_LPU_B_PIC0 0x28 2685146Ssvemuri #define HV_ZAM1_LPU_B_PIC1 0x29 2695146Ssvemuri #define HV_ZAM1_LPU_C_PCR 0x2a 2705146Ssvemuri #define HV_ZAM1_LPU_C_PIC0 0x2b 2715146Ssvemuri #define HV_ZAM1_LPU_C_PIC1 0x2c 2725146Ssvemuri #define HV_ZAM1_LPU_D_PCR 0x2d 2735146Ssvemuri #define HV_ZAM1_LPU_D_PIC0 0x2e 2745146Ssvemuri #define HV_ZAM1_LPU_D_PIC1 0x2f 2755146Ssvemuri #define HV_ZAM1_GPD_PCR 0x30 2765146Ssvemuri #define HV_ZAM1_GPD_PIC0 0x31 2775146Ssvemuri #define HV_ZAM1_GPD_PIC1 0x32 2785146Ssvemuri #define HV_ZAM1_ASU_PCR 0x33 2795146Ssvemuri #define HV_ZAM1_ASU_PIC0 0x34 2805146Ssvemuri #define HV_ZAM1_ASU_PIC1 0x35 2815146Ssvemuri 2825146Ssvemuri #define HV_ZAM2_LPU_A_PCR 0x36 2835146Ssvemuri #define HV_ZAM2_LPU_A_PIC0 0x37 2845146Ssvemuri #define HV_ZAM2_LPU_A_PIC1 0x38 2855146Ssvemuri #define HV_ZAM2_LPU_B_PCR 0x39 2865146Ssvemuri #define HV_ZAM2_LPU_B_PIC0 0x3a 2875146Ssvemuri #define HV_ZAM2_LPU_B_PIC1 0x3b 2885146Ssvemuri #define HV_ZAM2_LPU_C_PCR 0x3c 2895146Ssvemuri #define HV_ZAM2_LPU_C_PIC0 0x3d 2905146Ssvemuri #define HV_ZAM2_LPU_C_PIC1 0x3e 2915146Ssvemuri #define HV_ZAM2_LPU_D_PCR 0x3f 2925146Ssvemuri #define HV_ZAM2_LPU_D_PIC0 0x40 2935146Ssvemuri #define HV_ZAM2_LPU_D_PIC1 0x41 2945146Ssvemuri #define HV_ZAM2_GPD_PCR 0x42 2955146Ssvemuri #define HV_ZAM2_GPD_PIC0 0x43 2965146Ssvemuri #define HV_ZAM2_GPD_PIC1 0x44 2975146Ssvemuri #define HV_ZAM2_ASU_PCR 0x45 2985146Ssvemuri #define HV_ZAM2_ASU_PIC0 0x46 2995146Ssvemuri #define HV_ZAM2_ASU_PIC1 0x47 3005146Ssvemuri 3015146Ssvemuri #define HV_ZAM3_LPU_A_PCR 0x48 3025146Ssvemuri #define HV_ZAM3_LPU_A_PIC0 0x49 3035146Ssvemuri #define HV_ZAM3_LPU_A_PIC1 0x4a 3045146Ssvemuri #define HV_ZAM3_LPU_B_PCR 0x4b 3055146Ssvemuri #define HV_ZAM3_LPU_B_PIC0 0x4c 3065146Ssvemuri #define HV_ZAM3_LPU_B_PIC1 0x4d 3075146Ssvemuri #define HV_ZAM3_LPU_C_PCR 0x4e 3085146Ssvemuri #define HV_ZAM3_LPU_C_PIC0 0x4f 3095146Ssvemuri #define HV_ZAM3_LPU_C_PIC1 0x50 3105146Ssvemuri #define HV_ZAM3_LPU_D_PCR 0x51 3115146Ssvemuri #define HV_ZAM3_LPU_D_PIC0 0x52 3125146Ssvemuri #define HV_ZAM3_LPU_D_PIC1 0x53 3135146Ssvemuri #define HV_ZAM3_GPD_PCR 0x54 3145146Ssvemuri #define HV_ZAM3_GPD_PIC0 0x55 3155146Ssvemuri #define HV_ZAM3_GPD_PIC1 0x56 3165146Ssvemuri #define HV_ZAM3_ASU_PCR 0x57 3175146Ssvemuri #define HV_ZAM3_ASU_PIC0 0x58 3185146Ssvemuri #define HV_ZAM3_ASU_PIC1 0x59 3194732Sdavemq 3204732Sdavemq #endif 3214732Sdavemq 3223156Sgirish #ifndef _ASM 3233156Sgirish /* 3243156Sgirish * prototypes for hypervisor interface to get/set SPARC and DRAM 3253156Sgirish * performance counters 3263156Sgirish */ 3273156Sgirish extern uint64_t hv_niagara_setperf(uint64_t regnum, uint64_t val); 3283156Sgirish extern uint64_t hv_niagara_getperf(uint64_t regnum, uint64_t *val); 3293156Sgirish #endif 3303156Sgirish 3313156Sgirish #ifdef __cplusplus 3323156Sgirish } 3333156Sgirish #endif 3343156Sgirish 3353156Sgirish #endif /* _SYS_NIAGARA2REGS_H */ 336