@@ -65,9 +65,101 @@ enum GrackleReg : uint32_t {
6565 MCCR4 = 0xFC // memory control configuration 4
6666};
6767
68+ /* PICR1 bit definitions. */
69+ enum {
70+ CF_L2_MP_SHIFT = 0 ,
71+ CF_L2_MP_MASK = 3 << CF_L2_MP_SHIFT,
72+ SPECULATIVE_PCI_READS = 1 << 2 ,
73+ CF_APARK = 1 << 3 ,
74+ CF_LOOP_SNOOP = 1 << 4 ,
75+ LE_MODE = 1 << 5 ,
76+ ST_GATH_EN = 1 << 6 ,
77+ NO_PORT_REGS = 1 << 7 ,
78+ CF_EXTERNAL_L2 = 1 << 8 ,
79+ CF_DPARK = 1 << 9 ,
80+ TEA_EN = 1 << 10 , // enabled during ROM flashing
81+ MCP_EN = 1 << 11 ,
82+ FLASH_WR_EN = 1 << 12 , // enabled during ROM flashing, disabled after ROM flashing
83+ CF_LBA_EN = 1 << 13 ,
84+ CF_MP_ID_SHIFT = 14 ,
85+ CF_MP_ID_MASK = 3 << CF_MP_ID_SHIFT,
86+ ADDRESS_MAP = 1 << 16 ,
87+ PROC_TYPE_SHIFT = 17 ,
88+ PROC_TYPE_MASK = 3 << PROC_TYPE_SHIFT,
89+ XIO_MODE = 1 << 19 ,
90+ RCS0 = 1 << 20 ,
91+ CF_CACHE_1G = 1 << 21 ,
92+ CF_BREAD_WS_SHIFT = 22 ,
93+ CF_BREAD_WS_MASK = 3 << CF_BREAD_WS_SHIFT,
94+ CF_CBA_MASK_SHIFT = 24 ,
95+ CF_CBA_MASK_MASK = 0xff << CF_CBA_MASK_SHIFT,
96+ };
97+
98+ /* PICR2 bit definitions. */
99+ enum {
100+ CF_WDATA = 0 ,
101+ CF_DOE = 1 ,
102+ CF_APHASE_WS_SHIFT = 2 ,
103+ CF_APHASE_WS_MASK = 3 << CF_APHASE_WS_SHIFT,
104+ CF_L2_SIZE_SHIFT = 4 ,
105+ CF_L2_SIZE_MASK = 3 << CF_L2_SIZE_SHIFT,
106+ CF_TOE_WIDTH = 6 ,
107+ CF_FAST_CASTOUT = 7 ,
108+ CF_TWO_BANKS = 8 ,
109+ CF_L2_HIT_DELAY_SHIFT = 9 ,
110+ CF_L2_HIT_DELAY_MASK = 3 << CF_L2_HIT_DELAY_SHIFT,
111+ CF_RWITM_FILL = 11 ,
112+ CF_INV_MODE = 12 ,
113+ CF_HOLD = 13 ,
114+ CF_ADDR_ONLY_DISABLE = 14 ,
115+ // RESERVED = 15,
116+ CF_HIT_HIGH = 16 ,
117+ CF_MOD_HIGH = 17 ,
118+ CF_SNOOP_WS_SHIFT = 18 ,
119+ CF_SNOOP_WS_MASK = 3 << CF_SNOOP_WS_SHIFT,
120+ CF_WMODE_SHIFT = 20 ,
121+ CF_WMODE_MASK = 3 << CF_WMODE_SHIFT,
122+ CF_DATA_RAM_TYPE_SHIFT = 22 ,
123+ CF_DATA_RAM_TYPE_MASK = 3 << CF_DATA_RAM_TYPE_SHIFT,
124+ CF_FAST_L2_MODE = 24 ,
125+ FLASH_WR_LOCKOUT = 25 , // Programmer Mode changes this to 0 which allows flash writing.
126+ CF_FF0_LOCAL = 26 ,
127+ NO_SNOOP_EN = 27 ,
128+ CF_FLUSH_L2 = 28 ,
129+ NO_SERIAL_CFG = 29 ,
130+ L2_EN = 30 ,
131+ L2_UPDATE_EN = 31 ,
132+ };
133+
68134/* MCCR1 bit definitions. */
69135enum {
70- MEMGO = 1 << 19 ,
136+ BANK_0_ROW_SHIFT = 0 ,
137+ BANK_0_ROW_MASK = 3 << BANK_0_ROW_SHIFT,
138+ BANK_1_ROW_SHIFT = 2 ,
139+ BANK_1_ROW_MASK = 3 << BANK_1_ROW_SHIFT,
140+ BANK_2_ROW_SHIFT = 4 ,
141+ BANK_2_ROW_MASK = 3 << BANK_2_ROW_SHIFT,
142+ BANK_3_ROW_SHIFT = 6 ,
143+ BANK_3_ROW_MASK = 3 << BANK_3_ROW_SHIFT,
144+ BANK_4_ROW_SHIFT = 8 ,
145+ BANK_4_ROW_MASK = 3 << BANK_4_ROW_SHIFT,
146+ BANK_5_ROW_SHIFT = 10 ,
147+ BANK_5_ROW_MASK = 3 << BANK_5_ROW_SHIFT,
148+ BANK_6_ROW_SHIFT = 12 ,
149+ BANK_6_ROW_MASK = 3 << BANK_6_ROW_SHIFT,
150+ BANK_7_ROW_SHIFT = 14 ,
151+ BANK_7_ROW_MASK = 3 << BANK_7_ROW_SHIFT,
152+ PCKEN = 1 << 16 ,
153+ RAM_TYPE = 1 << 17 ,
154+ SREN = 1 << 18 ,
155+ MEMGO = 1 << 19 ,
156+ BURST = 1 << 20 ,
157+ _8N64 = 1 << 21 , // 1 = the MPC106 is configured for an 8-bit data path for ROM bank 0 rather than 64-bit
158+ _501_MODE = 1 << 22 ,
159+ ROMFAL_SHIFT = 23 ,
160+ ROMFAL_MASK = 31 << ROMFAL_SHIFT,
161+ ROMNAL_SHIFT = 28 ,
162+ ROMNAL_MASK = 15 << ROMNAL_SHIFT,
71163};
72164
73165class MPC106 : public MemCtrlBase , public PCIDevice , public PCIHost {
0 commit comments