NMSIS-Core  Version 1.5.0
NMSIS-Core support for Nuclei processor-based devices
core_feature_smpcc.h
1 /*
2  * Copyright (c) 2019 Nuclei Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Licensed under the Apache License, Version 2.0 (the License); you may
7  * not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 #ifndef __CORE_FEATURE_SMPCC_H__
19 #define __CORE_FEATURE_SMPCC_H__
24 /*
25  * SMP & Cluster Cache Feature Configuration Macro:
26  *
27  * 1. __SMPCC_PRESENT: Define whether SMP & Cluster Cache feature is present or not
28  * * 0: Not present
29  * * 1: Present
30  * 2. __CCM_PRESENT: Define whether Nuclei Cache Control and Maintainence(CCM) Unit is present or not.
31  * * 0: Not present
32  * * 1: Present
33  * 3. __SMPCC_BASEADDR: Base address of the SMP & Cluster Cache unit.
34  *
35  */
36 #ifdef __cplusplus
37  extern "C" {
38 #endif
39 
40 #include "core_feature_base.h"
41 
42 #if defined(__SMPCC_PRESENT) && (__SMPCC_PRESENT == 1)
54 typedef union
55 {
56  struct {
57  __IM uint32_t mic_ver:8;
58  __IM uint32_t min_ver:8;
59  __IM uint32_t maj_ver:8;
60  __IM uint32_t _reserved:8;
61  } b;
62  __IM uint32_t w;
63 } SMP_VER_Type;
64 
68 typedef union
69 {
70  struct {
71  __IM uint32_t cc_present:1;
72  __IM uint32_t smp_core_num:6;
73  __IM uint32_t iocp_num:6;
74  __IM uint32_t pmon_num:6;
75  __IM uint32_t _reserved:13;
76  } b;
77  __IM uint32_t w;
78 } SMP_CFG_Type;
79 
83 typedef union
84 {
85  struct {
86  __IM uint32_t cc_set:4;
87  __IM uint32_t cc_way:4;
88  __IM uint32_t cc_lsize:3;
89  __IM uint32_t cc_ecc:1;
90  __IM uint32_t cc_tcycle:3;
91  __IM uint32_t cc_dcycle:3;
92  __IM uint32_t _reserved:14;
93  } b;
94  uint32_t w;
95 } CC_CFG_Type;
96 
100 typedef union
101 {
102  struct {
103  __IOM uint32_t smp_enable:16;
104  __IM uint32_t _reserved:16;
105  } b;
106  uint32_t w;
107 } SMP_ENB_Type;
108 
112 typedef union
113 {
114  struct {
115  __IOM uint32_t cc_en:1;
116  __IOM uint32_t cc_ecc_en:1;
117  __IOM uint32_t ecc_excp_en:1;
118  __IOM uint32_t lock_ecc_cfg:1;
119  __IOM uint32_t lock_ecc_err_inj:1;
120  __IOM uint32_t recv_err_irq_en:1;
121  __IOM uint32_t fatal_err_irq_en:1;
122  __IOM uint32_t bus_err_pend:1;
123  __IOM uint32_t bus_err_irq_en:1;
124  __IOM uint32_t sup_cmd_en:1;
125  __IOM uint32_t use_cmd_en:1;
126  __IOM uint32_t ecc_chk_en:1;
127  __IOM uint32_t clm_ecc_en:1;
128  __IOM uint32_t clm_excp_en:1;
129  __IOM uint32_t clm_ecc_chk_en:1;
130  __IOM uint32_t pf_sh_cl_en:1;
131  __IOM uint32_t pf_l2_early_en:1;
132  __IOM uint32_t pf_biu_outs_en:1;
133  __IOM uint32_t i_snoop_d_en:1;
134  __IOM uint32_t iocc_err:1;
135  __IOM uint32_t early_wr_err:1;
136  __IOM uint32_t pf_no_wb:1;
137  __IM uint32_t _reserved:10;
139  } b;
140  uint32_t w;
141 } CC_CTRL_Type;
142 
143 #define SMPCC_CTRL_CC_EN_Pos 0U
144 #define SMPCC_CTRL_CC_EN_Msk (0x1UL << SMPCC_CTRL_CC_EN_Pos)
145 #define SMPCC_CTRL_CC_EN_ENABLE 1U
146 #define SMPCC_CTRL_CC_EN_DISABLE 0U
148 #define SMPCC_CTRL_CC_ECC_EN_Pos 1U
149 #define SMPCC_CTRL_CC_ECC_EN_Msk (0x1UL << SMPCC_CTRL_CC_ECC_EN_Pos)
150 #define SMPCC_CTRL_CC_ECC_EN_ENABLE 1U
151 #define SMPCC_CTRL_CC_ECC_EN_DISABLE 0U
153 #define SMPCC_CTRL_CC_ECC_EXCP_EN_Pos 2U
154 #define SMPCC_CTRL_CC_ECC_EXCP_EN_Msk (0x1UL << SMPCC_CTRL_CC_ECC_EXCP_EN_Pos)
155 #define SMPCC_CTRL_CC_ECC_EXCP_EN_ENABLE 1U
156 #define SMPCC_CTRL_CC_ECC_EXCP_EN_DISABLE 0U
158 #define SMPCC_CTRL_LOCK_ECC_CFG_Pos 3U
159 #define SMPCC_CTRL_LOCK_ECC_CFG_Msk (0x1UL << SMPCC_CTRL_LOCK_ECC_CFG_Pos)
160 #define SMPCC_CTRL_LOCK_ECC_CFG_LOCK 1U
162 #define SMPCC_CTRL_LOCK_ECC_ERR_INJ_Pos 4U
163 #define SMPCC_CTRL_LOCK_ECC_ERR_INJ_Msk (0x1UL << SMPCC_CTRL_LOCK_ECC_ERR_INJ_Pos)
164 #define SMPCC_CTRL_LOCK_ECC_ERR_INJ_LOCK 1U
166 #define SMPCC_CTRL_RECV_ERR_IRQ_EN_Pos 5U
167 #define SMPCC_CTRL_RECV_ERR_IRQ_EN_Msk (0x1UL << SMPCC_CTRL_RECV_ERR_IRQ_EN_Pos)
168 #define SMPCC_CTRL_RECV_ERR_IRQ_EN_ENABLE 1U
169 #define SMPCC_CTRL_RECV_ERR_IRQ_EN_DISABLE 0U
171 #define SMPCC_CTRL_FATAL_ERR_IRQ_EN_Pos 6U
172 #define SMPCC_CTRL_FATAL_ERR_IRQ_EN_Msk (0x1UL << SMPCC_CTRL_FATAL_ERR_IRQ_EN_Pos)
173 #define SMPCC_CTRL_FATAL_ERR_IRQ_EN_ENABLE 1U
174 #define SMPCC_CTRL_FATAL_ERR_IRQ_EN_DISABLE 0U
176 #define SMPCC_CTRL_BUS_ERR_PEND_Pos 7U
177 #define SMPCC_CTRL_BUS_ERR_PEND_Msk (0x1UL << SMPCC_CTRL_BUS_ERR_PEND_Pos)
179 #define SMPCC_CTRL_BUS_ERR_IRQ_EN_Pos 8U
180 #define SMPCC_CTRL_BUS_ERR_IRQ_EN_Msk (0x1UL << SMPCC_CTRL_BUS_ERR_IRQ_EN_Pos)
181 #define SMPCC_CTRL_BUS_ERR_IRQ_EN_ENABLE 1U
182 #define SMPCC_CTRL_BUS_ERR_IRQ_EN_DISABLE 0U
184 #define SMPCC_CTRL_SUP_CMD_EN_Pos 9U
185 #define SMPCC_CTRL_SUP_CMD_EN_Msk (0x1UL << SMPCC_CTRL_SUP_CMD_EN_Pos)
186 #define SMPCC_CTRL_SUP_CMD_EN_ENABLE 1U
187 #define SMPCC_CTRL_SUP_CMD_EN_DISABLE 0U
189 #define SMPCC_CTRL_USE_CMD_EN_Pos 10U
190 #define SMPCC_CTRL_USE_CMD_EN_Msk (0x1UL << SMPCC_CTRL_USE_CMD_EN_Pos)
191 #define SMPCC_CTRL_USE_CMD_EN_ENABLE 1U
192 #define SMPCC_CTRL_USE_CMD_EN_DISABLE 0U
194 #define SMPCC_CTRL_ECC_CHK_EN_Pos 11U
195 #define SMPCC_CTRL_ECC_CHK_EN_Msk (0x1UL << SMPCC_CTRL_ECC_CHK_EN_Pos)
196 #define SMPCC_CTRL_ECC_CHK_EN_ENABLE 1U
197 #define SMPCC_CTRL_ECC_CHK_EN_DISABLE 0U
199 #define SMPCC_CTRL_CLM_ECC_EN_Pos 12U
200 #define SMPCC_CTRL_CLM_ECC_EN_Msk (0x1UL << SMPCC_CTRL_CLM_ECC_EN_Pos)
201 #define SMPCC_CTRL_CLM_ECC_EN_ENABLE 1U
202 #define SMPCC_CTRL_CLM_ECC_EN_DISABLE 0U
204 #define SMPCC_CTRL_CLM_EXCP_EN_Pos 13U
205 #define SMPCC_CTRL_CLM_EXCP_EN_Msk (0x1UL << SMPCC_CTRL_CLM_EXCP_EN_Pos)
206 #define SMPCC_CTRL_CLM_EXCP_EN_ENABLE 1U
207 #define SMPCC_CTRL_CLM_EXCP_EN_DISABLE 0U
209 #define SMPCC_CTRL_CLM_ECC_CHK_EN_Pos 14U
210 #define SMPCC_CTRL_CLM_ECC_CHK_EN_Msk (0x1UL << SMPCC_CTRL_CLM_ECC_CHK_EN_Pos)
211 #define SMPCC_CTRL_CLM_ECC_CHK_EN_ENABLE 1U
212 #define SMPCC_CTRL_CLM_ECC_CHK_EN_DISABLE 0U
214 #define SMPCC_CTRL_PF_SH_CL_EN_Pos 15U
215 #define SMPCC_CTRL_PF_SH_CL_EN_Msk (0x1UL << SMPCC_CTRL_PF_SH_CL_EN_Pos)
216 #define SMPCC_CTRL_PF_SH_CL_EN_ENABLE 1U
217 #define SMPCC_CTRL_PF_SH_CL_EN_DISABLE 0U
219 #define SMPCC_CTRL_PF_L2_EARLY_EN_Pos 16U
220 #define SMPCC_CTRL_PF_L2_EARLY_EN_Msk (0x1UL << SMPCC_CTRL_PF_L2_EARLY_EN_Pos)
221 #define SMPCC_CTRL_PF_L2_EARLY_EN_ENABLE 1U
222 #define SMPCC_CTRL_PF_L2_EARLY_EN_DISABLE 0U
224 #define SMPCC_CTRL_PF_BIU_OUTS_EN_Pos 17U
225 #define SMPCC_CTRL_PF_BIU_OUTS_EN_Msk (0x1UL << SMPCC_CTRL_PF_BIU_OUTS_EN_Pos)
226 #define SMPCC_CTRL_PF_BIU_OUTS_EN_ENABLE 1U
227 #define SMPCC_CTRL_PF_BIU_OUTS_EN_DISABLE 0U
229 #define SMPCC_CTRL_I_SNOOP_D_EN_Pos 18U
230 #define SMPCC_CTRL_I_SNOOP_D_EN_Msk (0x1UL << SMPCC_CTRL_I_SNOOP_D_EN_Pos)
231 #define SMPCC_CTRL_I_SNOOP_D_EN_ENABLE 1U
232 #define SMPCC_CTRL_I_SNOOP_D_EN_DISABLE 0U
234 #define SMPCC_CTRL_IOCC_ERR_Pos 19U
235 #define SMPCC_CTRL_IOCC_ERR_Msk (0x1UL << SMPCC_CTRL_IOCC_ERR_Pos)
237 #define SMPCC_CTRL_EARLY_WR_ERR_Pos 20U
238 #define SMPCC_CTRL_EARLY_WR_ERR_Msk (0x1UL << SMPCC_CTRL_EARLY_WR_ERR_Pos)
240 #define SMPCC_CTRL_PF_NO_WB_Pos 21U
241 #define SMPCC_CTRL_PF_NO_WB_Msk (0x1UL << SMPCC_CTRL_PF_NO_WB_Pos)
242 #define SMPCC_CTRL_PF_NO_WB_ENABLE 1U
243 #define SMPCC_CTRL_PF_NO_WB_DISABLE 0U
248 typedef union
249 {
250  struct {
251  __IOM uint32_t cmd:5;
252  __IM uint32_t _reserved:18;
253  __IOM uint32_t reisc:1;
254  __IOM uint32_t feisc:1;
255  __IOM uint32_t besc:1;
256  __IM uint32_t result_code:5;
257  __IM uint32_t complete:1;
258  } b;
259  uint32_t w;
260 } CC_CMD_Type;
261 
265 typedef union
266 {
267  struct {
268  __IOM uint32_t inj_data:1;
269  __IOM uint32_t inj_tag:1;
270  __IOM uint32_t inj_clm:1;
271  __IOM uint32_t inj_mode:1;
272  __IM uint32_t _reserved0:20;
278  __IM uint32_t inj_ecc_code:8;
279  } b;
280  uint32_t w;
282 
283 #define SMPCC_ERR_INJ_INJDATA_Pos 0U
284 #define SMPCC_ERR_INJ_INJDATA_Msk (0x1UL << SMPCC_ERR_INJ_INJDATA_Pos)
285 #define SMPCC_ERR_INJ_INJDATA_ENABLE 1U
286 #define SMPCC_ERR_INJ_INJDATA_DISABLE 0U
288 #define SMPCC_ERR_INJ_INJTAG_Pos 1U
289 #define SMPCC_ERR_INJ_INJTAG_Msk (0x1UL << SMPCC_ERR_INJ_INJTAG_Pos)
290 #define SMPCC_ERR_INJ_INJTAG_ENABLE 1U
291 #define SMPCC_ERR_INJ_INJTAG_DISABLE 0U
293 #define SMPCC_ERR_INJ_INJCLM_Pos 2U
294 #define SMPCC_ERR_INJ_INJCLM_Msk (0x1UL << SMPCC_ERR_INJ_INJCLM_Pos)
295 #define SMPCC_ERR_INJ_INJCLM_ENABLE 1U
296 #define SMPCC_ERR_INJ_INJCLM_DISABLE 0U
298 #define SMPCC_ERR_INJ_INJMODE_Pos 3U
299 #define SMPCC_ERR_INJ_INJMODE_Msk (0x1UL << SMPCC_ERR_INJ_INJMODE_Pos)
300 #define SMPCC_ERR_INJ_INJMODE_DIRECT 0U
301 #define SMPCC_ERR_INJ_INJMODE_XOR 1U
303 #define SMPCC_ERR_INJ_INJECCCODE_Pos 24U
304 #define SMPCC_ERR_INJ_INJECCCODE_Msk (0xFFUL << SMPCC_ERR_INJ_INJECCCODE_Pos)
309 typedef union
310 {
311  struct {
312  __IOM uint32_t cnt:16;
313  __IM uint32_t _reserved:16;
314  } b;
315  uint32_t w;
317 
321 typedef union
322 {
323  struct {
324  __IOM uint32_t cnt:16;
325  __IM uint32_t _reserved:16;
326  } b;
327  uint32_t w;
329 
333 typedef union
334 {
335  struct {
336  __IOM uint32_t cnt:16;
337  __IM uint32_t _reserved:16;
338  } b;
339  uint32_t w;
341 
345 typedef union
346 {
347  struct {
348  __IOM uint32_t cnt:16;
349  __IM uint32_t _reserved:16;
350  } b;
351  uint32_t w;
353 
357 typedef __IO uint64_t CC_BUS_ERR_ADDR_Type;
358 
362 typedef union
363 {
364  struct {
365  __IOM uint32_t read_bus_err:1;
366  __IOM uint32_t write_bus_err:1;
367  __IOM uint32_t cc_scu_ecc_err:1;
368  __IOM uint32_t iocp_bus_err:1;
369  __IM uint32_t _reserved:28;
370  } b;
371  uint32_t w;
373 
374 #define SMPCC_CLIERRSTS_READ_BUS_ERR_Pos 0U
375 #define SMPCC_CLIERRSTS_READ_BUS_ERR_Msk (0x1UL << SMPCC_CLIERRSTS_READ_BUS_ERR_Pos)
377 #define SMPCC_CLIERRSTS_WRITE_BUS_ERR_Pos 1U
378 #define SMPCC_CLIERRSTS_WRITE_BUS_ERR_Msk (0x1UL << SMPCC_CLIERRSTS_WRITE_BUS_ERR_Pos)
380 #define SMPCC_CLIERRSTS_CC_SCU_ECC_ERR_Pos 2U
381 #define SMPCC_CLIERRSTS_CC_SCU_ECC_ERR_Msk (0x1UL << SMPCC_CLIERRSTS_CC_SCU_ECC_ERR_Pos)
383 #define SMPCC_CLIERRSTS_IOCP_BUS_ERR_Pos 3U
384 #define SMPCC_CLIERRSTS_IOCP_BUS_ERR_Msk (0x1UL << SMPCC_CLIERRSTS_IOCP_BUS_ERR_Pos)
389 typedef union
390 {
391  struct {
392  __IM uint32_t snoop_pending:16;
393  __IM uint32_t _reserved:16;
394  } b;
395  __IM uint32_t w;
397 
401 typedef union
402 {
403  struct {
404  __IM uint32_t trans_pending:16;
405  __IM uint32_t _reserved:15;
406  __IM uint32_t ext_trans:1;
407  } b;
408  __IM uint32_t w;
410 
414 typedef union
415 {
416  struct {
417  __IOM uint32_t clm_base32;
418  __IM uint32_t _reserved;
419  } clm32;
420  uint64_t clm_base64;
422 
426 typedef union
427 {
428  struct {
429  __IOM uint32_t ena:16;
430  __IM uint32_t _reserved:16;
431  } b;
432  uint32_t w;
434 
438 typedef union
439 {
440  struct {
441  __IOM uint32_t cs:1;
442  __IM uint32_t _reserved:31;
443  } b;
444  uint32_t w;
446 
450 typedef union
451 {
452  struct {
453  __IOM uint32_t rd_stm_en:1;
454  __IOM uint32_t wr_stm_en:1;
455  __IOM uint32_t trans_alloc:1;
456  __IOM uint32_t rd_merge_en:1;
457  __IOM uint32_t cross_en:1;
458  __IM uint32_t _reserved:27;
459  } b;
460  uint32_t w;
461 } STM_CTRL_Type;
462 
463 #define SMPCC_STMCTRL_RD_STM_EN_Pos 0U
464 #define SMPCC_STMCTRL_RD_STM_EN_Msk (0x1UL << SMPCC_STMCTRL_RD_STM_EN_Pos)
465 #define SMPCC_STMCTRL_RD_STM_EN_ENABLE 1U
466 #define SMPCC_STMCTRL_RD_STM_EN_DISABLE 0U
468 #define SMPCC_STMCTRL_WR_STM_EN_Pos 1U
469 #define SMPCC_STMCTRL_WR_STM_EN_Msk (0x1UL << SMPCC_STMCTRL_WR_STM_EN_Pos)
470 #define SMPCC_STMCTRL_WR_STM_EN_ENABLE 1U
471 #define SMPCC_STMCTRL_WR_STM_EN_DISABLE 0U
473 #define SMPCC_STMCTRL_TRANS_ALLOC_Pos 2U
474 #define SMPCC_STMCTRL_TRANS_ALLOC_Msk (0x1UL << SMPCC_STMCTRL_TRANS_ALLOC_Pos)
475 #define SMPCC_STMCTRL_TRANS_ALLOC_ENABLE 1U
476 #define SMPCC_STMCTRL_TRANS_ALLOC_DISABLE 0U
478 #define SMPCC_STMCTRL_RD_MERGE_EN_Pos 3U
479 #define SMPCC_STMCTRL_RD_MERGE_EN_Msk (0x1UL << SMPCC_STMCTRL_RD_MERGE_EN_Pos)
480 #define SMPCC_STMCTRL_RD_MERGE_EN_ENABLE 1U
481 #define SMPCC_STMCTRL_RD_MERGE_EN_DISABLE 0U
483 #define SMPCC_STMCTRL_CROSS_EN_Pos 4U
484 #define SMPCC_STMCTRL_CROSS_EN_Msk (0x1UL << SMPCC_STMCTRL_CROSS_EN_Pos)
485 #define SMPCC_STMCTRL_CROSS_EN_ENABLE 1U
486 #define SMPCC_STMCTRL_CROSS_EN_DISABLE 0U
491 typedef union
492 {
493  struct {
494  __IOM uint32_t rd_byte_threshold:10;
495  __IM uint32_t _reserved0:2;
496  __IOM uint32_t rd_degree:3;
497  __IM uint32_t _reserved1:1;
498  __IOM uint32_t rd_distance:3;
499  __IM uint32_t _reserved2:1;
500  __IOM uint32_t wr_byte_threshold:10;
501  __IM uint32_t _reserved3:2;
502  } b;
503  uint32_t w;
504 } STM_CFG_Type;
505 
506 #define SMPCC_STMCFG_RD_BYTE_THRE_Pos 0U
507 #define SMPCC_STMCFG_RD_BYTE_THRE_Msk (0x3FFUL << SMPCC_STMCFG_RD_BYTE_THRE_Pos)
509 #define SMPCC_STMCFG_RD_DEGREE_Pos 12U
510 #define SMPCC_STMCFG_RD_DEGREE_Msk (0x7UL << SMPCC_STMCFG_RD_DEGREE_Pos)
512 #define SMPCC_STMCFG_RD_DISTANCE_Pos 16U
513 #define SMPCC_STMCFG_RD_DISTANCE_Msk (0x7UL << SMPCC_STMCFG_RD_DISTANCE_Pos)
515 #define SMPCC_STMCFG_WR_BYTE_THRE_Pos 20U
516 #define SMPCC_STMCFG_WR_BYTE_THRE_Msk (0x7FFUL << SMPCC_STMCFG_WR_BYTE_THRE_Pos)
521 typedef union
522 {
523  struct {
524  __IOM uint32_t timeout:11;
525  __IM uint32_t _reserved:21;
526  } b;
527  uint32_t w;
529 
533 typedef union
534 {
535  struct {
536  __IOM uint32_t chk_en:2;
537  __IM uint32_t _reserved:30;
538  } b;
539  uint32_t w;
540 } DFF_PROT_Type;
541 
542 #define SMPCC_DFF_PROT_CHK_EN_Pos 0U
543 #define SMPCC_DFF_PROT_CHK_EN_Msk (0x3UL << SMPCC_DFF_PROT_CHK_EN_Pos)
544 #define SMPCC_DFF_PROT_CHK_EN_ENABLE 2U
545 #define SMPCC_DFF_PROT_CHK_EN_DISABLE 1U
550 typedef union
551 {
552  struct {
553  __IOM uint32_t cc_l2_err_msk:1;
554  __IOM uint32_t cc_core_err_mask:1;
555  __IM uint32_t _reserved:29;
556  } b;
557  uint32_t w;
559 
563 typedef union
564 {
565  struct {
566  __IOM uint64_t cfg:2;
567  __IOM uint64_t addr_hi:62;
568  } b;
569  __IOM uint64_t dw;
570 } NS_RG_Type;
571 
572 #define SMPCC_NS_RG_CFG_Pos 0U
573 #define SMPCC_NS_RG_CFG_Msk (0x3UL << SMPCC_NS_RG_CFG_Pos)
574 #define SMPCC_NS_RG_CFG_DISABLE 0x00U
575 #define SMPCC_NS_RG_CFG_NACL 0x10U
576 #define SMPCC_NS_RG_CFG_NAPOT 0x11U
581 typedef union
582 {
583  struct {
584  __IOM uint32_t event_sel:16;
585  __IOM uint32_t client_sel:5;
586  __IM uint32_t _reserved:11;
587  } b;
588  uint32_t w;
590 
591 #define SMPCC_PMON_EVENT_SEL_Pos 0U
592 #define SMPCC_PMON_EVENT_SEL_Msk (0xFFFFUL << SMPCC_PMON_EVENT_SEL_Pos)
593 #define SMPCC_PMON_EVENT_DISABLE 0U
594 #define SMPCC_PMON_EVENT_DATA_READ_COUNT 1U
595 #define SMPCC_PMON_EVENT_DATA_WRITE_COUNT 2U
596 #define SMPCC_PMON_EVENT_INSTR_READ_COUNT 3U
597 #define SMPCC_PMON_EVENT_DATA_READ_HIT_COUNT 4U
598 #define SMPCC_PMON_EVENT_DATA_WRITE_REPLACE_COUNT 5U
599 #define SMPCC_PMON_EVENT_DATA_READ_REPLACE_COUNT 6U
600 #define SMPCC_PMON_EVENT_DATA_READ_MISS_COUNT 7U
601 #define SMPCC_PMON_EVENT_INSTR_READ_HIT_COUNT 8U
602 #define SMPCC_PMON_EVENT_INSTR_READ_MISS_COUNT 9U
603 #define SMPCC_PMON_EVENT_INSTR_READ_REPLACE_COUNT 10U
605 #define SMPCC_PMON_CLIENT_SEL_Pos 16U
606 #define SMPCC_PMON_CLIENT_SEL_Msk (0x1FUL << SMPCC_PMON_CLIENT_SEL_Pos)
608 #define SMPCC_PMON_EVENT(event, client) \
609  (_VAL2FLD(SMPCC_PMON_EVENT_SEL, event) | \
610  _VAL2FLD(SMPCC_PMON_CLIENT_SEL, client))
611 
615 typedef __IO uint64_t SMP_PMON_CNT_Type;
616 
620 typedef __IO uint64_t CLIENT_ERR_ADDR_Type;
621 
625 typedef union
626 {
627  struct {
628  __IOM uint32_t mask:16;
629  __IM uint32_t _reserved:16;
630  } b;
631  uint32_t w;
633 
638 #pragma pack(4)
639 typedef struct {
652  __IM uint8_t RESERVED0[12];
653  __IOM CLIENT_ERR_STATUS_Type CLIENT_ERR_STATUS[32];
659  __IOM uint32_t CLM_WAY_EN;
666  __IM uint8_t RESERVED1[12];
667  __IOM NS_RG_Type NS_RG[16];
668  __IOM SMP_PMON_SEL_Type SMP_PMON_SEL[16];
669  __IOM SMP_PMON_CNT_Type SMP_PMON_CNT[16];
670  __IM uint8_t RESERVED2[64];
671  __IOM CLIENT_ERR_ADDR_Type CLIENT_ERR_ADDR[32];
672  __IOM CLIENT_WAY_MASK_Type CLIENT_WAY_MASK[32];
673 } SMPCC_Type;
674 #pragma pack()
675 
676 #ifndef __SMPCC_BASEADDR
677 /* Base address of SMPCC(__SMPCC_BASEADDR) should be defined in <Device.h> */
678 #error "__SMPCC_BASEADDR is not defined, please check!"
679 #endif
680 
681 /* SMPCC Memory mapping of Device */
682 #define SMPCC_BASE __SMPCC_BASEADDR
683 #define SMPCC ((SMPCC_Type *)SMPCC_BASE) /* end of group NMSIS_Core_SMPCC_Registers */
686 
702 {
703  return SMPCC->SMP_VER;
704 }
705 
713 {
714  return SMPCC->SMP_CFG.b.cc_present;
715 }
716 
724 {
725  return SMPCC->SMP_CFG.b.smp_core_num + 1;
726 }
727 
735 {
736  return SMPCC->SMP_CFG.b.iocp_num;
737 }
738 
746 {
747  return SMPCC->SMP_CFG.b.pmon_num;
748 }
749 
757 {
758  return 1U << SMPCC->CC_CFG.b.cc_set;
759 }
760 
768 {
769  return SMPCC->CC_CFG.b.cc_way + 1;
770 }
771 
779 {
780  return 1 << (SMPCC->CC_CFG.b.cc_lsize + 2);
781 }
782 
790 {
791  return SMPCC->CC_CFG.b.cc_ecc;
792 }
793 
802 __STATIC_FORCEINLINE void SMPCC_EnableSnoop(uint16_t client_msk)
803 {
804  SMPCC->SMP_ENB.b.smp_enable |= client_msk;
805 }
806 
815 __STATIC_FORCEINLINE void SMPCC_DisableSnoop(uint16_t client_msk)
816 {
817  SMPCC->SMP_ENB.b.smp_enable &= ~client_msk;
818 }
819 
828 {
829  SMPCC->CC_CTRL.b.cc_en = SMPCC_CTRL_CC_EN_ENABLE;
830 }
831 
840 {
841  SMPCC->CC_CTRL.b.cc_en = SMPCC_CTRL_CC_EN_DISABLE;
842 }
843 
853 {
854  return SMPCC->CC_CTRL.b.cc_en;
855 }
856 
864 __STATIC_FORCEINLINE uint8_t SMPCC_IsAnySnoopPending(uint32_t client_msk)
865 {
866  return (SMPCC->SNOOP_PENDING.b.snoop_pending & client_msk) != 0;
867 }
868 
877 {
878  return (SMPCC->TRANS_PENDING.b.trans_pending & client_msk) != 0;
879 }
880 
905 {
906 #if (__CPU_PA_SIZE > 32)
907  SMPCC->CLM_ADDR_BASE.clm_base64 = addr;
908 #else
909  SMPCC->CLM_ADDR_BASE.clm32.clm_base32 = (uint32_t)addr;
910 #endif
911  SMPCC->CLM_WAY_EN = 0xFFFFU;
912 }
913 
939 __STATIC_FORCEINLINE void SMPCC_SetCLMNWays(uint64_t addr, uint32_t way_msk)
940 {
941 #if (__CPU_PA_SIZE > 32)
942  SMPCC->CLM_ADDR_BASE.clm_base64 = addr;
943 #else
944  SMPCC->CLM_ADDR_BASE.clm32.clm_base32 = (uint32_t)addr;
945 #endif
946  SMPCC->CLM_WAY_EN = way_msk;
947 }
948 
958 {
959  SMPCC->CLM_WAY_EN = 0x0000U;
960 }
961 
971 {
972  SMPCC->CC_CTRL.w = val;
973 }
974 
984 {
985  return SMPCC->CC_CTRL.w;
986 }
987 
996 {
997  SMPCC->CC_CTRL.b.cc_ecc_en = SMPCC_CTRL_CC_ECC_EN_ENABLE;
998 }
999 
1008 {
1009  SMPCC->CC_CTRL.b.cc_ecc_en = SMPCC_CTRL_CC_ECC_EN_DISABLE;
1010 }
1011 
1020 {
1021  SMPCC->CC_CTRL.b.ecc_excp_en = SMPCC_CTRL_CC_ECC_EXCP_EN_ENABLE;
1022 }
1023 
1032 {
1033  SMPCC->CC_CTRL.b.ecc_excp_en = SMPCC_CTRL_CC_ECC_EXCP_EN_DISABLE;
1034 }
1035 
1044 {
1045  SMPCC->CC_CTRL.b.lock_ecc_cfg = SMPCC_CTRL_LOCK_ECC_CFG_LOCK;
1046 }
1047 
1056 {
1057  SMPCC->CC_CTRL.b.lock_ecc_err_inj = SMPCC_CTRL_LOCK_ECC_ERR_INJ_LOCK;
1058 }
1059 
1068 {
1069  SMPCC->CC_CTRL.b.recv_err_irq_en = SMPCC_CTRL_RECV_ERR_IRQ_EN_ENABLE;
1070 }
1071 
1080 {
1081  SMPCC->CC_CTRL.b.recv_err_irq_en = SMPCC_CTRL_RECV_ERR_IRQ_EN_DISABLE;
1082 }
1083 
1092 {
1093  SMPCC->CC_CTRL.b.fatal_err_irq_en = SMPCC_CTRL_FATAL_ERR_IRQ_EN_ENABLE;
1094 }
1095 
1104 {
1105  SMPCC->CC_CTRL.b.fatal_err_irq_en = SMPCC_CTRL_FATAL_ERR_IRQ_EN_DISABLE;
1106 }
1107 
1116 {
1117  SMPCC->CC_CTRL.b.bus_err_irq_en = SMPCC_CTRL_BUS_ERR_IRQ_EN_ENABLE;
1118 }
1119 
1128 {
1129  SMPCC->CC_CTRL.b.bus_err_irq_en = SMPCC_CTRL_BUS_ERR_IRQ_EN_DISABLE;
1130 }
1131 
1140 {
1141  SMPCC->CC_CTRL.b.sup_cmd_en = SMPCC_CTRL_SUP_CMD_EN_ENABLE;
1142 }
1143 
1152 {
1153  SMPCC->CC_CTRL.b.sup_cmd_en = SMPCC_CTRL_SUP_CMD_EN_DISABLE;
1154 }
1155 
1164 {
1165  SMPCC->CC_CTRL.b.use_cmd_en = SMPCC_CTRL_USE_CMD_EN_ENABLE;
1166 }
1167 
1176 {
1177  SMPCC->CC_CTRL.b.use_cmd_en = SMPCC_CTRL_USE_CMD_EN_DISABLE;
1178 }
1179 
1188 {
1189  SMPCC->CC_CTRL.b.ecc_chk_en = SMPCC_CTRL_ECC_CHK_EN_ENABLE;
1190 }
1191 
1200 {
1201  SMPCC->CC_CTRL.b.ecc_chk_en = SMPCC_CTRL_ECC_CHK_EN_DISABLE;
1202 }
1203 
1212 {
1213  SMPCC->CC_CTRL.b.clm_ecc_en = SMPCC_CTRL_CLM_ECC_EN_ENABLE;
1214 }
1215 
1224 {
1225  SMPCC->CC_CTRL.b.clm_ecc_en = SMPCC_CTRL_CLM_ECC_EN_DISABLE;
1226 }
1227 
1236 {
1237  SMPCC->CC_CTRL.b.clm_ecc_chk_en = SMPCC_CTRL_CLM_ECC_CHK_EN_ENABLE;
1238 }
1239 
1248 {
1249  SMPCC->CC_CTRL.b.clm_ecc_chk_en = SMPCC_CTRL_CLM_ECC_CHK_EN_DISABLE;
1250 }
1251 
1260 {
1261  SMPCC->CC_CTRL.b.clm_excp_en = SMPCC_CTRL_CLM_EXCP_EN_ENABLE;
1262 }
1263 
1272 {
1273  SMPCC->CC_CTRL.b.clm_excp_en = SMPCC_CTRL_CLM_EXCP_EN_DISABLE;
1274 }
1275 
1284 {
1285  SMPCC->CC_CTRL.b.pf_sh_cl_en = SMPCC_CTRL_PF_SH_CL_EN_ENABLE;
1286 }
1287 
1296 {
1297  SMPCC->CC_CTRL.b.pf_sh_cl_en = SMPCC_CTRL_PF_SH_CL_EN_DISABLE;
1298 }
1299 
1308 {
1309  SMPCC->CC_CTRL.b.pf_l2_early_en = SMPCC_CTRL_PF_L2_EARLY_EN_ENABLE;
1310 }
1311 
1320 {
1321  SMPCC->CC_CTRL.b.pf_l2_early_en = SMPCC_CTRL_PF_L2_EARLY_EN_DISABLE;
1322 }
1323 
1332 {
1333  SMPCC->CC_CTRL.b.pf_biu_outs_en = SMPCC_CTRL_PF_BIU_OUTS_EN_ENABLE;
1334 }
1335 
1344 {
1345  SMPCC->CC_CTRL.b.pf_biu_outs_en = SMPCC_CTRL_PF_BIU_OUTS_EN_DISABLE;
1346 }
1347 
1356 {
1357  SMPCC->CC_CTRL.b.pf_no_wb = SMPCC_CTRL_PF_NO_WB_ENABLE;
1358 }
1359 
1368 {
1369  SMPCC->CC_CTRL.b.pf_no_wb = SMPCC_CTRL_PF_NO_WB_DISABLE;
1370 }
1371 
1380 {
1381  SMPCC->CC_CTRL.b.i_snoop_d_en = SMPCC_CTRL_I_SNOOP_D_EN_ENABLE;
1382 }
1383 
1392 {
1393  SMPCC->CC_CTRL.b.i_snoop_d_en = SMPCC_CTRL_I_SNOOP_D_EN_DISABLE;
1394 }
1395 
1405 {
1406  return SMPCC->CC_RECV_CNT.b.cnt;
1407 }
1408 
1417 {
1418  SMPCC->CC_RECV_CNT.w = 0;
1419 }
1420 
1430 {
1431  return SMPCC->CC_FATAL_CNT.b.cnt;
1432 }
1433 
1442 {
1443  SMPCC->CC_FATAL_CNT.w = 0;
1444 }
1445 
1455 {
1456  SMPCC->CC_RECV_THV.b.cnt = threshold;
1457 }
1458 
1468 {
1469  return SMPCC->CC_RECV_THV.b.cnt;
1470 }
1471 
1481 {
1482  SMPCC->CC_FATAL_THV.b.cnt = threshold;
1483 }
1484 
1494 {
1495  return SMPCC->CC_FATAL_THV.b.cnt;
1496 }
1497 
1506 {
1507  return SMPCC->CLIENT_ERR_STATUS[client_id].w;
1508 }
1509 
1519 {
1520  SMPCC->STM_CTRL.w = val;
1521 }
1522 
1532 {
1533  return SMPCC->STM_CTRL.w;
1534 }
1535 
1544 {
1545  SMPCC->STM_CTRL.b.rd_stm_en = SMPCC_STMCTRL_RD_STM_EN_ENABLE;
1546 }
1547 
1556 {
1557  SMPCC->STM_CTRL.b.rd_stm_en = SMPCC_STMCTRL_RD_STM_EN_DISABLE;
1558 }
1559 
1568 {
1569  SMPCC->STM_CTRL.b.wr_stm_en = SMPCC_STMCTRL_WR_STM_EN_ENABLE;
1570 }
1571 
1580 {
1581  SMPCC->STM_CTRL.b.wr_stm_en = SMPCC_STMCTRL_WR_STM_EN_DISABLE;
1582 }
1583 
1592 {
1593  SMPCC->STM_CTRL.b.trans_alloc = SMPCC_STMCTRL_TRANS_ALLOC_ENABLE;
1594 }
1595 
1604 {
1605  SMPCC->STM_CTRL.b.trans_alloc = SMPCC_STMCTRL_TRANS_ALLOC_DISABLE;
1606 }
1607 
1616 {
1617  SMPCC->STM_CTRL.b.rd_merge_en = SMPCC_STMCTRL_RD_MERGE_EN_ENABLE;
1618 }
1619 
1628 {
1629  SMPCC->STM_CTRL.b.rd_merge_en = SMPCC_STMCTRL_RD_MERGE_EN_DISABLE;
1630 }
1631 
1640 {
1641  SMPCC->STM_CTRL.b.cross_en = SMPCC_STMCTRL_CROSS_EN_ENABLE;
1642 }
1643 
1652 {
1653  SMPCC->STM_CTRL.b.cross_en = SMPCC_STMCTRL_CROSS_EN_DISABLE;
1654 }
1655 
1666 __STATIC_FORCEINLINE void SMPCC_SetNSRegionNACL(uint8_t region_id, uint64_t addr)
1667 {
1668  SMPCC->NS_RG[region_id].dw = SMPCC_NS_RG_CFG_NACL | addr;
1669 }
1670 
1681 __STATIC_FORCEINLINE void SMPCC_SetNSRegionNAPOT(uint8_t region_id, uint64_t addr)
1682 {
1683  SMPCC->NS_RG[region_id].dw = SMPCC_NS_RG_CFG_NAPOT | addr;
1684 }
1685 
1696 {
1697  SMPCC->NS_RG[region_id].dw = SMPCC_NS_RG_CFG_DISABLE;
1698 }
1699 
1713 __STATIC_FORCEINLINE void SMPCC_SetPMONEventSelect(uint8_t idx, uint8_t client_id, uint8_t event)
1714 {
1715  SMPCC->SMP_PMON_SEL[idx].w = SMPCC_PMON_EVENT(event, client_id);
1716 }
1717 
1731 {
1732  return SMPCC->SMP_PMON_SEL[idx].w;
1733 }
1734 
1747 {
1748  return SMPCC->SMP_PMON_CNT[idx];
1749 }
1750 
1762 {
1763  SMPCC->SMP_PMON_CNT[idx] = 0;
1764 }
1765 
1774 {
1775  return SMPCC->CLIENT_ERR_ADDR[client_id];
1776 }
1777 
1785 __STATIC_FORCEINLINE void SMPCC_MaskClientCCacheWays(uint8_t client_id, uint32_t way_msk)
1786 {
1787  SMPCC->CLIENT_WAY_MASK[client_id].w = way_msk;
1788 }
1789 
1797 {
1798  return SMPCC->CC_ERR_INJ.b.inj_mode;
1799 }
1800 
1808 {
1809  SMPCC->CC_ERR_INJ.w = (SMPCC->CC_ERR_INJ.w & ~SMPCC_ERR_INJ_INJECCCODE_Msk) |
1810  _VAL2FLD(SMPCC_ERR_INJ_INJECCCODE, ecc_code);
1811 }
1812 
1813 #if defined(__CCM_PRESENT) && (__CCM_PRESENT == 1)
1821 __STATIC_FORCEINLINE void SMPCC_CCacheTramErrInject(uint32_t ecc_code, void *addr)
1822 {
1823  SMPCC_SetECCCode(ecc_code);
1825  MInvalICacheLine((unsigned long)addr);
1826  MFlushInvalDCacheCCacheLine((unsigned long)addr);
1827  __RWMB();
1828  SMPCC->CC_ERR_INJ.b.inj_tag = SMPCC_ERR_INJ_INJTAG_ENABLE;
1829  MLockCCacheLine((unsigned long)addr);
1830  SMPCC->CC_ERR_INJ.b.inj_tag = SMPCC_ERR_INJ_INJTAG_DISABLE;
1831  __RWMB();
1833 }
1834 
1842 __STATIC_FORCEINLINE void SMPCC_CCacheDramErrInject(uint32_t ecc_code, void *addr)
1843 {
1844  SMPCC_SetECCCode(ecc_code);
1846  MInvalICacheLine((unsigned long)addr);
1847  MFlushInvalDCacheCCacheLine((unsigned long)addr);
1848  __RWMB();
1849  SMPCC->CC_ERR_INJ.b.inj_data = SMPCC_ERR_INJ_INJDATA_ENABLE;
1850  MLockCCacheLine((unsigned long)addr);
1851  SMPCC->CC_ERR_INJ.b.inj_data = SMPCC_ERR_INJ_INJDATA_DISABLE;
1852  __RWMB();
1854 }
1855 
1864 __STATIC_FORCEINLINE void SMPCC_CLMErrInject(uint32_t ecc_code, void *addr)
1865 {
1866  SMPCC_SetECCCode(ecc_code);
1868  uint32_t val = __LW(addr);
1869  __RWMB();
1870  SMPCC->CC_ERR_INJ.b.inj_clm = SMPCC_ERR_INJ_INJCLM_ENABLE;
1871  __SW(addr, val);
1872  SMPCC->CC_ERR_INJ.b.inj_clm = SMPCC_ERR_INJ_INJCLM_DISABLE;
1873  __RWMB();
1875 }
1876 
1884 {
1886  MInvalICacheLine((unsigned long)addr);
1887  MFlushInvalDCacheCCacheLine((unsigned long)addr);
1888  MLockCCacheLine((unsigned long)addr);
1890 }
1891 #endif /* #if defined(__CCM_PRESENT) && (__CCM_PRESENT == 1) */
1892  /* End of Doxygen Group NMSIS_Core_SMPCC_Functions */
1894 #endif /* #if defined(__SMPCC_PRESENT) && (__SMPCC_PRESENT == 1) */
1895 
1896 #ifdef __cplusplus
1897 }
1898 #endif
1899 #endif /* __CORE_FEATURE_SMPCC_H__ */
__STATIC_INLINE unsigned long MLockCCacheLine(unsigned long addr)
Lock one Cluster Cache line specified by address in M-Mode.
__STATIC_FORCEINLINE void __SW(volatile void *addr, uint32_t val)
Write 32bit value to address (32 bit)
__STATIC_FORCEINLINE uint32_t __LW(volatile void *addr)
Load 32bit value from address (32 bit)
#define __RWMB()
Read & Write Memory barrier.
#define __STATIC_FORCEINLINE
Define a static function that should be always inlined by the compiler.
Definition: nmsis_gcc.h:70
#define MFlushInvalDCacheCCacheLine(addr)
Flush and invalidate one D-Cache and Cluster Cache line specified by address in M-Mode.
__STATIC_INLINE void MInvalICacheLine(unsigned long addr)
Invalidate one I-Cache line specified by address in M-Mode.
#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.
#define __IO
Defines 'read / write' permissions.
__STATIC_FORCEINLINE void SMPCC_DisableStreamReadCross4K(void)
Disable Stream Read Cross 4K Boundary.
__STATIC_FORCEINLINE void SMPCC_DisableStreamMergeNCRead(void)
Disable Stream Merge Non-Cacheable Read.
__STATIC_FORCEINLINE void SMPCC_LimitCCachePrefetchOutsNum(void)
Limit Cluster Cache Prefetch Outstanding Number.
__STATIC_FORCEINLINE void SMPCC_DisableCLMECCCheck(void)
Disable Cluster Local Memory ECC Check.
__STATIC_FORCEINLINE int32_t SMPCC_IsCCacheEnabled(void)
Get status of cluster cache.
__STATIC_FORCEINLINE void SMPCC_EnableCLMECC(void)
Enable Cluster Local Memory ECC.
__STATIC_FORCEINLINE uint32_t SMPCC_GetCCacheSetNum(void)
Get the number of cache sets.
__STATIC_FORCEINLINE void SMPCC_SetECCCode(uint32_t ecc_code)
Set ECC code for error injection.
__STATIC_FORCEINLINE uint8_t SMPCC_GetCoreNum(void)
Get the number of cores in the cluster.
__STATIC_FORCEINLINE void SMPCC_EnableStreamMergeNCRead(void)
Enable Stream Merge Non-Cacheable Read.
__STATIC_FORCEINLINE void SMPCC_SetSTMControl(uint32_t val)
Set Stream Control Register.
__STATIC_FORCEINLINE void SMPCC_EnableStreamRead(void)
Enable Stream Read.
__STATIC_FORCEINLINE void SMPCC_MaskClientCCacheWays(uint8_t client_id, uint32_t way_msk)
Mask Client Cluster Cache Ways.
__STATIC_FORCEINLINE void SMPCC_EnableCLMECCExcp(void)
Enable Cluster Local Memory ECC Exception.
__STATIC_FORCEINLINE uint8_t SMPCC_GetIOCPNum(void)
Get the number of IO coherency ports.
__STATIC_FORCEINLINE void SMPCC_EnableL1PrefetchShareCacheline(void)
Enable L1 Prefetch to Snoop and Share Cacheline.
__STATIC_FORCEINLINE int32_t SMPCC_IsXorErrorInjectMode(void)
Check if ECC error injection mode is XOR mode.
__STATIC_FORCEINLINE uint8_t SMPCC_IsCCacheSupportECC(void)
Check if cluster cache supports ECC.
__STATIC_FORCEINLINE void SMPCC_SetCLMAllWays(uint64_t addr)
Set Cluster Local Memory to use all ways.
__STATIC_FORCEINLINE void SMPCC_CLMErrInject(uint32_t ecc_code, void *addr)
Inject ECC error to CLM (Cluster Local Memory)
__STATIC_FORCEINLINE void SMPCC_DisableCCacheECCExcp(void)
Disable Cluster Cache ECC Exception.
__STATIC_FORCEINLINE void SMPCC_EnableUModeCmd(void)
Enable User Mode Commands.
__STATIC_FORCEINLINE void SMPCC_EnableStreamTransAlloc(void)
Enable Stream Translate Allocate.
__STATIC_FORCEINLINE uint16_t SMPCC_GetFatalErrCntThreshold(void)
Get Fatal Error Count Threshold.
__STATIC_FORCEINLINE void SMPCC_DisableCCacheECC(void)
Disable Cluster Cache ECC.
__STATIC_FORCEINLINE void SMPCC_DisableCLMECC(void)
Disable Cluster Local Memory ECC.
__STATIC_FORCEINLINE uint8_t SMPCC_IsAnySnoopPending(uint32_t client_msk)
Check if any client is being snooped.
__STATIC_FORCEINLINE uint32_t SMPCC_GetCCacheWayNum(void)
Get the number of cache ways.
__STATIC_FORCEINLINE void SMPCC_DisableCCachePrefetchNoWb(void)
Disable Cluster Cache Prefetch to Avoid Write Back.
__STATIC_FORCEINLINE SMP_VER_Type SMPCC_GetVersion(void)
Get the SMP version number.
__STATIC_FORCEINLINE void SMPCC_EnableCCacheECCCheck(void)
Enable Cluster Cache ECC Check.
__STATIC_FORCEINLINE void SMPCC_SetPMONEventSelect(uint8_t idx, uint8_t client_id, uint8_t event)
Set Performance Monitor Event Selection.
__STATIC_FORCEINLINE void SMPCC_DisableCCache(void)
Disable cluster cache.
__STATIC_FORCEINLINE void SMPCC_EnableCCacheECC(void)
Enable Cluster Cache ECC.
__STATIC_FORCEINLINE void SMPCC_DisableL1PrefetchShareCacheline(void)
Disable L1 Prefetch to Snoop and Share Cacheline.
__STATIC_FORCEINLINE void SMPCC_SetRecvErrCntThreshold(uint16_t threshold)
Set Recoverable Error Count Threshold.
__STATIC_FORCEINLINE void SMPCC_EnableCLMECCCheck(void)
Enable Cluster Local Memory ECC Check.
__STATIC_FORCEINLINE void SMPCC_DisableStreamRead(void)
Disable Stream Read.
__STATIC_FORCEINLINE void SMPCC_EnableSnoop(uint16_t client_msk)
Enable snoop for specific clients.
__STATIC_FORCEINLINE void SMPCC_DisableRecvErrIrq(void)
Disable Recoverable Error Interrupt.
__STATIC_FORCEINLINE void SMPCC_ClearRecvErrCount(void)
Clear Recoverable Error Count.
__STATIC_FORCEINLINE void SMPCC_EnableCCache(void)
Enable cluster cache.
__STATIC_FORCEINLINE void SMPCC_DisableBusErrIrq(void)
Disable Bus Error Interrupt.
__STATIC_FORCEINLINE void SMPCC_DisableStreamTransAlloc(void)
Disable Stream Translate Allocate.
__STATIC_FORCEINLINE void SMPCC_DisableCCacheECCCheck(void)
Disable Cluster Cache ECC Check.
__STATIC_FORCEINLINE void SMPCC_SetCLMNWays(uint64_t addr, uint32_t way_msk)
Set Cluster Local Memory to use specific ways.
__STATIC_FORCEINLINE uint8_t SMPCC_IsCCachePresent(void)
Check if cluster cache is present.
__STATIC_FORCEINLINE uint32_t SMPCC_GetClientErrStatus(uint8_t client_id)
Get Client Error Status.
__STATIC_FORCEINLINE void SMPCC_SetNSRegionNAPOT(uint8_t region_id, uint64_t addr)
Set Non-Shareable Region to NAPOT.
__STATIC_FORCEINLINE uint8_t SMPCC_GetPMONNum(void)
Get the number of performance monitors.
__STATIC_FORCEINLINE void SMPCC_DisableSModeCmd(void)
Disable Supervisor Mode Commands.
__STATIC_FORCEINLINE void SMPCC_DisableUModeCmd(void)
Disable User Mode Commands.
__STATIC_FORCEINLINE void SMPCC_UnlimitCCachePrefetchOutsNum(void)
Unlimit Cluster Cache Prefetch Outstanding Number.
__STATIC_FORCEINLINE void SMPCC_DisableStreamWrite(void)
Disable Stream Write.
__STATIC_FORCEINLINE void SMPCC_EnableRecvErrIrq(void)
Enable Recoverable Error Interrupt.
__STATIC_FORCEINLINE uint32_t SMPCC_GetFatalErrCount(void)
Get Fatal Error Count.
__STATIC_FORCEINLINE uint32_t SMPCC_GetPMONEventSelect(uint8_t idx)
Get Performance Monitor Event Selection.
__STATIC_FORCEINLINE void SMPCC_EnableCCacheECCExcp(void)
Enable Cluster Cache ECC Exception.
__STATIC_FORCEINLINE void SMPCC_EnableICacheSnoopDCache(void)
Enable ICache to Snoop DCache.
__STATIC_FORCEINLINE void SMPCC_EnableFatalErrIrq(void)
Enable Fatal Error Interrupt.
__STATIC_FORCEINLINE void SMPCC_CCacheErrRestore(void *addr)
Restore cluster cache after error injection.
__STATIC_FORCEINLINE void SMPCC_ClearPMONCount(uint8_t idx)
Clear Performance Monitor Count.
__STATIC_FORCEINLINE uint32_t SMPCC_GetSTMControl(void)
Get Stream Control Register Value.
__STATIC_FORCEINLINE void SMPCC_SetNSRegionNACL(uint8_t region_id, uint64_t addr)
Set Non-Shareable Region to NACL.
__STATIC_FORCEINLINE void SMPCC_DisableICacheSnoopDCache(void)
Disable ICache to Snoop DCache.
__STATIC_FORCEINLINE uint16_t SMPCC_GetRecvErrCntThreshold(void)
Get Recoverable Error Count Threshold.
__STATIC_FORCEINLINE void SMPCC_SetFatalErrCntThreshold(uint16_t threshold)
Set Fatal Error Count Threshold.
__STATIC_FORCEINLINE void SMPCC_SetCCacheControl(uint32_t val)
Set Cluster Cache Control register.
__STATIC_FORCEINLINE uint8_t SMPCC_IsAnyTransactionPending(uint32_t client_msk)
Check if any transaction is pending for clients.
__STATIC_FORCEINLINE void SMPCC_EnableCCacheEarlyPrefetch(void)
Enable Cluster Cache Early Prefetch.
__STATIC_FORCEINLINE void SMPCC_CCacheDramErrInject(uint32_t ecc_code, void *addr)
Inject ECC error to cluster cache data RAM.
__STATIC_FORCEINLINE void SMPCC_LockECCErrInjection(void)
Lock ECC Error Injection Register.
__STATIC_FORCEINLINE void SMPCC_LockECCConfig(void)
Lock ECC Configuration.
__STATIC_FORCEINLINE uint32_t SMPCC_GetRecvErrCount(void)
Get Recoverable Error Count.
__STATIC_FORCEINLINE void SMPCC_DisableCLMECCExcp(void)
Disable Cluster Local Memory ECC Exception.
__STATIC_FORCEINLINE void SMPCC_EnableStreamReadCross4K(void)
Enable Stream Read Cross 4K Boundary.
__STATIC_FORCEINLINE void SMPCC_DisableSnoop(uint16_t client_msk)
Disable snoop for specific clients.
__STATIC_FORCEINLINE void SMPCC_SetCLMNoWay(void)
Configure Cluster Local Memory to use no ways.
__STATIC_FORCEINLINE void SMPCC_DisableNSRegion(uint8_t region_id)
Disable Non-Shareable Region.
__STATIC_FORCEINLINE uint64_t SMPCC_GetClientErrAddr(uint8_t client_id)
Get Client Error Address.
__STATIC_FORCEINLINE void SMPCC_DisableFatalErrIrq(void)
Disable Fatal Error Interrupt.
__STATIC_FORCEINLINE void SMPCC_EnableSModeCmd(void)
Enable Supervisor Mode Commands.
__STATIC_FORCEINLINE void SMPCC_CCacheTramErrInject(uint32_t ecc_code, void *addr)
Inject ECC error to cluster cache tag RAM.
__STATIC_FORCEINLINE void SMPCC_DisableCCacheEarlyPrefetch(void)
Disable Cluster Cache Early Prefetch.
__STATIC_FORCEINLINE uint64_t SMPCC_GetPMONCount(uint8_t idx)
Get Performance Monitor Count.
__STATIC_FORCEINLINE void SMPCC_EnableStreamWrite(void)
Enable Stream Write.
__STATIC_FORCEINLINE void SMPCC_EnableBusErrIrq(void)
Enable Bus Error Interrupt.
__STATIC_FORCEINLINE uint8_t SMPCC_GetCCacheLineSize(void)
Get the cache line size.
__STATIC_FORCEINLINE uint32_t SMPCC_GetCCacheControl(void)
Get Cluster Cache Control register value.
__STATIC_FORCEINLINE void SMPCC_EnableCCachePrefetchNoWb(void)
Enable Cluster Cache Prefetch to Avoid Write Back.
__STATIC_FORCEINLINE void SMPCC_ClearFatalErrCount(void)
Clear Fatal Error Count.
#define SMPCC_CTRL_I_SNOOP_D_EN_DISABLE
SMPCC CC_CTRL I_SNOOP_D_EN Disable.
#define SMPCC_ERR_INJ_INJECCCODE_Msk
SMPCC CC_ERR_INJ INJECCCODE Mask.
#define SMPCC_NS_RG_CFG_DISABLE
SMPCC Non-Shareable Region CFG DISABLE.
#define SMPCC_CTRL_CC_ECC_EN_ENABLE
SMPCC CC_CTRL CC_ECC_EN Enable.
#define SMPCC_CTRL_CLM_ECC_CHK_EN_DISABLE
SMPCC CC_CTRL CLM_ECC_CHK_EN Disable.
#define SMPCC_CTRL_CC_ECC_EXCP_EN_DISABLE
SMPCC CC_CTRL ECC_EXCP_EN Disable.
#define SMPCC_CTRL_PF_NO_WB_ENABLE
SMPCC CC_CTRL PF_NO_WB Enable.
#define SMPCC_CTRL_CLM_EXCP_EN_ENABLE
SMPCC CC_CTRL CLM_EXCP_EN Enable.
__IO uint64_t CLIENT_ERR_ADDR_Type
Type to access CLIENT_ERR_ADDR register.
#define SMPCC_ERR_INJ_INJDATA_ENABLE
SMPCC CC_ERR_INJ INJDATA Enable.
#define SMPCC_CTRL_LOCK_ECC_CFG_LOCK
SMPCC CC_CTRL LOCK_ECC_CFG Lock.
#define SMPCC_CTRL_FATAL_ERR_IRQ_EN_ENABLE
SMPCC CC_CTRL FATAL_ERR_IRQ_EN Enable.
#define SMPCC_CTRL_CLM_EXCP_EN_DISABLE
SMPCC CC_CTRL CLM_EXCP_EN Disable.
#define SMPCC_CTRL_RECV_ERR_IRQ_EN_ENABLE
SMPCC CC_CTRL RECV_ERR_IRQ_EN Enable.
#define SMPCC_CTRL_CLM_ECC_EN_DISABLE
SMPCC CC_CTRL CLM_ECC_EN Disable.
#define SMPCC_CTRL_PF_NO_WB_DISABLE
SMPCC CC_CTRL PF_NO_WB Disable.
#define SMPCC_CTRL_CC_ECC_EXCP_EN_ENABLE
SMPCC CC_CTRL ECC_EXCP_EN Enable.
#define SMPCC_CTRL_CC_ECC_EN_DISABLE
SMPCC CC_CTRL CC_ECC_EN Disable.
#define SMPCC_STMCTRL_WR_STM_EN_DISABLE
SMPCC WRITE Stream Enable Disable.
#define SMPCC_CTRL_PF_L2_EARLY_EN_DISABLE
SMPCC CC_CTRL PF_L2_EARLY_EN Disable.
#define SMPCC_STMCTRL_CROSS_EN_DISABLE
SMPCC READ STREAM CROSS 4K Disable.
#define SMPCC_CTRL_USE_CMD_EN_ENABLE
SMPCC CC_CTRL USE_CMD_EN Enable.
#define SMPCC_CTRL_SUP_CMD_EN_ENABLE
SMPCC CC_CTRL SUP_CMD_EN Enable.
#define SMPCC_STMCTRL_CROSS_EN_ENABLE
SMPCC READ STREAM CROSS 4K Enable.
#define SMPCC_CTRL_PF_L2_EARLY_EN_ENABLE
SMPCC CC_CTRL PF_L2_EARLY_EN Enable.
#define SMPCC_CTRL_PF_BIU_OUTS_EN_ENABLE
SMPCC CC_CTRL PF_BIU_OUTS_EN Enable.
__IO uint64_t SMP_PMON_CNT_Type
Type to access SMP_PMON_CNT register.
#define SMPCC_CTRL_PF_SH_CL_EN_DISABLE
SMPCC CC_CTRL PF_SH_CL_EN Disable.
#define SMPCC_CTRL_ECC_CHK_EN_ENABLE
SMPCC CC_CTRL ECC_CHK_EN Enable.
#define SMPCC_CTRL_CLM_ECC_CHK_EN_ENABLE
SMPCC CC_CTRL CLM_ECC_CHK_EN Enable.
#define SMPCC_NS_RG_CFG_NAPOT
SMPCC Non-Shareable Region CFG NAPOT.
#define SMPCC_CTRL_FATAL_ERR_IRQ_EN_DISABLE
SMPCC CC_CTRL FATAL_ERR_IRQ_EN Disable.
#define SMPCC_PMON_EVENT(event, client)
#define SMPCC_STMCTRL_TRANS_ALLOC_ENABLE
SMPCC TRANSLATE ALLOC ATTRIBUTE Enable.
#define SMPCC_STMCTRL_RD_MERGE_EN_DISABLE
SMPCC READ Merge Enable Disable.
#define SMPCC_CTRL_PF_SH_CL_EN_ENABLE
SMPCC CC_CTRL PF_SH_CL_EN Enable.
#define SMPCC_STMCTRL_RD_STM_EN_ENABLE
SMPCC READ Stream Enable Enable.
#define SMPCC_CTRL_BUS_ERR_IRQ_EN_ENABLE
SMPCC CC_CTRL BUS_ERR_IRQ_EN Enable.
#define SMPCC_CTRL_I_SNOOP_D_EN_ENABLE
SMPCC CC_CTRL I_SNOOP_D_EN Enable.
#define SMPCC_STMCTRL_TRANS_ALLOC_DISABLE
SMPCC TRANSLATE ALLOC ATTRIBUTE Disable.
#define SMPCC_CTRL_LOCK_ECC_ERR_INJ_LOCK
SMPCC CC_CTRL LOCK_ECC_ERR_INJ Lock.
#define SMPCC_CTRL_CLM_ECC_EN_ENABLE
SMPCC CC_CTRL CLM_ECC_EN Enable.
#define SMPCC_STMCTRL_WR_STM_EN_ENABLE
SMPCC WRITE Stream Enable Enable.
#define SMPCC_NS_RG_CFG_NACL
SMPCC Non-Shareable Region CFG NACL.
#define SMPCC_ERR_INJ_INJTAG_DISABLE
SMPCC CC_ERR_INJ INJTAG Disable.
#define SMPCC_STMCTRL_RD_STM_EN_DISABLE
SMPCC READ Stream Enable Disable.
#define SMPCC_CTRL_RECV_ERR_IRQ_EN_DISABLE
SMPCC CC_CTRL RECV_ERR_IRQ_EN Disable.
#define SMPCC_CTRL_USE_CMD_EN_DISABLE
SMPCC CC_CTRL USE_CMD_EN Disable.
#define SMPCC_ERR_INJ_INJCLM_ENABLE
SMPCC CC_ERR_INJ INJCLM Enable.
__IO uint64_t CC_BUS_ERR_ADDR_Type
Type to access CC_BUS_ERR_ADDR register.
#define SMPCC_CTRL_ECC_CHK_EN_DISABLE
SMPCC CC_CTRL ECC_CHK_EN Disable.
#define SMPCC_ERR_INJ_INJDATA_DISABLE
SMPCC CC_ERR_INJ INJDATA Disable.
#define SMPCC_CTRL_CC_EN_DISABLE
SMPCC CC_CTRL CC_EN Disable.
#define SMPCC_CTRL_SUP_CMD_EN_DISABLE
SMPCC CC_CTRL SUP_CMD_EN Disable.
#define SMPCC_CTRL_PF_BIU_OUTS_EN_DISABLE
SMPCC CC_CTRL PF_BIU_OUTS_EN Disable.
#define SMPCC_CTRL_BUS_ERR_IRQ_EN_DISABLE
SMPCC CC_CTRL BUS_ERR_IRQ_EN Disable.
#define SMPCC_ERR_INJ_INJTAG_ENABLE
SMPCC CC_ERR_INJ INJTAG Enable.
#define SMPCC_CTRL_CC_EN_ENABLE
SMPCC CC_CTRL CC_EN Enable.
#define SMPCC_STMCTRL_RD_MERGE_EN_ENABLE
SMPCC READ Merge Enable Enable.
#define SMPCC_ERR_INJ_INJCLM_DISABLE
SMPCC CC_ERR_INJ INJCLM Disable.
#define SMPCC
SMPCC configuration struct.
Access to the structure of SMPCC Memory Map.
__IOM CLM_ADDR_BASE_Type CLM_ADDR_BASE
Offset: 0x0D0 (R/W) Cluster Local Memory base address.
__IM SNOOP_PENDING_Type SNOOP_PENDING
Offset: 0x0C8 (R) indicate the core is being snooped or not in SCU.
__IOM uint32_t CLM_WAY_EN
Offset: 0x0D8 (R/W) CC way enable register.
__IM TRANS_PENDING_Type TRANS_PENDING
Offset: 0x0CC (R) indicate the core's transaction is finished or not in the SCU.
__IOM ECC_ERR_MSK_Type ECC_ERR_MSK
Offset: 0x0F0 (R/W) Mask L2M ECC Error register.
__IOM CC_CMD_Type CC_uCMD
Offset: 0x0C4 (R/W) user mode CC command and status register.
__IOM CC_CMD_Type CC_sCMD
Offset: 0x0C0 (R/W) supervisor mode CC command and status register.
__IOM CC_RECV_CNT_Type CC_RECV_CNT
Offset: 0x01C (R/W) CC ECC recoverable error count register.
__IOM CC_BUS_ERR_ADDR_Type CC_BUS_ERR_ADDR
Offset: 0x02C (R/W) CC bus error address register.
__IOM DFF_PROT_Type DFF_PROT
Offset: 0x0EC (R/W) Hardware Register protect Enable register.
__IOM CC_CMD_Type CC_mCMD
Offset: 0x014 (R/W) machine mode CC command and status register.
__IOM CC_ERR_INJ_Type CC_ERR_INJ
Offset: 0x018 (R/W) CC ECC error injection control register.
const SMP_VER_Type SMP_VER
Offset: 0x000 (R) SMP version register.
__IM CC_CFG_Type CC_CFG
Offset: 0x008 (R) CC config register.
__IOM STM_CTRL_Type STM_CTRL
Offset: 0x0E0 (R/W) Stream read/write control register.
__IOM CC_FATAL_CNT_Type CC_FATAL_CNT
Offset: 0x020 (R/W) CC ECC fatal error count register.
__IM SMP_CFG_Type SMP_CFG
Offset: 0x004 (R) SMP Configuration register.
__IOM CC_RECV_THV_Type CC_RECV_THV
Offset: 0x024 (R/W) CC ECC recoverable error threshold register.
__IOM STM_TIMEOUT_Type STM_TIMEOUT
Offset: 0x0E8 (R/W) Stream read/write timeout register.
__IOM CC_FATAL_THV_Type CC_FATAL_THV
Offset: 0x028 (R/W) CC ECC fatal error threshold register.
__IOM CC_INVALID_ALL_Type CC_INVALID_ALL
Offset: 0x0DC (R/W) CC invalidate all register.
__IOM STM_CFG_Type STM_CFG
Offset: 0x0E4 (R/W) Stream read/write configuration register.
__IOM CC_CTRL_Type CC_CTRL
Offset: 0x010 (R/W) CC control register.
__IOM SMP_ENB_Type SMP_ENB
Offset: 0x00C (R/W) SMP enable register.
Union type to access CC_CFG information register.
__IM uint32_t cc_tcycle
bit: 12..14 L2 tag ram access cycle = cc_tcycle + 1
__IM uint32_t cc_dcycle
bit: 15..17 L2 Data sram access cycle = cc_dcycle + 1
__IM uint32_t cc_ecc
bit: 11 cluster cache ECC supports ECC or not
__IM uint32_t cc_lsize
bit: 8..10 cluster cache line size = 2^(cc_lsize + 2)
__IM uint32_t cc_set
bit: 0..3 cluster cache set number = 2^(cc_set)
uint32_t w
Type used for word access.
__IM uint32_t _reserved
bit: 18..31 reserved
__IM uint32_t cc_way
bit: 4..7 cluster cache way number = cc_way + 1
Union type to access CC_CMD register.
__IM uint32_t _reserved
bit: 5..22 reserved
__IOM uint32_t feisc
bit: 24 fatal error interrupt status, write 1 to clean
__IM uint32_t complete
bit: 31 completion status
uint32_t w
Type used for word access.
__IOM uint32_t besc
bit: 25 bus error status, write 1 to clean
__IOM uint32_t cmd
bit: 0..4 cluster cache maintain command code
__IM uint32_t result_code
bit: 26..30 result code
__IOM uint32_t reisc
bit: 23 recoverable error interrupt status, write 1 to clean
Union type to access CC_CTRL configure register.
__IOM uint32_t use_cmd_en
bit: 10 enable U mode can operate register CC_uCMD and SMP_PMON_SEL
__IOM uint32_t clm_ecc_en
bit: 12 clm ecc enable bit
__IOM uint32_t early_wr_err
bit: 20 early write response has error
__IOM uint32_t iocc_err
bit: 19 iocc has error
__IOM uint32_t pf_sh_cl_en
bit: 15 enable L1 prefetch to snoop and share cacheline from other cores
__IOM uint32_t ecc_chk_en
bit: 11 cc ecc check enable bit
__IOM uint32_t pf_l2_early_en
bit: 16 enable L2 prefetch to initialize external bus read access while lookup the cluster cache
__IOM uint32_t cc_ecc_en
bit: 1 cluster cache ECC enable bit
__IOM uint32_t clm_ecc_chk_en
bit: 14 clm ecc check enable bit
uint32_t w
Type used for word access.
__IOM uint32_t bus_err_pend
bit: 7 indicate if there is bus error pending
__IOM uint32_t lock_ecc_err_inj
bit: 4 lock cc ecc error injection register
__IOM uint32_t recv_err_irq_en
bit: 5 enable the interrupt when recoverable error count exceeds the threshold
__IOM uint32_t cc_en
bit: 0 cluster cache enable bit
__IOM uint32_t pf_biu_outs_en
bit: 17 enable the limit of outstanding L2 prefetch to the number of L2 prefetch line-buffer
__IOM uint32_t clm_excp_en
bit: 13 clm ecc exception enable bit
__IOM uint32_t pf_no_wb
bit: 21 enable L2 prefetch to abort and avoid dirty cacheline write back when filling the cluster cac...
__IOM uint32_t lock_ecc_cfg
bit: 3 lock the cc ecc configuration bit
__IOM uint32_t ecc_excp_en
bit: 2 cluster cache ECC exception enable bit
__IM uint32_t _reserved
bit: 22..31 reserved
__IOM uint32_t fatal_err_irq_en
bit: 6 enable the interrupt when fatal error count exceeds the threshold
__IOM uint32_t i_snoop_d_en
bit: 18 snoop to dcache for icache refill reads enable
__IOM uint32_t sup_cmd_en
bit: 9 enable S mode can operate register CC_sCMD and SMP_PMON_SEL
__IOM uint32_t bus_err_irq_en
bit: 8 enable the buss error interrupt of cc maintain operation
Union type to access CC_ERR_INJ register.
__IM uint32_t _reserved0
bit: 4..23 reserved
__IOM uint32_t inj_clm
bit: 2 ECC error injection to clm ram
__IOM uint32_t inj_mode
bit: 3 ECC error injection mode: 0-direct write mode, 1-xor write mode
uint32_t w
Type used for word access.
__IM uint32_t inj_ecc_code
24..32 ECC code for injection
__IOM uint32_t inj_data
bit: 0 ECC error injection to data ram
__IOM uint32_t inj_tag
bit: 1 ECC error injection to tag ram
Union type to access CC_FATAL_CNT register.
__IOM uint32_t cnt
bit: 0..15 count of the fatal error
__IM uint32_t _reserved
bit: 16..31 reserved
uint32_t w
Type used for word access.
Union type to access CC_FATAL_THV register.
uint32_t w
Type used for word access.
__IM uint32_t _reserved
bit: 16..31 reserved
__IOM uint32_t cnt
bit: 0..15 count of the fatal error threshold value
Union type to access CC_INVALID_ALL register.
__IM uint32_t _reserved
bit: 1..31 reserved
__IOM uint32_t cs
bit: 0 write 1 to invalid all cluster cache, and hardware auto clean when operation is done
uint32_t w
Type used for word access.
Union type to access CC_RECV_CNT register.
uint32_t w
Type used for word access.
__IOM uint32_t cnt
bit: 0..15 count of the recoverable error
__IM uint32_t _reserved
bit: 16..31 reserved
Union type to access CC_RECV_THV register.
__IOM uint32_t cnt
bit: 0..15 count of the recoverable error threshold value
__IM uint32_t _reserved
bit: 16..31 reserved
uint32_t w
Type used for word access.
Union type to access CLIENT_ERR_STATUS register.
__IOM uint32_t write_bus_err
bit: 1 write bus error
__IOM uint32_t cc_scu_ecc_err
bit: 2 cc scu ecc error
uint32_t w
Type used for word access.
__IOM uint32_t iocp_bus_err
bit: 3 iocp bus error
__IOM uint32_t read_bus_err
bit: 0 read bus error
__IM uint32_t _reserved
bit: 4..31 reserved
Union type to access CLIENT_WAY_MASK register.
__IOM uint32_t mask
bit: 0..15 mask this way for the client
__IM uint32_t _reserved
bit: 16..31 reserved
uint32_t w
Type used for word access.
Union type to access CLM_ADDR_BASE register.
uint64_t clm_base64
Type used access whole 64-bits.
__IOM uint32_t clm_base32
Union type to access CLM_WAY_EN register.
uint32_t w
Type used for word access.
__IM uint32_t _reserved
bit: 16..31 reserved
__IOM uint32_t ena
bit: 0..15 This way is used as CLM or not
Union type to access DFF_PROT register.
__IM uint32_t _reserved
bit: 2..31 reserved
uint32_t w
Type used for word access.
__IOM uint32_t chk_en
bit: 0..1 register protect check enable.
Union type to access ECC_ERR_MSK register.
__IM uint32_t _reserved
bit: 2..31 reserved
uint32_t w
Type used for word access.
__IOM uint32_t cc_core_err_mask
bit: 1 mask core double bit error output
__IOM uint32_t cc_l2_err_msk
bit: 0 mask L2 double bit error output
Union type to access NS_RG register.
__IOM uint64_t cfg
bit: 0..1 0x00: disable region; 0x10:NACL; 0x11: NAPOT
__IOM uint64_t dw
Type used for double word access.
__IOM uint64_t addr_hi
bit: 2..63 address of the region
Union type to access SMP_CFG information register.
__IM uint32_t iocp_num
bit: 7..12 IO coherency port number in the cluster
__IM uint32_t cc_present
bit: 0 cluster cache present or not
__IM uint32_t w
Type used for word access.
__IM uint32_t pmon_num
bit: 13..18 performance monitor number in the cluster
__IM uint32_t smp_core_num
bit: 1..6 core number in cluster
__IM uint32_t _reserved
bit: 19..31 reserved
Union type to access SMP_ENB configure register.
__IOM uint32_t smp_enable
bit: 0..15 SMP enable bits for clients in cluster
__IM uint32_t _reserved
bit: 16..31 reserved
uint32_t w
Type used for word access.
Union type to access SMP_PMON_SEL register.
__IOM uint32_t event_sel
bit: 0..15 select the event for this performance monitor counter
__IM uint32_t _reserved
bit: 21..31 reserved
uint32_t w
Type used for word access.
__IOM uint32_t client_sel
bit: 16..20 specify the core in the cluster or external master number hooked to I/O coherency port
Union type to access SMP_VER information register.
__IM uint32_t w
Type used for word access.
__IM uint32_t min_ver
bit: 8..15 minor version number
__IM uint32_t _reserved
bit: 24..31 reserved
__IM uint32_t maj_ver
bit: 16..23 major version number
__IM uint32_t mic_ver
bit: 0..7 micro version number
Union type to access SNOOP_PENDING register.
__IM uint32_t _reserved
bit: 16..31 reserved
__IM uint32_t w
Type used for word access.
__IM uint32_t snoop_pending
bit: 0..15 snoop pending bit for each client
Union type to access STM_CFG register.
__IM uint32_t _reserved3
bit: 30..31 reserved
__IOM uint32_t rd_byte_threshold
bit: 0..9 the prefetch number for read stream
__IOM uint32_t wr_byte_threshold
bit: 20..29 the line buffer timeout free time when no same cacheline transactions
__IM uint32_t _reserved0
bit: 10..11 reserved
__IOM uint32_t rd_degree
bit: 12..14 the delta between prefetch address and current bus address
uint32_t w
Type used for word access.
__IOM uint32_t rd_distance
bit: 16..18 the threshold bytes matching write stream training successfully
__IM uint32_t _reserved2
bit: 19 reserved
__IM uint32_t _reserved1
bit: 15 reserved
Union type to access STM_CTRL register.
__IOM uint32_t cross_en
bit: 4 read stream cross 4k enable
__IOM uint32_t trans_alloc
bit: 2 translate allocate attribute to non-alloc attribute enable
__IOM uint32_t rd_merge_en
bit: 3 non-cacheable attribute read merge enable
__IOM uint32_t rd_stm_en
bit: 0 read stream enable
__IM uint32_t _reserved
bit: 5..31 reserved
__IOM uint32_t wr_stm_en
bit: 1 write stream enable
uint32_t w
Type used for word access.
Union type to access STM_TIMEOUT register.
__IOM uint32_t timeout
bit: 0..10 write streaming wait clk num
__IM uint32_t _reserved
bit: 11..31 reserved
uint32_t w
Type used for word access.
Union type to access TRANS_PENDING register.
__IM uint32_t _reserved
bit: 16..30 reserved
__IM uint32_t trans_pending
bit: 0..15 transaction pending bit for each client
__IM uint32_t ext_trans
bit: 31 external memory bus transaction pending
__IM uint32_t w
Type used for word access.