aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-l2c_tad.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-l2c_tad.h')
-rw-r--r--src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-l2c_tad.h2749
1 files changed, 2749 insertions, 0 deletions
diff --git a/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-l2c_tad.h b/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-l2c_tad.h
new file mode 100644
index 0000000000..0d70555565
--- /dev/null
+++ b/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-l2c_tad.h
@@ -0,0 +1,2749 @@
+#ifndef __BDK_CSRS_L2C_TAD_H__
+#define __BDK_CSRS_L2C_TAD_H__
+/* This file is auto-generated. Do not edit */
+
+/***********************license start***************
+ * Copyright (c) 2003-2017 Cavium Inc. (support@cavium.com). All rights
+ * reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+
+ * * Neither the name of Cavium Inc. nor the names of
+ * its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+
+ * This Software, including technical data, may be subject to U.S. export control
+ * laws, including the U.S. Export Administration Act and its associated
+ * regulations, and may be subject to export or import regulations in other
+ * countries.
+
+ * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
+ * AND WITH ALL FAULTS AND CAVIUM NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR
+ * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
+ * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
+ * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
+ * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
+ * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
+ * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
+ * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
+ * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
+ ***********************license end**************************************/
+
+
+/**
+ * @file
+ *
+ * Configuration and status register (CSR) address and type definitions for
+ * Cavium L2C_TAD.
+ *
+ * This file is auto generated. Do not edit.
+ *
+ */
+
+/**
+ * Enumeration l2c_tad_bar_e
+ *
+ * L2C TAD Base Address Register Enumeration
+ * Enumerates the base address registers.
+ */
+#define BDK_L2C_TAD_BAR_E_L2C_TADX_PF_BAR0(a) (0x87e050000000ll + 0x1000000ll * (a))
+#define BDK_L2C_TAD_BAR_E_L2C_TADX_PF_BAR0_SIZE 0x800000ull
+#define BDK_L2C_TAD_BAR_E_L2C_TADX_PF_BAR4(a) (0x87e050f00000ll + 0x1000000ll * (a))
+#define BDK_L2C_TAD_BAR_E_L2C_TADX_PF_BAR4_SIZE 0x100000ull
+
+/**
+ * Enumeration l2c_tad_int_vec_e
+ *
+ * L2C TAD MSI-X Vector Enumeration
+ * Enumerates the MSI-X interrupt vectors.
+ */
+#define BDK_L2C_TAD_INT_VEC_E_INTS (0)
+
+/**
+ * Register (RSL) l2c_tad#_int_ena_w1c
+ *
+ * L2C TAD Interrupt Enable Clear Registers
+ * This register clears interrupt enable bits.
+ */
+union bdk_l2c_tadx_int_ena_w1c
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_int_ena_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_l2c_tadx_int_ena_w1c_cn88xxp1
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t reserved_18 : 1;
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t reserved_18 : 1;
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn88xxp1;
+ struct bdk_l2c_tadx_int_ena_w1c_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[RDDISOCI]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_l2c_tadx_int_ena_w1c_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[RDDISOCI]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0..3)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn83xx;
+ struct bdk_l2c_tadx_int_ena_w1c_cn88xxp2
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Reads or clears enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn88xxp2;
+};
+typedef union bdk_l2c_tadx_int_ena_w1c bdk_l2c_tadx_int_ena_w1c_t;
+
+static inline uint64_t BDK_L2C_TADX_INT_ENA_W1C(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_INT_ENA_W1C(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050040020ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050040020ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050040020ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_INT_ENA_W1C", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_INT_ENA_W1C(a) bdk_l2c_tadx_int_ena_w1c_t
+#define bustype_BDK_L2C_TADX_INT_ENA_W1C(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_INT_ENA_W1C(a) "L2C_TADX_INT_ENA_W1C"
+#define device_bar_BDK_L2C_TADX_INT_ENA_W1C(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_INT_ENA_W1C(a) (a)
+#define arguments_BDK_L2C_TADX_INT_ENA_W1C(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_int_ena_w1s
+ *
+ * L2C TAD Interrupt Enable Set Registers
+ * This register sets interrupt enable bits.
+ */
+union bdk_l2c_tadx_int_ena_w1s
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_int_ena_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_l2c_tadx_int_ena_w1s_cn88xxp1
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t reserved_18 : 1;
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t reserved_18 : 1;
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn88xxp1;
+ struct bdk_l2c_tadx_int_ena_w1s_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[RDDISOCI]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_l2c_tadx_int_ena_w1s_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[RDDISOCI]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0..3)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn83xx;
+ struct bdk_l2c_tadx_int_ena_w1s_cn88xxp2
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets enable for L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn88xxp2;
+};
+typedef union bdk_l2c_tadx_int_ena_w1s bdk_l2c_tadx_int_ena_w1s_t;
+
+static inline uint64_t BDK_L2C_TADX_INT_ENA_W1S(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_INT_ENA_W1S(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050040028ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050040028ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050040028ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_INT_ENA_W1S", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_INT_ENA_W1S(a) bdk_l2c_tadx_int_ena_w1s_t
+#define bustype_BDK_L2C_TADX_INT_ENA_W1S(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_INT_ENA_W1S(a) "L2C_TADX_INT_ENA_W1S"
+#define device_bar_BDK_L2C_TADX_INT_ENA_W1S(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_INT_ENA_W1S(a) (a)
+#define arguments_BDK_L2C_TADX_INT_ENA_W1S(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_int_w1c
+ *
+ * L2C TAD Interrupt Registers
+ * This register is for TAD-based interrupts.
+ */
+union bdk_l2c_tadx_int_w1c
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_int_w1c_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) RTG double-bit error.
+ See L2C_TAD()_RTG_ERR for logged information.
+ An indication of a hardware failure and may be considered fatal. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) RTG single-bit error on a read. See L2C_TAD()_RTG_ERR for logged
+ information. When [RTGSBE] is set, hardware corrected the error before using the
+ RTG tag, but did not correct any stored value. When [RTGSBE] is set, software
+ should eject the RTG location indicated by the corresponding
+ L2C_TAD()_RTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [RTGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same RTG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 1
+ payload\<23:20\> = L2C_TAD()_RTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_RTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on the payload. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Global sync timeout. Should not occur during normal operation. This may be an
+ indication of hardware failure, and may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<19:13\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<12:6\>
+ payload\<12:11\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<5:4\>
+ payload\<10\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<3\>
+ payload\<9:7\> = tad // index\<2:0\>
+ \</pre\>
+
+ where tad is the TAD index from this CSR. Note that L2C_CTL[DISIDXALIAS] has no
+ effect on the payload. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<19:13\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<12:6\>
+ payload\<12:11\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<5:4\>
+ payload\<10\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<3\>
+ payload\<9:7\> = tad // index\<2:0\>
+ \</pre\>
+
+ where tad is the TAD index from this CSR. Note that L2C_CTL[DISIDXALIAS] has no
+ effect on the payload. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Global sync timeout. Should not occur during normal operation. This may be an
+ indication of hardware failure, and may be considered fatal. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) RTG single-bit error on a read. See L2C_TAD()_RTG_ERR for logged
+ information. When [RTGSBE] is set, hardware corrected the error before using the
+ RTG tag, but did not correct any stored value. When [RTGSBE] is set, software
+ should eject the RTG location indicated by the corresponding
+ L2C_TAD()_RTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [RTGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same RTG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 1
+ payload\<23:20\> = L2C_TAD()_RTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_RTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on the payload. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) RTG double-bit error.
+ See L2C_TAD()_RTG_ERR for logged information.
+ An indication of a hardware failure and may be considered fatal. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_l2c_tadx_int_w1c_cn88xxp1
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) RTG double-bit error.
+ See L2C_TAD()_RTG_ERR for logged information.
+ An indication of a hardware failure and may be considered fatal. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) RTG single-bit error on a read. See L2C_TAD()_RTG_ERR for logged
+ information. When [RTGSBE] is set, hardware corrected the error before using the
+ RTG tag, but did not correct any stored value. When [RTGSBE] is set, software
+ should eject the RTG location indicated by the corresponding
+ L2C_TAD()_RTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [RTGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same RTG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 1
+ payload\<23:20\> = L2C_TAD()_RTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_RTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on the payload. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t reserved_18 : 1;
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<19:13\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<12:6\>
+ payload\<12:11\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<5:4\>
+ payload\<10\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<3\>
+ payload\<9:7\> = tad // index\<2:0\>
+ \</pre\>
+
+ where tad is the TAD index from this CSR. Note that L2C_CTL[DISIDXALIAS] has no
+ effect on the payload. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<19:13\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<12:6\>
+ payload\<12:11\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<5:4\>
+ payload\<10\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<3\>
+ payload\<9:7\> = tad // index\<2:0\>
+ \</pre\>
+
+ where tad is the TAD index from this CSR. Note that L2C_CTL[DISIDXALIAS] has no
+ effect on the payload. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t reserved_18 : 1;
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) RTG single-bit error on a read. See L2C_TAD()_RTG_ERR for logged
+ information. When [RTGSBE] is set, hardware corrected the error before using the
+ RTG tag, but did not correct any stored value. When [RTGSBE] is set, software
+ should eject the RTG location indicated by the corresponding
+ L2C_TAD()_RTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [RTGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same RTG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 1
+ payload\<23:20\> = L2C_TAD()_RTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_RTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on the payload. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) RTG double-bit error.
+ See L2C_TAD()_RTG_ERR for logged information.
+ An indication of a hardware failure and may be considered fatal. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn88xxp1;
+ struct bdk_l2c_tadx_int_w1c_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Global sync timeout. Should not occur during normal operation. This may be an
+ indication of hardware failure, and may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24:21\> = 0
+ payload\<20:17\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<16:10\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<9:3\>
+ payload\<9:8\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<2:1\>
+ payload\<7\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<0\>
+ \</pre\>
+
+ Note that L2C_CTL[DISIDXALIAS] has no effect on the payload. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24:21\> = 0
+ payload\<20:17\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<16:10\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<9:3\>
+ payload\<9:8\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<2:1\>
+ payload\<7\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<0\>
+ \</pre\>
+
+ Note that L2C_CTL[DISIDXALIAS] has no effect on the payload. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Global sync timeout. Should not occur during normal operation. This may be an
+ indication of hardware failure, and may be considered fatal. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_l2c_tadx_int_w1c_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Global sync timeout. Should not occur during normal operation. This may be an
+ indication of hardware failure, and may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24:23\> = 0
+ payload\<22:19\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<18:12\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<11:5\>
+ payload\<11:10\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<4:3\>
+ payload\<9\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<2\>
+ payload\<8:7\> = tad // index\<1:0\>
+ \</pre\>
+
+ where tad is the TAD index from this CSR. Note that L2C_CTL[DISIDXALIAS] has no
+ effect on the payload. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24:23\> = 0
+ payload\<22:19\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<18:12\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<11:5\>
+ payload\<11:10\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<4:3\>
+ payload\<9\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<2\>
+ payload\<8:7\> = tad // index\<1:0\>
+ \</pre\>
+
+ where tad is the TAD index from this CSR. Note that L2C_CTL[DISIDXALIAS] has no
+ effect on the payload. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Global sync timeout. Should not occur during normal operation. This may be an
+ indication of hardware failure, and may be considered fatal. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn83xx;
+ struct bdk_l2c_tadx_int_w1c_cn88xxp2
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) RTG double-bit error.
+ See L2C_TAD()_RTG_ERR for logged information.
+ An indication of a hardware failure and may be considered fatal. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) RTG single-bit error on a read. See L2C_TAD()_RTG_ERR for logged
+ information. When [RTGSBE] is set, hardware corrected the error before using the
+ RTG tag, but did not correct any stored value. When [RTGSBE] is set, software
+ should eject the RTG location indicated by the corresponding
+ L2C_TAD()_RTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [RTGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same RTG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 1
+ payload\<23:20\> = L2C_TAD()_RTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_RTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on the payload. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Global sync OCI timeout. Should not occur during normal operation. OCI/CCPI link
+ failures may cause this failure. This may be an indication of hardware failure,
+ and may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<19:13\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<12:6\>
+ payload\<12:11\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<5:4\>
+ payload\<10\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<3\>
+ payload\<9:7\> = tad // index\<2:0\>
+ \</pre\>
+
+ where tad is the TAD index from this CSR. Note that L2C_CTL[DISIDXALIAS] has no
+ effect on the payload. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1C/H) L2D single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. When [L2DSBE] is set, hardware corrected the error before using the
+ data, but did not correct any stored value. When [L2DSBE] is set, software
+ should eject the cache block indicated by the corresponding
+ L2C_TAD()_TQD_ERR[QDNUM,L2DIDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [L2DSBE]. Otherwise, hardware may encounter the error again the
+ next time the same L2D location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TQD_ERR[L2DIDX]\<10:7\> // way
+ payload\<19:13\> = L2C_TAD()_TQD_ERR[L2DIDX]\<6:0\> // index\<12:6\>
+ payload\<12:11\> = L2C_TAD()_TQD_ERR[L2DIDX]\<12:11\> // index\<5:4\>
+ payload\<10\> = L2C_TAD()_TQD_ERR[QDNUM]\<2\> // index\<3\>
+ payload\<9:7\> = tad // index\<2:0\>
+ \</pre\>
+
+ where tad is the TAD index from this CSR. Note that L2C_CTL[DISIDXALIAS] has no
+ effect on the payload. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1C/H) L2D double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1C/H) SBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1C/H) SBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1C/H) FBF single-bit error on a read. See L2C_TAD()_TQD_ERR for logged
+ information. Hardware automatically corrected the error. Software may choose to
+ count the number of these single-bit errors. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1C/H) FBF double-bit error occurred. See L2C_TAD()_TQD_ERR for logged information. An
+ indication of a hardware failure and may be considered fatal. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1C/H) TAG single-bit error on a read. See L2C_TAD()_TTG_ERR for logged
+ information. When [TAGSBE] is set, hardware corrected the error before using the
+ tag, but did not correct any stored value. When [TAGSBE] is set, software should
+ eject the TAG location indicated by the corresponding
+ L2C_TAD()_TTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [TAGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same TAG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 0
+ payload\<23:20\> = L2C_TAD()_TTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_TTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on this payload. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1C/H) TAG double-bit error occurred. See L2C_TTG()_ERR for logged information.
+ This is an indication of a hardware failure and may be considered fatal. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1C/H) No way was available for allocation. L2C sets [NOWAY] during its processing of a
+ transaction whenever it needed/wanted to allocate a WAY in the L2 cache, but was
+ unable to. When this bit = 1, it is (generally) not an indication that L2C
+ failed to complete transactions. Rather, it is a hint of possible performance
+ degradation. (For example, L2C must read- modify-write DRAM for every
+ transaction that updates some, but not all, of the bytes in a cache block,
+ misses in the L2 cache, and cannot allocate a WAY.) There is one 'failure' case
+ where L2C sets [NOWAY]: when it cannot leave a block locked in the L2 cache as
+ part of a LCKL2 transaction. See L2C_TTG()_ERR for logged information. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1C/H) Write reference outside all the defined and enabled address space
+ control (ASC) regions, or secure write reference to an ASC region
+ not enabled for secure access, or nonsecure write reference to an
+ ASC region not enabled for nonsecure access.
+ This may be an indication of software
+ failure, and may be considered fatal.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1C/H) Read reference outside all the defined and enabled address space
+ control (ASC) regions, or secure read reference to an ASC region
+ not enabled for secure access, or nonsecure read reference to an ASC
+ region not enabled for nonsecure access.
+ [RDNXM] interrupts can occur during normal operation as the cores are
+ allowed to prefetch to nonexistent memory locations. Therefore,
+ [RDNXM] is for informational purposes only.
+ See L2C_TAD()_ERR for logged information.
+ See L2C_ASC_REGION()_START, L2C_ASC_REGION()_END, and
+ L2C_ASC_REGION()_ATTR for ASC region specification. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1C/H) Illegal read to disabled LMC error. A DRAM read arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1C/H) Illegal write to disabled LMC error. A DRAM write arrived before LMC was enabled.
+ Should not occur during normal operation.
+ This may be considered fatal. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1C/H) An LFB entry (or more) has encountered a timeout condition When [LFBTO] timeout
+ condition occurs L2C_TAD()_TIMEOUT is loaded. L2C_TAD()_TIMEOUT is loaded with
+ info from the first LFB that timed out. if multiple LFB timed out
+ simultaneously, then the it will capture info from the lowest LFB number that
+ timed out.
+ Should not occur during normal operation. OCI/CCPI link failures may cause this
+ failure. This may be an indication of hardware failure, and may be considered
+ fatal. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1C/H) Global sync OCI timeout. Should not occur during normal operation. OCI/CCPI link
+ failures may cause this failure. This may be an indication of hardware failure,
+ and may be considered fatal. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1C/H) RTG single-bit error on a read. See L2C_TAD()_RTG_ERR for logged
+ information. When [RTGSBE] is set, hardware corrected the error before using the
+ RTG tag, but did not correct any stored value. When [RTGSBE] is set, software
+ should eject the RTG location indicated by the corresponding
+ L2C_TAD()_RTG_ERR[WAY,L2IDX] (via a SYS CVMCACHEWBIL2I instruction below)
+ before clearing [RTGSBE]. Otherwise, hardware may encounter the error again the
+ next time the same RTG location is referenced. Software may also choose to count
+ the number of these single-bit errors.
+
+ The SYS CVMCACHEWBIL2I instruction payload should have:
+ \<pre\>
+ payload\<24\> = 1
+ payload\<23:20\> = L2C_TAD()_RTG_ERR[WAY]
+ payload\<19:7\> = L2C_TAD()_RTG_ERR[L2IDX]
+ \</pre\>
+ Note that L2C_CTL[DISIDXALIAS] has no effect on the payload. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1C/H) RTG double-bit error.
+ See L2C_TAD()_RTG_ERR for logged information.
+ An indication of a hardware failure and may be considered fatal. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1C/H) Illegal read operation to a remote node with L2C_OCI_CTL[ENAOCI][node]
+ clear. Note [RDDISOCI] interrupts can occur during normal operation as the cores
+ are allowed to prefetch to nonexistent memory locations. Therefore, [RDDISOCI]
+ is for informational purposes only. See L2C_TAD()_ERR for logged information. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1C/H) Illegal write operation to a remote node with L2C_OCI_CTL[ENAOCI][node] clear. See
+ L2C_TAD()_ERR for logged information.
+ During normal hardware operation, an indication of a software failure and may be
+ considered fatal. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn88xxp2;
+};
+typedef union bdk_l2c_tadx_int_w1c bdk_l2c_tadx_int_w1c_t;
+
+static inline uint64_t BDK_L2C_TADX_INT_W1C(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_INT_W1C(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050040000ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050040000ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050040000ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_INT_W1C", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_INT_W1C(a) bdk_l2c_tadx_int_w1c_t
+#define bustype_BDK_L2C_TADX_INT_W1C(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_INT_W1C(a) "L2C_TADX_INT_W1C"
+#define device_bar_BDK_L2C_TADX_INT_W1C(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_INT_W1C(a) (a)
+#define arguments_BDK_L2C_TADX_INT_W1C(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_int_w1s
+ *
+ * L2C TAD Interrupt Set Registers
+ * This register sets interrupt bits.
+ */
+union bdk_l2c_tadx_int_w1s
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_int_w1s_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_l2c_tadx_int_w1s_cn88xxp1
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t reserved_18 : 1;
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t reserved_18 : 1;
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn88xxp1;
+ struct bdk_l2c_tadx_int_w1s_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[RDDISOCI]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_l2c_tadx_int_w1s_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[RDDISOCI]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_33 : 15;
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0..3)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn83xx;
+ struct bdk_l2c_tadx_int_w1s_cn88xxp2
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_36_63 : 28;
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[GSYNCTO]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dsbe : 1; /**< [ 0: 0](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DSBE]. */
+ uint64_t l2ddbe : 1; /**< [ 1: 1](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[L2DDBE]. */
+ uint64_t sbfsbe : 1; /**< [ 2: 2](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFSBE]. */
+ uint64_t sbfdbe : 1; /**< [ 3: 3](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[SBFDBE]. */
+ uint64_t fbfsbe : 1; /**< [ 4: 4](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFSBE]. */
+ uint64_t fbfdbe : 1; /**< [ 5: 5](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[FBFDBE]. */
+ uint64_t reserved_6_7 : 2;
+ uint64_t tagsbe : 1; /**< [ 8: 8](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGSBE]. */
+ uint64_t tagdbe : 1; /**< [ 9: 9](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[TAGDBE]. */
+ uint64_t noway : 1; /**< [ 10: 10](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[NOWAY]. */
+ uint64_t reserved_11_12 : 2;
+ uint64_t wrnxm : 1; /**< [ 13: 13](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRNXM]. */
+ uint64_t rdnxm : 1; /**< [ 14: 14](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDNXM]. */
+ uint64_t rddislmc : 1; /**< [ 15: 15](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISLMC]. */
+ uint64_t wrdislmc : 1; /**< [ 16: 16](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISLMC]. */
+ uint64_t lfbto : 1; /**< [ 17: 17](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[LFBTO]. */
+ uint64_t gsyncto : 1; /**< [ 18: 18](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[GSYNCTO]. */
+ uint64_t reserved_19_31 : 13;
+ uint64_t rtgsbe : 1; /**< [ 32: 32](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGSBE]. */
+ uint64_t rtgdbe : 1; /**< [ 33: 33](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RTGDBE]. */
+ uint64_t rddisoci : 1; /**< [ 34: 34](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[RDDISOCI]. */
+ uint64_t wrdisoci : 1; /**< [ 35: 35](R/W1S/H) Reads or sets L2C_TAD(0..7)_INT_W1C[WRDISOCI]. */
+ uint64_t reserved_36_63 : 28;
+#endif /* Word 0 - End */
+ } cn88xxp2;
+};
+typedef union bdk_l2c_tadx_int_w1s bdk_l2c_tadx_int_w1s_t;
+
+static inline uint64_t BDK_L2C_TADX_INT_W1S(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_INT_W1S(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050040008ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050040008ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050040008ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_INT_W1S", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_INT_W1S(a) bdk_l2c_tadx_int_w1s_t
+#define bustype_BDK_L2C_TADX_INT_W1S(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_INT_W1S(a) "L2C_TADX_INT_W1S"
+#define device_bar_BDK_L2C_TADX_INT_W1S(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_INT_W1S(a) (a)
+#define arguments_BDK_L2C_TADX_INT_W1S(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_msix_pba#
+ *
+ * L2C TAD MSI-X Pending Bit Array Registers
+ * This register is the MSI-X PBA table; the bit number is indexed by the L2C_TAD_INT_VEC_E
+ * enumeration.
+ */
+union bdk_l2c_tadx_msix_pbax
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_msix_pbax_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO) Pending message for the associated L2C_TAD()_MSIX_VEC()_CTL, enumerated by
+ L2C_TAD_INT_VEC_E. Bits
+ that have no associated L2C_TAD_INT_VEC_E are 0. */
+#else /* Word 0 - Little Endian */
+ uint64_t pend : 64; /**< [ 63: 0](RO) Pending message for the associated L2C_TAD()_MSIX_VEC()_CTL, enumerated by
+ L2C_TAD_INT_VEC_E. Bits
+ that have no associated L2C_TAD_INT_VEC_E are 0. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_l2c_tadx_msix_pbax_s cn; */
+};
+typedef union bdk_l2c_tadx_msix_pbax bdk_l2c_tadx_msix_pbax_t;
+
+static inline uint64_t BDK_L2C_TADX_MSIX_PBAX(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_MSIX_PBAX(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a==0) && (b==0)))
+ return 0x87e050ff0000ll + 0x1000000ll * ((a) & 0x0) + 8ll * ((b) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b==0)))
+ return 0x87e050ff0000ll + 0x1000000ll * ((a) & 0x3) + 8ll * ((b) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && ((a<=7) && (b==0)))
+ return 0x87e050ff0000ll + 0x1000000ll * ((a) & 0x7) + 8ll * ((b) & 0x0);
+ __bdk_csr_fatal("L2C_TADX_MSIX_PBAX", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_MSIX_PBAX(a,b) bdk_l2c_tadx_msix_pbax_t
+#define bustype_BDK_L2C_TADX_MSIX_PBAX(a,b) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_MSIX_PBAX(a,b) "L2C_TADX_MSIX_PBAX"
+#define device_bar_BDK_L2C_TADX_MSIX_PBAX(a,b) 0x4 /* PF_BAR4 */
+#define busnum_BDK_L2C_TADX_MSIX_PBAX(a,b) (a)
+#define arguments_BDK_L2C_TADX_MSIX_PBAX(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_msix_vec#_addr
+ *
+ * L2C TAD MSI-X Vector-Table Address Register
+ * This register is the MSI-X vector table, indexed by the L2C_TAD_INT_VEC_E enumeration.
+ */
+union bdk_l2c_tadx_msix_vecx_addr
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_msix_vecx_addr_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_49_63 : 15;
+ uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
+ uint64_t reserved_1 : 1;
+ uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
+ 0 = This vector may be read or written by either secure or nonsecure states.
+ 1 = This vector's L2C_TAD()_MSIX_VEC()_ADDR, L2C_TAD()_MSIX_VEC()_CTL, and corresponding
+ bit of L2C_TAD()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
+ by the nonsecure world.
+
+ If PCCPF_L2C_TAD_VSEC_SCTL[MSIX_SEC] (for documentation, see
+ PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
+ set, all vectors are secure and function as if [SECVEC] was set. */
+#else /* Word 0 - Little Endian */
+ uint64_t secvec : 1; /**< [ 0: 0](SR/W) Secure vector.
+ 0 = This vector may be read or written by either secure or nonsecure states.
+ 1 = This vector's L2C_TAD()_MSIX_VEC()_ADDR, L2C_TAD()_MSIX_VEC()_CTL, and corresponding
+ bit of L2C_TAD()_MSIX_PBA() are RAZ/WI and does not cause a fault when accessed
+ by the nonsecure world.
+
+ If PCCPF_L2C_TAD_VSEC_SCTL[MSIX_SEC] (for documentation, see
+ PCCPF_XXX_VSEC_SCTL[MSIX_SEC]) is
+ set, all vectors are secure and function as if [SECVEC] was set. */
+ uint64_t reserved_1 : 1;
+ uint64_t addr : 47; /**< [ 48: 2](R/W) IOVA to use for MSI-X delivery of this vector. */
+ uint64_t reserved_49_63 : 15;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_l2c_tadx_msix_vecx_addr_s cn; */
+};
+typedef union bdk_l2c_tadx_msix_vecx_addr bdk_l2c_tadx_msix_vecx_addr_t;
+
+static inline uint64_t BDK_L2C_TADX_MSIX_VECX_ADDR(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_MSIX_VECX_ADDR(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a==0) && (b==0)))
+ return 0x87e050f00000ll + 0x1000000ll * ((a) & 0x0) + 0x10ll * ((b) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b==0)))
+ return 0x87e050f00000ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && ((a<=7) && (b==0)))
+ return 0x87e050f00000ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0x0);
+ __bdk_csr_fatal("L2C_TADX_MSIX_VECX_ADDR", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_MSIX_VECX_ADDR(a,b) bdk_l2c_tadx_msix_vecx_addr_t
+#define bustype_BDK_L2C_TADX_MSIX_VECX_ADDR(a,b) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_MSIX_VECX_ADDR(a,b) "L2C_TADX_MSIX_VECX_ADDR"
+#define device_bar_BDK_L2C_TADX_MSIX_VECX_ADDR(a,b) 0x4 /* PF_BAR4 */
+#define busnum_BDK_L2C_TADX_MSIX_VECX_ADDR(a,b) (a)
+#define arguments_BDK_L2C_TADX_MSIX_VECX_ADDR(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_msix_vec#_ctl
+ *
+ * L2C TAD MSI-X Vector-Table Control and Data Register
+ * This register is the MSI-X vector table, indexed by the L2C_TAD_INT_VEC_E enumeration.
+ */
+union bdk_l2c_tadx_msix_vecx_ctl
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_msix_vecx_ctl_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_33_63 : 31;
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t data : 20; /**< [ 19: 0](R/W) Data to use for MSI-X delivery of this vector. */
+#else /* Word 0 - Little Endian */
+ uint64_t data : 20; /**< [ 19: 0](R/W) Data to use for MSI-X delivery of this vector. */
+ uint64_t reserved_20_31 : 12;
+ uint64_t mask : 1; /**< [ 32: 32](R/W) When set, no MSI-X interrupts are sent to this vector. */
+ uint64_t reserved_33_63 : 31;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_l2c_tadx_msix_vecx_ctl_s cn; */
+};
+typedef union bdk_l2c_tadx_msix_vecx_ctl bdk_l2c_tadx_msix_vecx_ctl_t;
+
+static inline uint64_t BDK_L2C_TADX_MSIX_VECX_CTL(unsigned long a, unsigned long b) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_MSIX_VECX_CTL(unsigned long a, unsigned long b)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && ((a==0) && (b==0)))
+ return 0x87e050f00008ll + 0x1000000ll * ((a) & 0x0) + 0x10ll * ((b) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && ((a<=3) && (b==0)))
+ return 0x87e050f00008ll + 0x1000000ll * ((a) & 0x3) + 0x10ll * ((b) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && ((a<=7) && (b==0)))
+ return 0x87e050f00008ll + 0x1000000ll * ((a) & 0x7) + 0x10ll * ((b) & 0x0);
+ __bdk_csr_fatal("L2C_TADX_MSIX_VECX_CTL", 2, a, b, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_MSIX_VECX_CTL(a,b) bdk_l2c_tadx_msix_vecx_ctl_t
+#define bustype_BDK_L2C_TADX_MSIX_VECX_CTL(a,b) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_MSIX_VECX_CTL(a,b) "L2C_TADX_MSIX_VECX_CTL"
+#define device_bar_BDK_L2C_TADX_MSIX_VECX_CTL(a,b) 0x4 /* PF_BAR4 */
+#define busnum_BDK_L2C_TADX_MSIX_VECX_CTL(a,b) (a)
+#define arguments_BDK_L2C_TADX_MSIX_VECX_CTL(a,b) (a),(b),-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_rtg_err
+ *
+ * Level 2 Cache TAD RTG Error Information Registers
+ * This register records error information for all RTG SBE/DBE errors.
+ * The priority of errors (lowest to highest) is SBE, DBE. An error locks [SYN], [WAY],
+ * and [L2IDX] for equal or lower priority errors until cleared by software.
+ * The syndrome is recorded for DBE errors, though the utility of the value is not clear.
+ * [L2IDX]\<19:7\> is the L2 block index associated with the command which had no way to allocate.
+ */
+union bdk_l2c_tadx_rtg_err
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_rtg_err_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t rtgdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit RTG ECC error. */
+ uint64_t rtgsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit RTG ECC error. */
+ uint64_t reserved_39_61 : 23;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_24_31 : 8;
+ uint64_t way : 4; /**< [ 23: 20](RO/H) Way of the L2 block containing the error. */
+ uint64_t l2idx : 13; /**< [ 19: 7](RO/H) Index of the L2 block containing the error.
+ See L2C_TAD()_INT_W1C[RTGSBE] for an important use of this field. */
+ uint64_t reserved_0_6 : 7;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_6 : 7;
+ uint64_t l2idx : 13; /**< [ 19: 7](RO/H) Index of the L2 block containing the error.
+ See L2C_TAD()_INT_W1C[RTGSBE] for an important use of this field. */
+ uint64_t way : 4; /**< [ 23: 20](RO/H) Way of the L2 block containing the error. */
+ uint64_t reserved_24_31 : 8;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_39_61 : 23;
+ uint64_t rtgsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit RTG ECC error. */
+ uint64_t rtgdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit RTG ECC error. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_l2c_tadx_rtg_err_s cn; */
+};
+typedef union bdk_l2c_tadx_rtg_err bdk_l2c_tadx_rtg_err_t;
+
+static inline uint64_t BDK_L2C_TADX_RTG_ERR(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_RTG_ERR(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX_PASS2_X) && (a<=7))
+ return 0x87e050060300ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_RTG_ERR", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_RTG_ERR(a) bdk_l2c_tadx_rtg_err_t
+#define bustype_BDK_L2C_TADX_RTG_ERR(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_RTG_ERR(a) "L2C_TADX_RTG_ERR"
+#define device_bar_BDK_L2C_TADX_RTG_ERR(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_RTG_ERR(a) (a)
+#define arguments_BDK_L2C_TADX_RTG_ERR(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_tbf_bist_status
+ *
+ * L2C TAD Quad Buffer BIST Status Registers
+ */
+union bdk_l2c_tadx_tbf_bist_status
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_tbf_bist_status_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t vbffl : 16; /**< [ 63: 48](RO/H) BIST failure status for VBF ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+ uint64_t sbffl : 16; /**< [ 47: 32](RO/H) BIST failure status for SBF ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+ uint64_t fbfrspfl : 16; /**< [ 31: 16](RO/H) BIST failure status for FBF RSP port ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+ uint64_t fbfwrpfl : 16; /**< [ 15: 0](RO/H) BIST failure status for FBF WRP port ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+#else /* Word 0 - Little Endian */
+ uint64_t fbfwrpfl : 16; /**< [ 15: 0](RO/H) BIST failure status for FBF WRP port ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+ uint64_t fbfrspfl : 16; /**< [ 31: 16](RO/H) BIST failure status for FBF RSP port ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+ uint64_t sbffl : 16; /**< [ 47: 32](RO/H) BIST failure status for SBF ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+ uint64_t vbffl : 16; /**< [ 63: 48](RO/H) BIST failure status for VBF ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_l2c_tadx_tbf_bist_status_s cn; */
+};
+typedef union bdk_l2c_tadx_tbf_bist_status bdk_l2c_tadx_tbf_bist_status_t;
+
+static inline uint64_t BDK_L2C_TADX_TBF_BIST_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_TBF_BIST_STATUS(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050070000ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050070000ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050070000ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_TBF_BIST_STATUS", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_TBF_BIST_STATUS(a) bdk_l2c_tadx_tbf_bist_status_t
+#define bustype_BDK_L2C_TADX_TBF_BIST_STATUS(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_TBF_BIST_STATUS(a) "L2C_TADX_TBF_BIST_STATUS"
+#define device_bar_BDK_L2C_TADX_TBF_BIST_STATUS(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_TBF_BIST_STATUS(a) (a)
+#define arguments_BDK_L2C_TADX_TBF_BIST_STATUS(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_tdt_bist_status
+ *
+ * L2C TAD Data BIST Status Registers
+ */
+union bdk_l2c_tadx_tdt_bist_status
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_tdt_bist_status_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_16_63 : 48;
+ uint64_t l2dfl : 16; /**< [ 15: 0](RO/H) BIST failure status for L2D ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+#else /* Word 0 - Little Endian */
+ uint64_t l2dfl : 16; /**< [ 15: 0](RO/H) BIST failure status for L2D ({QD7H1,QD7H0, ... , QD0H1, QD0H0}). */
+ uint64_t reserved_16_63 : 48;
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_l2c_tadx_tdt_bist_status_s cn; */
+};
+typedef union bdk_l2c_tadx_tdt_bist_status bdk_l2c_tadx_tdt_bist_status_t;
+
+static inline uint64_t BDK_L2C_TADX_TDT_BIST_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_TDT_BIST_STATUS(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050070100ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050070100ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050070100ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_TDT_BIST_STATUS", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_TDT_BIST_STATUS(a) bdk_l2c_tadx_tdt_bist_status_t
+#define bustype_BDK_L2C_TADX_TDT_BIST_STATUS(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_TDT_BIST_STATUS(a) "L2C_TADX_TDT_BIST_STATUS"
+#define device_bar_BDK_L2C_TADX_TDT_BIST_STATUS(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_TDT_BIST_STATUS(a) (a)
+#define arguments_BDK_L2C_TADX_TDT_BIST_STATUS(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_tqd_err
+ *
+ * L2C TAD Quad Error Information Registers
+ * This register records error information for all L2D/SBF/FBF errors.
+ * An error locks the [L2DIDX] and [SYN] fields and sets the bit corresponding to the error
+ * received.
+ * DBE errors take priority and overwrite an earlier logged SBE error. Only one of SBE/DBE is set
+ * at any given time and serves to document which error the [L2DIDX]/[SYN] is associated with.
+ * The syndrome is recorded for DBE errors, though the utility of the value is not clear.
+ */
+union bdk_l2c_tadx_tqd_err
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_tqd_err_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t l2ddbe : 1; /**< [ 63: 63](RO/H) L2DIDX/SYN corresponds to a double-bit L2D ECC error. */
+ uint64_t sbfdbe : 1; /**< [ 62: 62](RO/H) L2DIDX/SYN corresponds to a double-bit SBF ECC error. */
+ uint64_t fbfdbe : 1; /**< [ 61: 61](RO/H) L2DIDX/SYN corresponds to a double-bit FBF ECC error. */
+ uint64_t l2dsbe : 1; /**< [ 60: 60](RO/H) L2DIDX/SYN corresponds to a single-bit L2D ECC error. */
+ uint64_t sbfsbe : 1; /**< [ 59: 59](RO/H) L2DIDX/SYN corresponds to a single-bit SBF ECC error. */
+ uint64_t fbfsbe : 1; /**< [ 58: 58](RO/H) L2DIDX/SYN corresponds to a single-bit FBF ECC error. */
+ uint64_t reserved_40_57 : 18;
+ uint64_t syn : 8; /**< [ 39: 32](RO/H) Error syndrome. */
+ uint64_t reserved_18_31 : 14;
+ uint64_t qdnum : 3; /**< [ 17: 15](RO/H) Quad containing the error. */
+ uint64_t qdhlf : 1; /**< [ 14: 14](RO/H) Quad half of the containing the error. */
+ uint64_t l2didx : 14; /**< [ 13: 0](RO/H) For L2D errors, index within the quad-half containing the error. For SBF and FBF errors
+ \<13:5\> is 0x0 and \<4:0\> is the index of the error (\<4:1\> is lfbnum\<3:0\>, \<0\> is addr\<5\>).
+ See L2C_TAD()_INT_W1C[L2DSBE] for an important use of this field. */
+#else /* Word 0 - Little Endian */
+ uint64_t l2didx : 14; /**< [ 13: 0](RO/H) For L2D errors, index within the quad-half containing the error. For SBF and FBF errors
+ \<13:5\> is 0x0 and \<4:0\> is the index of the error (\<4:1\> is lfbnum\<3:0\>, \<0\> is addr\<5\>).
+ See L2C_TAD()_INT_W1C[L2DSBE] for an important use of this field. */
+ uint64_t qdhlf : 1; /**< [ 14: 14](RO/H) Quad half of the containing the error. */
+ uint64_t qdnum : 3; /**< [ 17: 15](RO/H) Quad containing the error. */
+ uint64_t reserved_18_31 : 14;
+ uint64_t syn : 8; /**< [ 39: 32](RO/H) Error syndrome. */
+ uint64_t reserved_40_57 : 18;
+ uint64_t fbfsbe : 1; /**< [ 58: 58](RO/H) L2DIDX/SYN corresponds to a single-bit FBF ECC error. */
+ uint64_t sbfsbe : 1; /**< [ 59: 59](RO/H) L2DIDX/SYN corresponds to a single-bit SBF ECC error. */
+ uint64_t l2dsbe : 1; /**< [ 60: 60](RO/H) L2DIDX/SYN corresponds to a single-bit L2D ECC error. */
+ uint64_t fbfdbe : 1; /**< [ 61: 61](RO/H) L2DIDX/SYN corresponds to a double-bit FBF ECC error. */
+ uint64_t sbfdbe : 1; /**< [ 62: 62](RO/H) L2DIDX/SYN corresponds to a double-bit SBF ECC error. */
+ uint64_t l2ddbe : 1; /**< [ 63: 63](RO/H) L2DIDX/SYN corresponds to a double-bit L2D ECC error. */
+#endif /* Word 0 - End */
+ } s;
+ /* struct bdk_l2c_tadx_tqd_err_s cn; */
+};
+typedef union bdk_l2c_tadx_tqd_err bdk_l2c_tadx_tqd_err_t;
+
+static inline uint64_t BDK_L2C_TADX_TQD_ERR(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_TQD_ERR(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050060100ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050060100ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050060100ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_TQD_ERR", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_TQD_ERR(a) bdk_l2c_tadx_tqd_err_t
+#define bustype_BDK_L2C_TADX_TQD_ERR(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_TQD_ERR(a) "L2C_TADX_TQD_ERR"
+#define device_bar_BDK_L2C_TADX_TQD_ERR(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_TQD_ERR(a) (a)
+#define arguments_BDK_L2C_TADX_TQD_ERR(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_ttg_bist_status
+ *
+ * L2C TAD Tag BIST Status Registers
+ */
+union bdk_l2c_tadx_ttg_bist_status
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_ttg_bist_status_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_50_63 : 14;
+ uint64_t xmdmskfl : 2; /**< [ 49: 48](RO/H) BIST failure status for RSTP XMDMSK memories. */
+ uint64_t rtgfl : 16; /**< [ 47: 32](RO/H) BIST failure status for RTG ways. */
+ uint64_t reserved_18_31 : 14;
+ uint64_t lrulfbfl : 1; /**< [ 17: 17](RO) Reserved, always zero. */
+ uint64_t lrufl : 1; /**< [ 16: 16](RO/H) BIST failure status for tag LRU. */
+ uint64_t tagfl : 16; /**< [ 15: 0](RO/H) BIST failure status for TAG ways. */
+#else /* Word 0 - Little Endian */
+ uint64_t tagfl : 16; /**< [ 15: 0](RO/H) BIST failure status for TAG ways. */
+ uint64_t lrufl : 1; /**< [ 16: 16](RO/H) BIST failure status for tag LRU. */
+ uint64_t lrulfbfl : 1; /**< [ 17: 17](RO) Reserved, always zero. */
+ uint64_t reserved_18_31 : 14;
+ uint64_t rtgfl : 16; /**< [ 47: 32](RO/H) BIST failure status for RTG ways. */
+ uint64_t xmdmskfl : 2; /**< [ 49: 48](RO/H) BIST failure status for RSTP XMDMSK memories. */
+ uint64_t reserved_50_63 : 14;
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_l2c_tadx_ttg_bist_status_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_50_63 : 14;
+ uint64_t xmdmskfl : 2; /**< [ 49: 48](RO/H) Reserved, always zero. */
+ uint64_t reserved_18_47 : 30;
+ uint64_t lrulfbfl : 1; /**< [ 17: 17](RO) Reserved, always zero. */
+ uint64_t lrufl : 1; /**< [ 16: 16](RO/H) BIST failure status for tag LRU. */
+ uint64_t tagfl : 16; /**< [ 15: 0](RO/H) BIST failure status for TAG ways. */
+#else /* Word 0 - Little Endian */
+ uint64_t tagfl : 16; /**< [ 15: 0](RO/H) BIST failure status for TAG ways. */
+ uint64_t lrufl : 1; /**< [ 16: 16](RO/H) BIST failure status for tag LRU. */
+ uint64_t lrulfbfl : 1; /**< [ 17: 17](RO) Reserved, always zero. */
+ uint64_t reserved_18_47 : 30;
+ uint64_t xmdmskfl : 2; /**< [ 49: 48](RO/H) Reserved, always zero. */
+ uint64_t reserved_50_63 : 14;
+#endif /* Word 0 - End */
+ } cn81xx;
+ /* struct bdk_l2c_tadx_ttg_bist_status_s cn88xx; */
+ struct bdk_l2c_tadx_ttg_bist_status_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t reserved_50_63 : 14;
+ uint64_t xmdmskfl : 2; /**< [ 49: 48](RO/H) BIST failure status for RSTP XMDMSK memories. */
+ uint64_t reserved_18_47 : 30;
+ uint64_t lrulfbfl : 1; /**< [ 17: 17](RO) Reserved, always zero. */
+ uint64_t lrufl : 1; /**< [ 16: 16](RO/H) BIST failure status for tag LRU. */
+ uint64_t tagfl : 16; /**< [ 15: 0](RO/H) BIST failure status for TAG ways. */
+#else /* Word 0 - Little Endian */
+ uint64_t tagfl : 16; /**< [ 15: 0](RO/H) BIST failure status for TAG ways. */
+ uint64_t lrufl : 1; /**< [ 16: 16](RO/H) BIST failure status for tag LRU. */
+ uint64_t lrulfbfl : 1; /**< [ 17: 17](RO) Reserved, always zero. */
+ uint64_t reserved_18_47 : 30;
+ uint64_t xmdmskfl : 2; /**< [ 49: 48](RO/H) BIST failure status for RSTP XMDMSK memories. */
+ uint64_t reserved_50_63 : 14;
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_l2c_tadx_ttg_bist_status bdk_l2c_tadx_ttg_bist_status_t;
+
+static inline uint64_t BDK_L2C_TADX_TTG_BIST_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_TTG_BIST_STATUS(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050070200ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050070200ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050070200ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_TTG_BIST_STATUS", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_TTG_BIST_STATUS(a) bdk_l2c_tadx_ttg_bist_status_t
+#define bustype_BDK_L2C_TADX_TTG_BIST_STATUS(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_TTG_BIST_STATUS(a) "L2C_TADX_TTG_BIST_STATUS"
+#define device_bar_BDK_L2C_TADX_TTG_BIST_STATUS(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_TTG_BIST_STATUS(a) (a)
+#define arguments_BDK_L2C_TADX_TTG_BIST_STATUS(a) (a),-1,-1,-1
+
+/**
+ * Register (RSL) l2c_tad#_ttg_err
+ *
+ * L2C TAD Tag Error Information Registers
+ * This register records error information for all TAG SBE/DBE/NOWAY errors.
+ * The priority of errors (lowest to highest) is NOWAY, SBE, DBE. An error locks [SYN], [WAY],
+ * and [L2IDX] for equal or lower priority errors until cleared by software.
+ * The syndrome is recorded for DBE errors, though the utility of the value is not clear.
+ * A NOWAY error does not change the value of the [SYN] field, and leaves [WAY] unpredictable.
+ * [L2IDX]\<19:7\> is the L2 block index associated with the command which had no way to allocate.
+ */
+union bdk_l2c_tadx_ttg_err
+{
+ uint64_t u;
+ struct bdk_l2c_tadx_ttg_err_s
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t tagdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit TAG ECC error. */
+ uint64_t tagsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit TAG ECC error. */
+ uint64_t noway : 1; /**< [ 61: 61](RO/H) Information refers to a NOWAY error. */
+ uint64_t reserved_39_60 : 22;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_0_31 : 32;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_31 : 32;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_39_60 : 22;
+ uint64_t noway : 1; /**< [ 61: 61](RO/H) Information refers to a NOWAY error. */
+ uint64_t tagsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit TAG ECC error. */
+ uint64_t tagdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit TAG ECC error. */
+#endif /* Word 0 - End */
+ } s;
+ struct bdk_l2c_tadx_ttg_err_cn81xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t tagdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit TAG ECC error. */
+ uint64_t tagsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit TAG ECC error. */
+ uint64_t noway : 1; /**< [ 61: 61](RO/H) Information refers to a NOWAY error. */
+ uint64_t reserved_39_60 : 22;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_21_31 : 11;
+ uint64_t way : 4; /**< [ 20: 17](RO/H) Way of the L2 block containing the error. */
+ uint64_t l2idx : 10; /**< [ 16: 7](RO/H) Index of the L2 block containing the error.
+ See L2C_TAD()_INT_W1C[TAGSBE] for an important use of this field. */
+ uint64_t reserved_0_6 : 7;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_6 : 7;
+ uint64_t l2idx : 10; /**< [ 16: 7](RO/H) Index of the L2 block containing the error.
+ See L2C_TAD()_INT_W1C[TAGSBE] for an important use of this field. */
+ uint64_t way : 4; /**< [ 20: 17](RO/H) Way of the L2 block containing the error. */
+ uint64_t reserved_21_31 : 11;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_39_60 : 22;
+ uint64_t noway : 1; /**< [ 61: 61](RO/H) Information refers to a NOWAY error. */
+ uint64_t tagsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit TAG ECC error. */
+ uint64_t tagdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit TAG ECC error. */
+#endif /* Word 0 - End */
+ } cn81xx;
+ struct bdk_l2c_tadx_ttg_err_cn88xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t tagdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit TAG ECC error. */
+ uint64_t tagsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit TAG ECC error. */
+ uint64_t noway : 1; /**< [ 61: 61](RO/H) Information refers to a NOWAY error. */
+ uint64_t reserved_39_60 : 22;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_24_31 : 8;
+ uint64_t way : 4; /**< [ 23: 20](RO/H) Way of the L2 block containing the error. */
+ uint64_t l2idx : 13; /**< [ 19: 7](RO/H) Index of the L2 block containing the error.
+ See L2C_TAD()_INT_W1C[TAGSBE] for an important use of this field. */
+ uint64_t reserved_0_6 : 7;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_6 : 7;
+ uint64_t l2idx : 13; /**< [ 19: 7](RO/H) Index of the L2 block containing the error.
+ See L2C_TAD()_INT_W1C[TAGSBE] for an important use of this field. */
+ uint64_t way : 4; /**< [ 23: 20](RO/H) Way of the L2 block containing the error. */
+ uint64_t reserved_24_31 : 8;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_39_60 : 22;
+ uint64_t noway : 1; /**< [ 61: 61](RO/H) Information refers to a NOWAY error. */
+ uint64_t tagsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit TAG ECC error. */
+ uint64_t tagdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit TAG ECC error. */
+#endif /* Word 0 - End */
+ } cn88xx;
+ struct bdk_l2c_tadx_ttg_err_cn83xx
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
+ uint64_t tagdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit TAG ECC error. */
+ uint64_t tagsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit TAG ECC error. */
+ uint64_t noway : 1; /**< [ 61: 61](RO/H) Information refers to a NOWAY error. */
+ uint64_t reserved_39_60 : 22;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_23_31 : 9;
+ uint64_t way : 4; /**< [ 22: 19](RO/H) Way of the L2 block containing the error. */
+ uint64_t l2idx : 12; /**< [ 18: 7](RO/H) Index of the L2 block containing the error.
+ See L2C_TAD()_INT_W1C[TAGSBE] for an important use of this field. */
+ uint64_t reserved_0_6 : 7;
+#else /* Word 0 - Little Endian */
+ uint64_t reserved_0_6 : 7;
+ uint64_t l2idx : 12; /**< [ 18: 7](RO/H) Index of the L2 block containing the error.
+ See L2C_TAD()_INT_W1C[TAGSBE] for an important use of this field. */
+ uint64_t way : 4; /**< [ 22: 19](RO/H) Way of the L2 block containing the error. */
+ uint64_t reserved_23_31 : 9;
+ uint64_t syn : 7; /**< [ 38: 32](RO/H) Syndrome for the single-bit error. */
+ uint64_t reserved_39_60 : 22;
+ uint64_t noway : 1; /**< [ 61: 61](RO/H) Information refers to a NOWAY error. */
+ uint64_t tagsbe : 1; /**< [ 62: 62](RO/H) Information refers to a single-bit TAG ECC error. */
+ uint64_t tagdbe : 1; /**< [ 63: 63](RO/H) Information refers to a double-bit TAG ECC error. */
+#endif /* Word 0 - End */
+ } cn83xx;
+};
+typedef union bdk_l2c_tadx_ttg_err bdk_l2c_tadx_ttg_err_t;
+
+static inline uint64_t BDK_L2C_TADX_TTG_ERR(unsigned long a) __attribute__ ((pure, always_inline));
+static inline uint64_t BDK_L2C_TADX_TTG_ERR(unsigned long a)
+{
+ if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a==0))
+ return 0x87e050060200ll + 0x1000000ll * ((a) & 0x0);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
+ return 0x87e050060200ll + 0x1000000ll * ((a) & 0x3);
+ if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=7))
+ return 0x87e050060200ll + 0x1000000ll * ((a) & 0x7);
+ __bdk_csr_fatal("L2C_TADX_TTG_ERR", 1, a, 0, 0, 0);
+}
+
+#define typedef_BDK_L2C_TADX_TTG_ERR(a) bdk_l2c_tadx_ttg_err_t
+#define bustype_BDK_L2C_TADX_TTG_ERR(a) BDK_CSR_TYPE_RSL
+#define basename_BDK_L2C_TADX_TTG_ERR(a) "L2C_TADX_TTG_ERR"
+#define device_bar_BDK_L2C_TADX_TTG_ERR(a) 0x0 /* PF_BAR0 */
+#define busnum_BDK_L2C_TADX_TTG_ERR(a) (a)
+#define arguments_BDK_L2C_TADX_TTG_ERR(a) (a),-1,-1,-1
+
+#endif /* __BDK_CSRS_L2C_TAD_H__ */