Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / sam / devices / schizo / include / schizo_stc.h
/*
* ========== 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.
//
#ifndef _SCHIZO_STC_H
#define _SCHIZO_STC_H
#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
} s_stc_cntrl;
typedef union u_stc_cntrl {
s_stc_cntrl s;
uint64_t l;
} 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
} s_stc_flush;
typedef union u_stc_flush {
s_stc_flush s;
uint64_t l;
} 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
} s_stc_flsync;
typedef union u_stc_flsync {
s_stc_flsync s;
uint64_t l;
} u_stc_flsync;
typedef struct s_stc_data_diag {
uint32_t stcdrda_hi:32;
uint32_t stcdrda_lo:32;
} s_stc_data_diag;
typedef union u_stc_data_diag {
s_stc_data_diag s;
uint64_t l;
} 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
} s_stc_ptag_diag;
typedef union u_stc_ptag_diag {
s_stc_ptag_diag s;
uint64_t l;
} 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
} s_stc_ltag_diag;
typedef union u_stc_ltag_diag {
s_stc_ltag_diag s;
uint64_t l;
} u_stc_ltag_diag;
typedef struct s_stc_cntx_mtch_diag {
uint32_t hit:1;
uint32_t rsvd1:31;
uint32_t rsvd2:16;
uint32_t match:16;
} s_stc_cntx_mtch_diag;
typedef union u_stc_cntx_mtch_diag {
s_stc_cntx_mtch_diag s;
uint64_t l;
} 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
} s_stc_error_diag;
typedef union u_stc_error_diag {
s_stc_error_diag s;
uint64_t l;
} u_stc_error_diag;
#endif //_PSYCHO_STC_H