1 /* ********************************************************************* 2 * SB1250 Board Support Package 3 * 4 * L2 Cache constants and macros File: sb1250_l2c.h 5 * 6 * This module contains constants useful for manipulating the 7 * level 2 cache. 8 * 9 * SB1250 specification level: User's manual 1/02/02 10 * 11 ********************************************************************* 12 * 13 * Copyright 2000,2001,2002,2003 14 * Broadcom Corporation. All rights reserved. 15 * 16 * This program is free software; you can redistribute it and/or 17 * modify it under the terms of the GNU General Public License as 18 * published by the Free Software Foundation; either version 2 of 19 * the License, or (at your option) any later version. 20 * 21 * This program is distributed in the hope that it will be useful, 22 * but WITHOUT ANY WARRANTY; without even the implied warranty of 23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 24 * GNU General Public License for more details. 25 * 26 * You should have received a copy of the GNU General Public License 27 * along with this program; if not, write to the Free Software 28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 29 * MA 02111-1307 USA 30 ********************************************************************* */ 31 32 33 #ifndef _SB1250_L2C_H 34 #define _SB1250_L2C_H 35 36 #include <asm/sibyte/sb1250_defs.h> 37 38 /* 39 * Level 2 Cache Tag register (Table 5-3) 40 */ 41 42 #define S_L2C_TAG_MBZ 0 43 #define M_L2C_TAG_MBZ _SB_MAKEMASK(5, S_L2C_TAG_MBZ) 44 45 #define S_L2C_TAG_INDEX 5 46 #define M_L2C_TAG_INDEX _SB_MAKEMASK(12, S_L2C_TAG_INDEX) 47 #define V_L2C_TAG_INDEX(x) _SB_MAKEVALUE(x, S_L2C_TAG_INDEX) 48 #define G_L2C_TAG_INDEX(x) _SB_GETVALUE(x, S_L2C_TAG_INDEX, M_L2C_TAG_INDEX) 49 50 #define S_L2C_TAG_TAG 17 51 #define M_L2C_TAG_TAG _SB_MAKEMASK(23, S_L2C_TAG_TAG) 52 #define V_L2C_TAG_TAG(x) _SB_MAKEVALUE(x, S_L2C_TAG_TAG) 53 #define G_L2C_TAG_TAG(x) _SB_GETVALUE(x, S_L2C_TAG_TAG, M_L2C_TAG_TAG) 54 55 #define S_L2C_TAG_ECC 40 56 #define M_L2C_TAG_ECC _SB_MAKEMASK(6, S_L2C_TAG_ECC) 57 #define V_L2C_TAG_ECC(x) _SB_MAKEVALUE(x, S_L2C_TAG_ECC) 58 #define G_L2C_TAG_ECC(x) _SB_GETVALUE(x, S_L2C_TAG_ECC, M_L2C_TAG_ECC) 59 60 #define S_L2C_TAG_WAY 46 61 #define M_L2C_TAG_WAY _SB_MAKEMASK(2, S_L2C_TAG_WAY) 62 #define V_L2C_TAG_WAY(x) _SB_MAKEVALUE(x, S_L2C_TAG_WAY) 63 #define G_L2C_TAG_WAY(x) _SB_GETVALUE(x, S_L2C_TAG_WAY, M_L2C_TAG_WAY) 64 65 #define M_L2C_TAG_DIRTY _SB_MAKEMASK1(48) 66 #define M_L2C_TAG_VALID _SB_MAKEMASK1(49) 67 68 /* 69 * Format of level 2 cache management address (table 5-2) 70 */ 71 72 #define S_L2C_MGMT_INDEX 5 73 #define M_L2C_MGMT_INDEX _SB_MAKEMASK(12, S_L2C_MGMT_INDEX) 74 #define V_L2C_MGMT_INDEX(x) _SB_MAKEVALUE(x, S_L2C_MGMT_INDEX) 75 #define G_L2C_MGMT_INDEX(x) _SB_GETVALUE(x, S_L2C_MGMT_INDEX, M_L2C_MGMT_INDEX) 76 77 #define S_L2C_MGMT_QUADRANT 15 78 #define M_L2C_MGMT_QUADRANT _SB_MAKEMASK(2, S_L2C_MGMT_QUADRANT) 79 #define V_L2C_MGMT_QUADRANT(x) _SB_MAKEVALUE(x, S_L2C_MGMT_QUADRANT) 80 #define G_L2C_MGMT_QUADRANT(x) _SB_GETVALUE(x, S_L2C_MGMT_QUADRANT, M_L2C_MGMT_QUADRANT) 81 82 #define S_L2C_MGMT_HALF 16 83 #define M_L2C_MGMT_HALF _SB_MAKEMASK(1, S_L2C_MGMT_HALF) 84 85 #define S_L2C_MGMT_WAY 17 86 #define M_L2C_MGMT_WAY _SB_MAKEMASK(2, S_L2C_MGMT_WAY) 87 #define V_L2C_MGMT_WAY(x) _SB_MAKEVALUE(x, S_L2C_MGMT_WAY) 88 #define G_L2C_MGMT_WAY(x) _SB_GETVALUE(x, S_L2C_MGMT_WAY, M_L2C_MGMT_WAY) 89 90 #define S_L2C_MGMT_ECC_DIAG 21 91 #define M_L2C_MGMT_ECC_DIAG _SB_MAKEMASK(2, S_L2C_MGMT_ECC_DIAG) 92 #define V_L2C_MGMT_ECC_DIAG(x) _SB_MAKEVALUE(x, S_L2C_MGMT_ECC_DIAG) 93 #define G_L2C_MGMT_ECC_DIAG(x) _SB_GETVALUE(x, S_L2C_MGMT_ECC_DIAG, M_L2C_MGMT_ECC_DIAG) 94 95 #define S_L2C_MGMT_TAG 23 96 #define M_L2C_MGMT_TAG _SB_MAKEMASK(4, S_L2C_MGMT_TAG) 97 #define V_L2C_MGMT_TAG(x) _SB_MAKEVALUE(x, S_L2C_MGMT_TAG) 98 #define G_L2C_MGMT_TAG(x) _SB_GETVALUE(x, S_L2C_MGMT_TAG, M_L2C_MGMT_TAG) 99 100 #define M_L2C_MGMT_DIRTY _SB_MAKEMASK1(19) 101 #define M_L2C_MGMT_VALID _SB_MAKEMASK1(20) 102 103 #define A_L2C_MGMT_TAG_BASE 0x00D0000000 104 105 #define L2C_ENTRIES_PER_WAY 4096 106 #define L2C_NUM_WAYS 4 107 108 109 #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) 110 /* 111 * L2 Read Misc. register (A_L2_READ_MISC) 112 */ 113 #define S_L2C_MISC_NO_WAY 10 114 #define M_L2C_MISC_NO_WAY _SB_MAKEMASK(4, S_L2C_MISC_NO_WAY) 115 #define V_L2C_MISC_NO_WAY(x) _SB_MAKEVALUE(x, S_L2C_MISC_NO_WAY) 116 #define G_L2C_MISC_NO_WAY(x) _SB_GETVALUE(x, S_L2C_MISC_NO_WAY, M_L2C_MISC_NO_WAY) 117 118 #define M_L2C_MISC_ECC_CLEANUP_DIS _SB_MAKEMASK1(9) 119 #define M_L2C_MISC_MC_PRIO_LOW _SB_MAKEMASK1(8) 120 #define M_L2C_MISC_SOFT_DISABLE_T _SB_MAKEMASK1(7) 121 #define M_L2C_MISC_SOFT_DISABLE_B _SB_MAKEMASK1(6) 122 #define M_L2C_MISC_SOFT_DISABLE_R _SB_MAKEMASK1(5) 123 #define M_L2C_MISC_SOFT_DISABLE_L _SB_MAKEMASK1(4) 124 #define M_L2C_MISC_SCACHE_DISABLE_T _SB_MAKEMASK1(3) 125 #define M_L2C_MISC_SCACHE_DISABLE_B _SB_MAKEMASK1(2) 126 #define M_L2C_MISC_SCACHE_DISABLE_R _SB_MAKEMASK1(1) 127 #define M_L2C_MISC_SCACHE_DISABLE_L _SB_MAKEMASK1(0) 128 #endif /* 1250 PASS3 || 112x PASS1 */ 129 130 131 #endif 132