OpenCores
URL https://opencores.org/ocsvn/s1_core/s1_core/trunk

Subversion Repositories s1_core

[/] [s1_core/] [trunk/] [hdl/] [rtl/] [sparc_core/] [include/] [tlu.h] - Rev 113

Compare with Previous | Blame | View Log

/*
* ========== Copyright Header Begin ==========================================
* 
* OpenSPARC T1 Processor File: tlu.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 ============================================
*/
// ifu trap types
`define INST_ACC_EXC    9'h008
`define INST_ACC_MMU_MS 9'h009
`define INST_ACC_ERR    9'h00a
`define ILL_INST        9'h010
`define PRIV_OPC        9'h011
`define FP_DISABLED     9'h020
`define DATA_ACC_EXC    9'h030
 
`define         MRA_TSB_PS0_HI      155
`define         MRA_TSB_PS0_LO      108
`define         MRA_TSB_PS1_HI      107
`define         MRA_TSB_PS1_LO      60
`define         MRA_TACCESS_HI  59
`define         MRA_TACCESS_LO  12
`define         MRA_CTXTCFG_HI    11
`define         MRA_CTXTCFG_LO    6
//
// modified for hypervisor support
//
`define TLU_THRD_NUM     4
`define	TLU_TT_LO	     0
`define	TLU_TT_HI	     8
`define	TLU_CWP_LO	     9
`define	TLU_CWP_HI	    11
`define	TLU_PSTATE_LO	12
`define	TLU_PSTATE_HI	19
`define	TLU_ASI_LO	    20
`define	TLU_ASI_HI	    27
`define	TLU_CCR_LO	    28
`define	TLU_CCR_HI	    35
`define	TLU_GL_LO	    36 
`define	TLU_GL_HI	    37 
`define	TLU_NPC_LO	    38
`define	TLU_NPC_HI	    84
`define	TLU_PC_LO	    85
`define	TLU_PC_HI	   131
`define	TLU_HTSTATE_LO 132
`define	TLU_HTSTATE_HI 135
`define	TLU_RD_NPC_HI	83
`define	TLU_RD_PC_LO	84
`define	TLU_RD_PC_HI   129
`define	TLU_RD_HTSTATE_LO 130
`define	TLU_RD_HTSTATE_HI 133
//
`define	TSA_PSTATE_VRANGE1_LO 12
`define	TSA_PSTATE_VRANGE1_HI 15
// modified due to bug 2588
// `define	TSA_PSTATE_VRANGE2_LO 16 
`define	TSA_PSTATE_VRANGE2_LO 18 
`define	TSA_PSTATE_VRANGE2_HI 19
//
`define	TLU_TSA_WIDTH     136 
`define	TLU_TDP_TSA_WIDTH 134 
`define	TSA_HTSTATE_WIDTH   4 
`define	TSA_GLOBAL_WIDTH    2 
`define	TSA_CCR_WIDTH       8 
`define	TSA_ASI_WIDTH       8 
`define	TSA_PSTATE_WIDTH    8 
`define	TSA_CWP_WIDTH       3 
`define	TSA_TTYPE_WIDTH     9 
`define	TLU_GLOBAL_WIDTH    4 
`define	TLU_HPSTATE_WIDTH   5 
//
// added due to Niagara SRAMs methodology
// The following defines have been replaced due
// the memory macro replacement from:
// bw_r_rf32x144 -> 2x bw_r_rf32x80
/*
`define	TSA_MEM_WIDTH     144 
`define	TSA_HTSTATE_HI    142 //  3 bits 
`define	TSA_HTSTATE_LO    140 
`define	TSA_TPC_HI        138 // 47 bits 
`define	TSA_TPC_LO         92
`define	TSA_TNPC_HI        90 // 47 bits
`define	TSA_TNPC_LO        44 
`define	TSA_TSTATE_HI      40 // 29 bits 
`define	TSA_TSTATE_LO      12 
`define	TSA_TTYPE_HI        8 //  9 bits
`define	TSA_TTYPE_LO        0
`define	TSA_MEM_CWP_LO	   12
`define	TSA_MEM_CWP_HI	   14
`define	TSA_MEM_PSTATE_LO  15
`define	TSA_MEM_PSTATE_HI  22
`define	TSA_MEM_ASI_LO	   23
`define	TSA_MEM_ASI_HI	   30
`define	TSA_MEM_CCR_LO	   31
`define	TSA_MEM_CCR_HI	   38
`define	TSA_MEM_GL_LO	   39 
`define	TSA_MEM_GL_HI	   40 
*/
`define	TSA_MEM_WIDTH   80 
`define	TSA1_HTSTATE_HI 63 //  4 bits 
`define	TSA1_HTSTATE_LO 60 
`define	TSA1_TNPC_HI    58 // 47 bits
`define	TSA1_TNPC_LO    12
`define	TSA1_TTYPE_HI    8 //  9 bits
`define	TSA1_TTYPE_LO    0
`define	TSA0_TPC_HI     78 // 47 bits 
`define	TSA0_TPC_LO     32
`define	TSA0_TSTATE_HI  28 // 29 bits 
`define	TSA0_TSTATE_LO   0 
//
`define	TSA0_MEM_CWP_LO	    0 
`define	TSA0_MEM_CWP_HI	    2
`define	TSA0_MEM_PSTATE_LO  3 
`define	TSA0_MEM_PSTATE_HI 10
`define	TSA0_MEM_ASI_LO	   11
`define	TSA0_MEM_ASI_HI	   18
`define	TSA0_MEM_CCR_LO	   19
`define	TSA0_MEM_CCR_HI	   26
`define	TSA0_MEM_GL_LO	   27
`define	TSA0_MEM_GL_HI	   28
 
// HPSTATE position definitions within wsr
`define	WSR_HPSTATE_ENB  11 
`define	WSR_HPSTATE_IBE  10 
`define	WSR_HPSTATE_RED   5 
`define	WSR_HPSTATE_PRIV  2 
`define	WSR_HPSTATE_TLZ   0 
 
// TSTATE postition definitions within wsr
`define	WSR_TSTATE_GL_HI  41 // 2b
`define	WSR_TSTATE_GL_LO  40 
`define	WSR_TSTATE_CCR_HI 39 // 8b
`define	WSR_TSTATE_CCR_LO 32 
`define	WSR_TSTATE_ASI_HI 31 // 8b
`define	WSR_TSTATE_ASI_LO 24 
`define	WSR_TSTATE_PS2_HI 17 // 4b
// modified due to bug 2588
`define	WSR_TSTATE_PS2_LO  16 
`define	WSR_TSTATE_PS1_HI  12 // 4b
// added for bug 2584 
`define	WSR_TSTATE_PS_PRIV 10 // 4b
`define	WSR_TSTATE_PS1_LO   9
`define	WSR_TSTATE_CWP_HI   2 // 3b
`define	WSR_TSTATE_CWP_LO   0 
//
`define	WSR_TSTATE_WIDTH   29 
`define	RDSR_TSTATE_WIDTH  48 
`define	RDSR_HPSTATE_WIDTH 12 
`define	TLU_ASR_DATA_WIDTH 64 
`define	TLU_ASR_ADDR_WIDTH  7 
 
`define SFTINT_WIDTH     17 
//
// tick_cmp and stick_cmp definitions
`define TICKCMP_RANGE_HI 60
`define TICKCMP_RANGE_LO  0
`define TICKCMP_INTDIS   63 
`define SFTINT_TICK_CMP   0 
`define SFTINT_STICK_CMP 16 
//
// PIB WRAP
`define SFTINT_PIB_WRAP 15 
`define PIB_OVERFLOW_TTYPE 7'h4f 
 
// HPSTATE postition definitions
`define	HPSTATE_IBE  4 
`define	HPSTATE_ENB  3 
`define	HPSTATE_RED  2 
`define	HPSTATE_PRIV 1 
`define	HPSTATE_TLZ  0 
 
// HTBA definitions
`define	TLU_HTBA_WIDTH  34 // supported physical width 
`define	TLU_HTBA_HI     47 
`define	TLU_HTBA_LO     14 
 
// TBA definitions
`define	TLU_TBA_WIDTH  33 // supported physical width 
`define	TLU_TBA_HI     47 
`define	TLU_TBA_LO     15 
 
`define	TPC		 5'h0 	
`define	TNPC	 5'h1 	
`define	TSTATE	 5'h2 	
`define	TT		 5'h3 	
`define	TICK	 5'h4 	
`define	TBA		 5'h5 	
`define	PSTATE	 5'h6 	
`define	TL		 5'h7 	
`define	PIL		 5'h8 
`define	HPSTATE	 5'h0 
`define	HTSTATE	 5'h1 
`define	HINTP	 5'h3 
`define	HTBA	 5'h5 
`define	HTICKCMP 5'h1f 
`define	STICKCMP 5'h19 
`define	TICKCMP  5'h17 
//
// added for the hypervisor support
`define	PSTATE_VRANGE1_LO	1
`define	PSTATE_VRANGE1_HI   4	
// modified due to bug 2588
`define	PSTATE_VRANGE2_LO	8
`define	PSTATE_VRANGE2_HI   9
`define	PSTATE_TRUE_WIDTH  12 
 
`define PSTATE_AG 	 0
`define PSTATE_IE 	 1
`define PSTATE_PRIV  2
`define PSTATE_AM 	 3
`define PSTATE_PEF 	 4
`define PSTATE_RED 	 5
`define PSTATE_MM_LO 6
`define PSTATE_MM_HI 7
`define PSTATE_TLE 	 8
`define PSTATE_CLE 	 9
`define PSTATE_MG 	10
`define PSTATE_IG 	11
//
// compressed PSTATE WSR definitions
`define	WSR_PSTATE_VRANGE1_LO	0
`define	WSR_PSTATE_VR_PRIV      1
`define	WSR_PSTATE_VRANGE1_HI   3	
`define	WSR_PSTATE_VRANGE2_LO	4
`define	WSR_PSTATE_VRANGE2_HI   5
`define	WSR_PSTATE_VR_WIDTH     6
 
`define MAXTL  3'b110
`define MAXTL_LESSONE 3'b101
`define MAXSTL 3'b010		 
`define MAXSTL_TL 3'b010 // Saturation point for GL and TL (supervisor) 
`define MAXSTL_GL 2'b10  // Saturation point for GL and TL (supervisor) 
`define MAXGL  4'b0011	 // Saturation point for GL (hypervisor)	
`define MAXGL_GL  2'b11	 // Saturation point for GL (hypervisor)	
//
// ASI_QUEUE for hypervisor
// Queues are: CPU_MONODO
//             DEV_MONODO
//             RESUMABLE_ERROR
//             NON_RESUMABLE_ERROR
//
`define        ASI_VA_WIDTH       48 
`define        TLU_ASI_QUE_HI     13
`define        TLU_ASI_QUE_LO      6
`define        TLU_ASI_QUE_WIDTH   8
`define        TLU_ASI_VA_WIDTH   10 
`define        TLU_ASI_STATE_WIDTH 8 
 
// for address range checking
`define        TLU_ASI_QUE_VA_HI   9
`define        TLU_ASI_QUE_VA_LO   3 
 
`define        TLU_ASI_QUE_ASI   8'h25 
`define        CPU_MONDO_HEAD   10'h3c0
`define        CPU_MONDO_TAIL   10'h3c8
`define        DEV_MONDO_HEAD   10'h3d0
`define        DEV_MONDO_TAIL   10'h3d8
`define        RESUM_ERR_HEAD   10'h3e0
`define        RESUM_ERR_TAIL   10'h3e8
`define        NRESUM_ERR_HEAD  10'h3f0
`define        NRESUM_ERR_TAIL  10'h3f8
`define        CPU_MONDO_TRAP   7'h7c // only 7 bits are defined; upper two are 2'b00
`define        DEV_MONDO_TRAP   7'h7d // only 7 bits are defined; upper two are 2'b00 
`define        TLZ_TRAP         7'h5f // only 7 bits are defined; upper two are 2'b00 
`define        HWINT_INT        7'h60 // only 7 bits are defined; upper two are 2'b00 
//
// Niagara scratch-pads
// VA address of 0x20 and 0x28 are exclusive to hypervisor
// 
`define        TLU_SCPD_DATA_WIDTH  64
`define        SCPD_RW_ADDR_WIDTH     5 
`define        SCPD_ASI_VA_ADDR_WIDTH 3  
 
`define        PRI_SCPD_ASI_STATE     8'h20
`define        SCPD_ASI_VA_ADDR_LO   10'h000
`define        SCPD_ASI_VA_ADDR_HI   10'h038
//
// range checking 
`define        TLU_ASI_SCPD_VA_HI  5   
`define        TLU_ASI_SCPD_VA_LO  3   
 
`define        HPRI_SCPD_ASI_STATE    8'h4f
`define        HSCPD_ASI_VA_ADDR_LO   3'h4
`define        HSCPD_ASI_VA_ADDR_HI   3'h5
 
// PIB related definitions
// Bit definition for events
`define        PIB_INSTR_COUNT   3'bxxx
`define        PIB_SB_FULL_CNT   3'b000
`define        PIB_FP_INST_CNT   3'b001
`define        PIB_IC_MISS_CNT   3'b010
`define        PIB_DC_MISS_CNT   3'b011
`define        PIB_ITLB_MISS_CNT 3'b100
`define        PIB_DTLB_MISS_CNT 3'b101
`define        PIB_L2_IMISS_CNT  3'b110
`define        PIB_L2_DMISS_CNT  3'b111
// 
// PIB related definitions
// PCR and PIC address definitions
`define        PCR_ASR_ADDR		  7'b0010000
`define        PIC_ASR_PRIV_ADDR  7'b0110001
`define        PIC_ASR_NPRIV_ADDR 7'b0010001
// 
// PCR bit definitions
`define        WSR_PCR_PRIV   0 // PIC privilege 
`define        WSR_PCR_ST     1 // supervior trace 
`define        WSR_PCR_UT     2 // user trace 
`define        WSR_PCR_SL_LO  4 // PICL event mask 
`define        WSR_PCR_SL_HI  6 // 
`define        WSR_PCR_CL_OVF 8 // 
`define        WSR_PCR_CH_OVF 9 // 
//
`define        PIB_PCR_WIDTH  8 
`define        PIB_PCR_PRIV   0 // PIC privilege 
`define        PIB_PCR_ST     1 // privilege event trace 
`define        PIB_PCR_UT     2 // user event trace 
`define        PIB_PCR_SL_LO  3 // PICL event encode 
`define        PIB_PCR_SL_HI  5 // 
`define        PIB_PCR_CL_OVF 6 // 
`define        PIB_PCR_CH_OVF 7 // 
 
// PIC definitions
`define        PIB_PIC_FULL_WIDTH 64
`define        PIB_PIC_CNT_WIDTH  33
`define        PIB_PIC_CNT_WRAP   32
`define        PIB_PICH_CNT_HI    63
`define        PIB_PICH_CNT_LO    32
`define        PIB_PICL_CNT_HI    31
`define        PIB_PICL_CNT_LO     0
`define        PIB_EVQ_CNT_WIDTH   3
// PIC  mask bit position definitions
`define        PICL_MASK_WIDTH     8
`define        PICL_MASK_SB_FULL   0 
`define        PICL_MASK_FP_INST   1 
`define        PICL_MASK_IC_MISS   2
`define        PICL_MASK_DC_MISS   3
`define        PICL_MASK_ITLB_MISS 4
`define        PICL_MASK_DTLB_MISS 5
`define        PICL_MASK_L2_IMISS  6
`define        PICL_MASK_L2_DMISS  7
 
// added define from sparc_tlu_int.v 
`define INT_THR_HI  12
`define INT_VEC_HI 5
`define INT_VEC_LO 0
`define INT_THR_HI  12
`define INT_THR_LO   8
`define INT_TYPE_HI 17
`define INT_TYPE_LO 16
`define TLU_INRR_ASI 8'h72
`define TLU_INDR_ASI 8'h73
`define TLU_INVR_ASI 8'h74
//
// shadow scan related definitions 
`define TLU_SSCAN_WIDTH 63 
// modified due to logic redistribution
// `define TCL_SSCAN_WIDTH 12 
`define TCL_SSCAN_WIDTH 3 
`define MISCTL_SSCAN_WIDTH 9 
`define TDP_SSCAN_WIDTH 51 
`define TDP_SSCAN_LO  0 
`define TDP_SSCAN_HI 50 
// `define TCL_SSCAN_LO 51 
`define MISCTL_SSCAN_LO 51 
`define MISCTL_SSCAN_HI 59 
`define TCL_SSCAN_LO 60 
`define TCL_SSCAN_HI 62 
// 
// position definitions - TDP
`define TDP_SSCAN_PC_LO    0 
`define TDP_SSCAN_PC_HI   45 
`define TDP_SSCAN_PS_IE   46 
`define TDP_SSCAN_PS_PRIV 47 
`define TDP_SSCAN_HPS_LO  48
`define TDP_SSCAN_HPS_HI  50  
// 
// position definitions - TCL
`define TCL_SSCAN_TT_LO    0 
`define TCL_SSCAN_TT_HI    8 
`define TCL_SSCAN_TL_LO    9
`define TCL_SSCAN_TL_HI   11
// 
// To speedup POR for verification purposes
`define RSTVADDR_BASE 34'h3_ffff_c000 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.