16 #ifndef __CORE_FEATURE_IINFO_H__
17 #define __CORE_FEATURE_IINFO_H__
37 #include "core_feature_base.h"
43 #ifdef __IINFO_BASEADDR
58 __IM uint32_t cmo_cfg:1;
59 __IM uint32_t cmo_pft:1;
60 __IM uint32_t cmo_size:4;
61 __IM uint32_t cbozero_size:4;
65 } IINFO_MCMO_INFO_Type;
72 __IM uint32_t exist:1;
73 __IM uint32_t vector:1;
74 __IM uint32_t vector_b:1;
75 __IM uint32_t vector_k:1;
76 __IM uint32_t smepmp:1;
77 __IM uint32_t sscofpmf:1;
79 __IM uint32_t zfhmin:1;
81 __IM uint32_t svnapot:1;
82 __IM uint32_t svpbmt:1;
83 __IM uint32_t svinval:1;
85 __IM uint32_t zve32x:1;
86 __IM uint32_t zve32f:1;
87 __IM uint32_t zve64x:1;
88 __IM uint32_t zve64f:1;
89 __IM uint32_t zve64d:1;
90 __IM uint32_t zimop:1;
91 __IM uint32_t zcmop:1;
92 __IM uint32_t zicond:1;
93 __IM uint32_t zihintntl:1;
94 __IM uint32_t zihintpause:1;
96 __IM uint32_t zvfhmin:1;
97 __IM uint32_t smrnmi:1;
98 __IM uint32_t zihpm:1;
99 __IM uint32_t smcntrpmf:1;
100 __IM uint32_t zicntr:1;
101 __IM uint32_t zawrs:1;
105 } IINFO_ISA_SUPPORT0_Type;
112 __IM uint32_t exist:1;
113 __IM uint32_t ssqosid:1;
114 __IM uint32_t zicflip:1;
115 __IM uint32_t zicfiss:1;
116 __IM uint32_t smctr:1;
117 __IM uint32_t zacas:1;
118 __IM uint32_t zabha:1;
119 __IM uint32_t smdbltrp:1;
120 __IM uint32_t ssdbltrp:1;
121 __IM uint32_t smcdeleg:1;
122 __IM uint32_t smmpm:1;
123 __IM uint32_t smnpm:1;
124 __IM uint32_t ssnpm:1;
125 __IM uint32_t smstateen:1;
126 __IM uint32_t sstateen:1;
127 __IM uint32_t smcsrind:1;
128 __IM uint32_t sscsrind:1;
129 __IM uint32_t svadu:1;
133 } IINFO_ISA_SUPPORT1_Type;
140 __IM uint32_t exist:1;
141 __IM uint32_t fpu_cycle:5;
142 __IM uint32_t high_div:1;
143 __IM uint32_t dcache_2stage:1;
144 __IM uint32_t delay_branch_flush:1;
145 __IM uint32_t bus_type:3;
146 __IM uint32_t dual_issue:1;
147 __IM uint32_t cross_4k:1;
148 __IM uint32_t dlm_2stage:1;
149 __IM uint32_t lsu_cut_fwd:1;
150 __IM uint32_t dsp_cycle:4;
151 __IM uint32_t ifu_cut_timing:1;
152 __IM uint32_t mem_cut_timing:1;
153 __IM uint32_t dcache_prefetch:1;
154 __IM uint32_t dcache_lbuf_num:5;
155 __IM uint32_t mul_cyc:3;
159 } IINFO_PERFORMANCE_CFG0_Type;
166 __IM uint32_t exist:1;
167 __IM uint32_t vfpu_cyc:5;
168 __IM uint32_t bht_entry_width:5;
169 __IM uint32_t high_performance:1;
170 __IM uint32_t agu_quick_forward:1;
171 __IM uint32_t cau_fwd:1;
172 __IM uint32_t hpm_ver:2;
176 } IINFO_PERFORMANCE_CFG1_Type;
183 __IOM uint32_t l1d_ena:1;
184 __IOM uint32_t cc_ena:1;
185 __IOM uint32_t scalar_ena:1;
186 __IOM uint32_t vector_ena:1;
187 __IOM uint32_t write_pref_ena:1;
188 __IOM uint32_t cross_page_pref_ena:1;
189 __IOM uint32_t mmu_ena:1;
190 __IOM uint32_t pl2_ena:1;
191 __IOM uint32_t pref_conflict_stop_th:4;
192 __IOM uint32_t pref_conflict_decr_sel:3;
211 __IM uint32_t level:8;
212 __IM uint32_t pref_conflict_stop_th:4;
213 __IM uint32_t pref_conflict_decr_sel:3;
217 } IINFO_PFL1DCTRL1_Type;
219 #define IINFO_PFL1DCTRL1_LEVEL_Pos (1UL << 0)
220 #define IINFO_PFL1DCTRL1_LEVEL_Msk (0xFFUL << IINFO_PFL1DCTRL1_LEVEL_Pos)
222 #define IINFO_PFL1DCTRL1_DISABLE (0UL)
223 #define IINFO_PFL1DCTRL1_L1D_ENA (1UL << 0)
224 #define IINFO_PFL1DCTRL1_CC_ENA (1UL << 1)
225 #define IINFO_PFL1DCTRL1_SCALAR_ENA (1UL << 2)
226 #define IINFO_PFL1DCTRL1_VECTOR_ENA (1UL << 3)
227 #define IINFO_PFL1DCTRL1_WRITE_PREF_ENA (1UL << 4)
228 #define IINFO_PFL1DCTRL1_CROSS_PAGE_PREF_ENA (1UL << 5)
229 #define IINFO_PFL1DCTRL1_MMU_PREF_ENA (1UL << 6)
230 #define IINFO_PFL1DCTRL1_PL2_ENA (1UL << 7)
237 __IOM uint32_t degree_incr_th:6;
238 __IOM uint32_t degree_decr_th:6;
239 __IOM uint32_t next_line_ena_th:4;
240 __IOM uint32_t write_noalloc_l1_th:2;
241 __IOM uint32_t write_noalloc_l2_th:2;
245 } IINFO_PFL1DCTRL2_Type;
252 __IOM uint32_t ws_tmout_max:12;
254 __IOM uint32_t nc_tmout_max:8;
255 __IOM uint32_t dev_store_early_ret: 1;
259 } IINFO_MERGEL1DCTRL_Type;
266 __IOM uint32_t reg_prot_chck_en:2;
270 } IINFO_SAFETY_CTRL_Type;
278 __IOM uint32_t pf_access: 1;
279 __IOM uint32_t cache_csr_access: 1;
280 __IOM uint32_t pma_csr_access: 1;
284 } IINFO_ACCESS_CTRL_Type;
291 __IOM uint32_t max_stream_l1_degree:4;
293 __IOM uint32_t max_stream_l2_degree:7;
295 __IOM uint32_t max_stride_cplx_l1_degree:4;
297 __IOM uint32_t max_stride_cplx_l2_degree:7;
301 } IINFO_PFL1DCTRL3_Type;
308 __IOM uint32_t pf_enable:1;
309 __IOM uint32_t cc_short_enable:1;
313 } IINFO_PFL1DCTRL4_Type;
320 __IM uint32_t pf_cfg:8;
321 __IM uint32_t l2_pf_lbuf_num:8;
322 __IM uint32_t l2_pf_dbuf_num:8;
323 __IM uint32_t pf_ver:8;
326 } IINFO_PFL1INFO_Type;
330 __IM uint32_t mpasize;
331 __IM IINFO_MCMO_INFO_Type cmo_info;
332 __IM uint32_t sec_base_addr_lo;
333 __IM uint32_t sec_base_addr_hi;
334 __IM uint32_t sec_cfg_info;
335 __IM uint32_t reserved0[4];
336 __IM uint32_t mvlm_cfg_lo;
337 __IM uint32_t mvlm_cfg_hi;
338 __IM uint32_t flash_base_addr_lo;
339 __IM uint32_t flash_base_addr_hi;
340 __IM uint32_t reserved1[7];
341 __IM uint32_t vpu_cfg_info;
342 __IOM uint32_t mem_region0_cfg_lo;
343 __IM uint32_t mem_region0_cfg_hi;
344 __IOM uint32_t mem_region1_cfg_lo;
345 __IM uint32_t mem_region1_cfg_hi;
346 uint32_t reserved2[3];
347 __IM IINFO_ISA_SUPPORT0_Type isa_support0;
348 __IM IINFO_ISA_SUPPORT1_Type isa_support1;
349 uint32_t reserved3[2];
350 __IOM uint32_t mcppi_cfg_lo;
351 __IM uint32_t mcppi_cfg_hi;
352 __IOM uint32_t mpftctl;
354 __IM IINFO_PERFORMANCE_CFG0_Type performance_cfg0;
355 __IM IINFO_PERFORMANCE_CFG1_Type performance_cfg1;
356 uint32_t reserved5[26];
357 __IOM IINFO_PFL1DCTRL1_Type pfl1dctrl1;
358 __IOM IINFO_PFL1DCTRL2_Type pfl1dctrl2;
359 __IOM IINFO_MERGEL1DCTRL_Type mergel1dctrl;
361 __IOM IINFO_SAFETY_CTRL_Type safety_ctrl;
362 __IOM IINFO_ACCESS_CTRL_Type access_ctrl;
363 uint32_t reserved7[2];
364 __IOM IINFO_PFL1DCTRL3_Type pfl1dctrl3;
365 __IOM IINFO_PFL1DCTRL4_Type pfl1dctrl4;
366 __IM IINFO_PFL1INFO_Type pfl1info;
367 uint32_t reserved8[27];
368 __IOM uint32_t crc_rf0;
369 __IOM uint32_t crc_rf1;
370 __IOM uint32_t crc_fp0;
371 __IM uint32_t etrace_info;
372 __IOM uint32_t ecc_inj_addr_lo;
373 __IOM uint32_t ecc_inj_addr_hi;
374 __IOM uint32_t ecc_inj_way;
375 uint32_t reserved9[83];
376 __IOM uint32_t mem_crc_x22_lo;
377 __IOM uint32_t mem_crc_x22_hi;
378 __IOM uint32_t mem_crc_x23_lo;
379 __IOM uint32_t mem_crc_x23_hi;
380 __IOM uint32_t mem_crc_f23_lo;
381 __IOM uint32_t mem_crc_f23_hi;
385 #define IINFO_BASE __IINFO_BASEADDR
386 #define IINFO ((IINFO_Type *)IINFO_BASE)
392 IINFO_HPM_VER_UNKNOWN = 0,
396 } IINFO_HPM_VER_Type;
416 return IINFO->cmo_info.b.cmo_cfg;
427 return IINFO->cmo_info.b.cmo_cfg && IINFO->cmo_info.b.cmo_pft;
439 if (!IINFO->performance_cfg1.b.exist) {
440 return IINFO_HPM_VER_UNKNOWN;
442 return (IINFO_HPM_VER_Type)IINFO->performance_cfg1.b.hpm_ver;
482 IINFO->pfl1dctrl1.d = (IINFO->pfl1dctrl1.d & ~IINFO_PFL1DCTRL1_LEVEL_Msk) |
483 _VAL2FLD(IINFO_PFL1DCTRL1_LEVEL, val);
495 return IINFO->pfl1dctrl1.lv.level;
505 IINFO->pfl1dctrl2.d = val;
515 return IINFO->pfl1dctrl2.d;
525 IINFO->pfl1dctrl3.d = val;
535 return IINFO->pfl1dctrl3.d;
544 IINFO->pfl1dctrl4.b.pf_enable = 1;
553 IINFO->pfl1dctrl4.b.pf_enable = 0;
#define __STATIC_FORCEINLINE
Define a static function that should be always inlined by the compiler.
#define _VAL2FLD(field, value)
Mask and shift a bit field value for use in a register bit range.
#define __IM
Defines 'read only' structure member permissions.
#define __IOM
Defines 'read/write' structure member permissions.