blob: b3069a20bcd1f65bd8aca5f2f741043444b04325 [file] [log] [blame] [edit]
/*
* ========== Copyright Header Begin ==========================================
*
* OpenSPARC T1 Processor File: lsu.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 ============================================
*/
`define STB_PCX_WIDTH 115
`define STB_PCX_VLD 114
`define STB_PCX_RQ_HI 113
`define STB_PCX_RQ_LO 111
`define STB_PCX_NC 110
`define STB_PCX_TH_HI 109
`define STB_PCX_TH_LO 108
`define STB_PCX_FLSH 107
//`define STB_PCX_WY_HI 107
//`define STB_PCX_WY_LO 106
`define STB_PCX_SZ_HI 105
`define STB_PCX_SZ_LO 104
`define STB_PCX_AD_HI 103
`define STB_PCX_AD_LO 64
`define STB_PCX_DA_HI 63
`define STB_PCX_DA_LO 0
`define LMQ_WIDTH 65
`define LMQ_VLD 64
`define LMQ_DFLUSH 63
`define LMQ_PREF 62
`define LMQ_FPLD 61
`define LMQ_SIGNEXT 60
`define LMQ_BIGEND 59
`define LMQ_RD1_HI 58
`define LMQ_RD1_LO 54
`define LMQ_RD2_VLD 53
`define LMQ_RD2_HI 52
`define LMQ_RD2_LO 51
`define LMQ_RQ_HI 47
`define LMQ_RQ_LO 45
`define LMQ_NC 44
`define LMQ_WY_HI 43
`define LMQ_WY_LO 42
`define LMQ_SZ_HI 41
`define LMQ_SZ_LO 40
`define LMQ_AD_HI 39
`define LMQ_AD_LO 0
`define DATA_PA_HI 32
`define DATA_PA_LO 6
`define STB_DFQ_WIDTH 83
`define STB_DFQ_VLD 82
`define STB_DFQ_ATM 81
`define STB_DFQ_WY_HI 80
`define STB_DFQ_WY_LO 79
`define STB_DFQ_BF_ID_HI 78
`define STB_DFQ_BF_ID_LO 76
`define STB_DFQ_SZ_HI 75
`define STB_DFQ_SZ_LO 74
`define STB_DFQ_AD_HI 73
`define STB_DFQ_AD_LO 64
`define STB_DFQ_DA_HI 63
`define STB_DFQ_DA_LO 0
`define DFQ_WIDTH 151
`define DFQ_TH_HI 150
`define DFQ_TH_LO 149
`define DFQ_ST_CMPLT 148
`define DFQ_LD_TYPE 147
`define DFQ_INV_TYPE 146
`define DFQ_WY_HI 145
`define DFQ_WY_LO 144
`define DFQ_WY1_HI 143
`define DFQ_WY1_LO 142
`define DFQ_WY2_HI 141
`define DFQ_WY2_LO 140
`define DFQ_WY3_HI 139
`define DFQ_WY3_LO 138
`define DFQ_SI_HI 137
`define DFQ_SI_LO 132
`define DFQ_SI_DCD_HI 131
`define DFQ_SI_DCD_LO 128
`define DFQ_DA_HI 127
`define DFQ_DA_LO 0
`define DCFILL_WIDTH 183
`define DCFILL_TH_HI 182
`define DCFILL_TH_LO 181
`define DCFILL_ST 180
`define DCFILL_ST 180
`define DCFILL_LD 179
`define DCFILL_INV 178
`define DCFILL_DC_WR 177
`define DCFILL_RD_HI 176
`define DCFILL_RD_LO 172
`define DCFILL_WY_HI 171
`define DCFILL_WY_LO 170
`define DCFILL_SZ_HI 169
`define DCFILL_SZ_LO 168
`define DCFILL_AD_HI 167
`define DCFILL_AD_LO 128
`define DCFILL_DA_HI 127
`define DCFILL_DA_LO 0
// TLB Tag and Data Format
`define STLB_TAG_PID_HI 58
`define STLB_TAG_PID_LO 56
`define STLB_TAG_R 55
`define STLB_TAG_PARITY 54
`define STLB_TAG_VA_47_28_HI 53
`define STLB_TAG_VA_47_28_LO 34
`define STLB_TAG_VA_27_22_HI 33
`define STLB_TAG_VA_27_22_LO 28
`define STLB_TAG_VA_27_22_V 27
`define STLB_TAG_V 26
`define STLB_TAG_L 25
`define STLB_TAG_U 24
`define STLB_TAG_VA_21_16_HI 23
`define STLB_TAG_VA_21_16_LO 18
`define STLB_TAG_VA_21_16_V 17
`define STLB_TAG_VA_15_13_HI 16
`define STLB_TAG_VA_15_13_LO 14
`define STLB_TAG_VA_15_13_V 13
`define STLB_TAG_CTXT_12_0_HI 12
`define STLB_TAG_CTXT_12_0_LO 0
`define STLB_DATA_PARITY 42
`define STLB_DATA_PA_39_28_HI 41
`define STLB_DATA_PA_39_28_LO 30
`define STLB_DATA_PA_27_22_HI 29
`define STLB_DATA_PA_27_22_LO 24
`define STLB_DATA_27_22_SEL 23
`define STLB_DATA_PA_21_16_HI 22
`define STLB_DATA_PA_21_16_LO 17
`define STLB_DATA_21_16_SEL 16
`define STLB_DATA_PA_15_13_HI 15
`define STLB_DATA_PA_15_13_LO 13
`define STLB_DATA_15_13_SEL 12
`define STLB_DATA_V 11
`define STLB_DATA_NFO 10
`define STLB_DATA_IE 9
`define STLB_DATA_L 8
`define STLB_DATA_CP 7
`define STLB_DATA_CV 6
`define STLB_DATA_E 5
`define STLB_DATA_P 4
`define STLB_DATA_W 3
`define STLB_DATA_SPARE_HI 2
`define STLB_DATA_SPARE_LO 0
`define CAM_VA_47_28_HI 40
`define CAM_VA_47_28_LO 21
`define CAM_VA_47_28_V 20
`define CAM_VA_27_22_HI 19
`define CAM_VA_27_22_LO 14
`define CAM_VA_27_22_V 13
`define CAM_VA_21_16_HI 12
`define CAM_VA_21_16_LO 7
`define CAM_VA_21_16_V 6
`define CAM_VA_15_13_HI 5
`define CAM_VA_15_13_LO 3
`define CAM_VA_15_13_V 2
`define CAM_CTXT_GK 1
`define CAM_REAL_V 0
// I-TLB version - lsu_tlb only.
`define TLB_TAG_G 52
`define TLB_TAG_CTXT_HI 51
`define TLB_TAG_CTXT_LO 39
`define TLB_TAG_VA_HI 38
`define TLB_TAG_VA_LO 4
`define TLB_TAG_L 3
`define TLB_TAG_VA_21_19_V 2
`define TLB_TAG_VA_18_16_V 1
`define TLB_TAG_VA_15_13_V 0
`define TLB_DATA_PARITY 37
`define TLB_DATA_SZ_HI 36
`define TLB_DATA_SZ_LO 35
`define TLB_DATA_NFO 34
`define TLB_DATA_IE 33
`define TLB_DATA_PA_HI 32
`define TLB_DATA_PA_LO 6
`define TLB_DATA_CP 5
`define TLB_DATA_CV 4
`define TLB_DATA_E 3
`define TLB_DATA_P 2
`define TLB_DATA_W 1
`define TLB_DATA_G 0
// Invalidate Format
//addr<5:4>=00
`define CPX_A00_C0_LO 0
`define CPX_A00_C0_HI 3
`define CPX_A00_C1_LO 4
`define CPX_A00_C1_HI 7
`define CPX_A00_C2_LO 8
`define CPX_A00_C2_HI 11
`define CPX_A00_C3_LO 12
`define CPX_A00_C3_HI 15
`define CPX_A00_C4_LO 16
`define CPX_A00_C4_HI 19
`define CPX_A00_C5_LO 20
`define CPX_A00_C5_HI 23
`define CPX_A00_C6_LO 24
`define CPX_A00_C6_HI 27
`define CPX_A00_C7_LO 28
`define CPX_A00_C7_HI 31
//addr<5:4>=01
`define CPX_A01_C0_LO 32
`define CPX_A01_C0_HI 34
`define CPX_A01_C1_LO 35
`define CPX_A01_C1_HI 37
`define CPX_A01_C2_LO 38
`define CPX_A01_C2_HI 40
`define CPX_A01_C3_LO 41
`define CPX_A01_C3_HI 43
`define CPX_A01_C4_LO 44
`define CPX_A01_C4_HI 46
`define CPX_A01_C5_LO 47
`define CPX_A01_C5_HI 49
`define CPX_A01_C6_LO 50
`define CPX_A01_C6_HI 52
`define CPX_A01_C7_LO 53
`define CPX_A01_C7_HI 55
//addr<5:4>=10
`define CPX_A10_C0_LO 56
`define CPX_A10_C0_HI 59
`define CPX_A10_C1_LO 60
`define CPX_A10_C1_HI 63
`define CPX_A10_C2_LO 64
`define CPX_A10_C2_HI 67
`define CPX_A10_C3_LO 68
`define CPX_A10_C3_HI 71
`define CPX_A10_C4_LO 72
`define CPX_A10_C4_HI 75
`define CPX_A10_C5_LO 76
`define CPX_A10_C5_HI 79
`define CPX_A10_C6_LO 80
`define CPX_A10_C6_HI 83
`define CPX_A10_C7_LO 84
`define CPX_A10_C7_HI 87
//addr<5:4>=11
`define CPX_A11_C0_LO 88
`define CPX_A11_C0_HI 90
`define CPX_A11_C1_LO 91
`define CPX_A11_C1_HI 93
`define CPX_A11_C2_LO 94
`define CPX_A11_C2_HI 96
`define CPX_A11_C3_LO 97
`define CPX_A11_C3_HI 99
`define CPX_A11_C4_LO 100
`define CPX_A11_C4_HI 102
`define CPX_A11_C5_LO 103
`define CPX_A11_C5_HI 105
`define CPX_A11_C6_LO 106
`define CPX_A11_C6_HI 108
`define CPX_A11_C7_LO 109
`define CPX_A11_C7_HI 111
// cpuid - 4b
`define CPX_INV_CID_LO 118
`define CPX_INV_CID_HI 120
// CPUany, addr<5:4>=00,10
`define CPX_AX0_INV_DVLD 0
`define CPX_AX0_INV_IVLD 1
`define CPX_AX0_INV_WY_LO 2
`define CPX_AX0_INV_WY_HI 3
// CPUany, addr<5:4>=01,11
`define CPX_AX1_INV_DVLD 0
`define CPX_AX1_INV_WY_LO 1
`define CPX_AX1_INV_WY_HI 2
// CPUany, addr<5:4>=01,11
`define CPX_AX1_INV_DVLD 0
`define CPX_AX1_INV_WY_LO 1
`define CPX_AX1_INV_WY_HI 2
// DTAG parity error Invalidate
`define CPX_PERR_DINV 123 // dcache inv
`define CPX_PERR_DINV_AD5 122 // addr bit 5
`define CPX_PERR_DINV_AD4 121 // addr bit 4
// CPX BINIT STORE
`define CPX_BINIT_STACK 125 // dcache inv