* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: schizo_stc.h
* Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
* The above named program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License version 2 as published by the Free Software Foundation.
* The above named program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
* You should have received a copy of the GNU General Public
* License along with this work; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
* ========== Copyright Header End ============================================
// Copyright (C) 1991, Sun Microsystems, Inc.
#pragma ident "@(#)1.1 01/08/23 schizo_stc.h"
#define NUM_STC_ENTRIES 16
#define LWORDS_PER_ENTRY 8
typedef struct s_stc_cntrl
{
uint32_t rsvd1
:32; // [63:32] reserved, read as zero
uint32_t rsvd2
:24; // [31:08] reserved, read as zero
uint32_t lru_lptr
:4; // [07:04] lru lock pointer
uint32_t lru_le
:1; // [03] lru lock enable
uint32_t rr_dis
:1; // [02] rerun disable
uint32_t stcdiag
:1; // [01] diag mode enable
uint32_t stcen
:1; // [00] streaming cache enable
typedef union u_stc_cntrl
{
typedef struct s_stc_flush
{
uint32_t rsvd1
:32; // not used
uint32_t stcpgfsh
:19; // [31:13] 8K virtual pg to be inv/flh
uint32_t rsvd2
:13; // [12:00] ignored
typedef union u_stc_flush
{
typedef struct s_stc_flsync
{
uint32_t rsvd1
:21; // [63:43] not used
uint32_t stcsynch1
:11; // [42:32] Word aligned upper_PA for syn
uint32_t stcsynch2
:26; // [31:06] Word aligned lower_PA for syn
uint32_t rsvd2
:6; // [05:00] ignored
typedef union u_stc_flsync
{
typedef struct s_stc_data_diag
{
typedef union u_stc_data_diag
{
typedef struct s_stc_ptag_diag
{
uint32_t rsvd2
:16; // not used
uint32_t stcptpa_hi
:16; // PPN as an 8kpage
uint32_t stcptpa_lo
:11; // PPN as an 8kpage
uint32_t stcptva
:19; // VPN as an 8kpage
uint32_t rsvd1
:11; // not used
uint32_t stcptvd
:1; // VAlid bit for page
uint32_t stcptrd
:1; // Read/write bit for page
typedef union u_stc_ptag_diag
{
typedef struct s_stc_ltag_diag
{
uint32_t rsvd1
:32; //not used
uint32_t rsvd2
:8; //not used
uint32_t lru
:4; // entries lru value
uint32_t stcltsp
:6; //start pointer for dirty data
uint32_t stcltla
:7; //line addr for this entry
uint32_t stcltep
:6; //end pointer for dirty data
uint32_t stcltvd
:1; //valid bit for line
uint32_t stcltfh
:1; //fetch outstanding/flush necessary
typedef union u_stc_ltag_diag
{
typedef struct s_stc_cntx_mtch_diag
{
typedef union u_stc_cntx_mtch_diag
{
typedef struct s_stc_error_diag
{
uint32_t rsvd1
:32; // not used
uint32_t rsvd2
:31; // not used
uint32_t stcdrer
:1; // upa_read reply error bit
typedef union u_stc_error_diag
{