Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / hypervisor / src / greatlakes / common / include / cache.h
CommitLineData
920dae64
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* Hypervisor Software File: cache.h
5*
6* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
7*
8* - Do no alter or remove copyright notices
9*
10* - Redistribution and use of this software in source and binary forms, with
11* or without modification, are permitted provided that the following
12* conditions are met:
13*
14* - Redistribution of source code must retain the above copyright notice,
15* this list of conditions and the following disclaimer.
16*
17* - Redistribution in binary form must reproduce the above copyright notice,
18* this list of conditions and the following disclaimer in the
19* documentation and/or other materials provided with the distribution.
20*
21* Neither the name of Sun Microsystems, Inc. or the names of contributors
22* may be used to endorse or promote products derived from this software
23* without specific prior written permission.
24*
25* This software is provided "AS IS," without a warranty of any kind.
26* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
27* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
28* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
29* MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
30* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
31* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
32* OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
33* FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
34* DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
35* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
36* SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
37*
38* You acknowledge that this software is not designed, licensed or
39* intended for use in the design, construction, operation or maintenance of
40* any nuclear facility.
41*
42* ========== Copyright Header End ============================================
43*/
44/*
45 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
46 * Use is subject to license terms.
47 */
48
49#ifndef _CACHE_H
50#define _CACHE_H
51
52#pragma ident "@(#)cache.h 1.8 07/05/03 SMI"
53
54#ifdef __cplusplus
55extern "C" {
56#endif
57
58#include <platform/cache.h>
59
60/*
61 * L1 icache
62 */
63#define ICACHE_MAX_WAYS 4
64#define ICACHE_NUM_OF_WORDS 8
65
66/*
67 * L1 Instruction Cache Data Diagnostic Addressing
68 */
69#define ICACHE_INSTR_WAY_SHIFT 16
70#define ICACHE_INSTR_WAY_MASK (0x2 << ICACHE_INSTR_WAY_SHIFT)
71#define ICACHE_INSTR_SET_SHIFT 6
72#define ICACHE_INSTR_SET_MASK (0x7f << ICACHE_INSTR_SET_SHIFT)
73#define ICACHE_INSTR_WORD_SHIFT 3
74#define ICACHE_INSTR_WORD_MASK (0x3 << ICACHE_INSTR_WORD_SHIFT)
75
76#define ICACHE_PA_SET_SHIFT 5
77#define ICACHE_PA_SET_MASK (0x7f << ICACHE_PA_SET_SHIFT)
78#define ICACHE_PA_WORD_SHIFT 2
79#define ICACHE_PA_WORD_MASK (0x3 << ICACHE_PA_WORD_SHIFT)
80
81/*
82 * L1 Instruction Cache Tag Diagnostic Addressing
83 */
84#define ICACHE_TAG_WAY_SHIFT 16
85#define ICACHE_TAG_WAY_MASK (0x2 << ICACHE_TAG_WAY_SHIFT)
86#define ICACHE_TAG_SET_SHIFT 6
87#define ICACHE_TAG_SET_MASK (0x7f << ICACHE_TAG_SET_SHIFT)
88#define ICACHE_PA2SET_SHIFT 5
89#define ICACHE_PA2SET_MASK (0x7f << ICACHE_PA2SET_SHIFT)
90#define ICACHE_SETFROMPA_SHIFT 1
91#define ICACHE_TAG_VALID 34
92
93/*
94 * L1 Data Cache Diagnostic Addressing
95 */
96#define DCACHE_MAX_WAYS 4
97#define DCACHE_NUM_OF_WORDS 2
98#define DCACHE_WAY_SHIFT 11
99#define DCACHE_SET_MASK 0x7f
100#define DCACHE_SET_SHIFT 4
101#define DCACHE_SET (DCACHE_SET_MASK << DCACHE_SET_SHIFT)
102#define DCACHE_TAG_MASK 0x3ffffffe
103#define DCACHE_TAG_SHIFT 11
104#define DCACHE_TAG_VALID 1
105#define DCACHE_WORD_MASK 0x1
106#define DCACHE_WORD_SHIFT 3
107
108/*
109 * L2 diagnostic tag fields
110 */
111#define L2_PA_TAG_SHIFT 18
112#ifdef _ASM
113#define L2_PA_TAG_MASK 0xfffffc0000
114#else
115#define L2_PA_TAG_MASK (0x3fffffULL << L2_PA_TAG_SHIFT)
116#endif
117#define L2_TAG_SHIFT 6
118#ifdef _ASM
119#define L2_TAG_MASK 0xfffffc0
120#else
121#define L2_TAG_MASK (0x3fffffULL << L2_TAG_SHIFT)
122#endif
123#define L2_TAG(pa) ((pa & L2_PA_TAG_MASK) >> L2_PA_TAG_SHIFT)
124
125#define L2_TAG_ECC_SHIFT 0
126#define L2_TAG_ECC_MASK (0x3fULL << L2_TAG_ECC_SHIFT)
127
128#define L2_TAG_DIAG_SELECT 0xa4
129#define L2_TAG_DIAG_SELECT_SHIFT 32
130#define L2_INDEX_MASK (L2_SET_MASK << L2_SET_SHIFT) | \
131 (L2_BANK_MASK << L2_BANK_SHIFT)
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif /* _CACHE_H */