/********************************************************************************
 * Marvell GPL License Option
 *
 * If you received this File from Marvell, you may opt to use, redistribute and/or
 * modify this File in accordance with the terms and conditions of the General
 * Public License Version 2, June 1991 (the "GPL License"), a copy of which is
 * available along with the File in the license.txt file or by writing to the Free
 * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
 * on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
 * DISCLAIMED.  The GPL License provides additional details about this warranty
 * disclaimer.
 ******************************************************************************/

//////
/// don't edit! auto-generated by docc: rom.h
////////////////////////////////////////////////////////////
#ifndef rom_h
#define rom_h (){}


#include "ctypes.h"

#pragma pack(1)
#ifdef __cplusplus
  extern "C" {
#endif

#ifndef _DOCC_H_BITOPS_
#define _DOCC_H_BITOPS_ (){}

    #define _bSETMASK_(b)                                      ((b)<32 ? (1<<((b)&31)) : 0)
    #define _NSETMASK_(msb,lsb)                                (_bSETMASK_((msb)+1)-_bSETMASK_(lsb))
    #define _bCLRMASK_(b)                                      (~_bSETMASK_(b))
    #define _NCLRMASK_(msb,lsb)                                (~_NSETMASK_(msb,lsb))
    #define _BFGET_(r,msb,lsb)                                 (_NSETMASK_((msb)-(lsb),0)&((r)>>(lsb)))
    #define _BFSET_(r,msb,lsb,v)                               do{ (r)&=_NCLRMASK_(msb,lsb); (r)|=_NSETMASK_(msb,lsb)&((v)<<(lsb)); }while(0)

#endif



//////
/// 
/// $INTERFACE BOOT_SEC                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 BOOT_VEC             (P)
///               %unsigned 32 word                      0xE59FF018
///     @ 0x00004 BOOT_ARY             (P)
///               %unsigned 32 array_0i                  0xE59FF018
///     # 0x00008 BOOT_ARY1            
///               %unsigned 32 array_1i                  0xE59FF018
///     # 0x0000C BOOT_ARY2            
///               %unsigned 32 array_2i                  0xE59FF018
///     # 0x00010 BOOT_ARY3            
///               %unsigned 32 array_3i                  0xE59FF018
///     # 0x00014 BOOT_ARY4            
///               %unsigned 32 array_4i                  0xE59FF018
///     # 0x00018 BOOT_ARY5            
///               %unsigned 32 array_5i                  0xE59FF018
///     # 0x0001C BOOT_ARY6            
///               %unsigned 32 array_6i                  0xE59FF018
///     @ 0x00020 ADR_0                (RW)
///               %unsigned 32 word                      0x0
///     @ 0x00024 ADR_ARY              (P)
///               %unsigned 32 array_0i                  0x12345678
///     # 0x00028 ADR_ARY1             
///               %unsigned 32 array_1i                  0x12345678
///     # 0x0002C ADR_ARY2             
///               %unsigned 32 array_2i                  0x12345678
///     # 0x00030 ADR_ARY3             
///               %unsigned 32 array_3i                  0x12345678
///     # 0x00034 ADR_ARY4             
///               %unsigned 32 array_4i                  0x12345678
///     # 0x00038 ADR_ARY5             
///               %unsigned 32 array_5i                  0x12345678
///     # 0x0003C ADR_ARY6             
///               %unsigned 32 array_6i                  0x12345678
///     # 0x00040 ADR_ARY7             
///               %unsigned 32 array_7i                  0x12345678
///     # 0x00044 ADR_ARY8             
///               %unsigned 32 array_8i                  0x12345678
///     # 0x00048 ADR_ARY9             
///               %unsigned 32 array_9i                  0x12345678
///     # 0x0004C ADR_ARY10            
///               %unsigned 32 array_10i                 0x12345678
///     # 0x00050 ADR_ARY11            
///               %unsigned 32 array_11i                 0x12345678
///     # 0x00054 ADR_ARY12            
///               %unsigned 32 array_12i                 0x12345678
///     # 0x00058 ADR_ARY13            
///               %unsigned 32 array_13i                 0x12345678
///     # 0x0005C ADR_ARY14            
///               %unsigned 32 array_14i                 0x12345678
///     # 0x00060 ADR_ARY15            
///               %unsigned 32 array_15i                 0x12345678
///     # 0x00064 ADR_ARY16            
///               %unsigned 32 array_16i                 0x12345678
///     # 0x00068 ADR_ARY17            
///               %unsigned 32 array_17i                 0x12345678
///     # 0x0006C ADR_ARY18            
///               %unsigned 32 array_18i                 0x12345678
///     # 0x00070 ADR_ARY19            
///               %unsigned 32 array_19i                 0x12345678
///     # 0x00074 ADR_ARY20            
///               %unsigned 32 array_20i                 0x12345678
///     # 0x00078 ADR_ARY21            
///               %unsigned 32 array_21i                 0x12345678
///     # 0x0007C ADR_ARY22            
///               %unsigned 32 array_22i                 0x12345678
///     # 0x00080 ADR_ARY23            
///               %unsigned 32 array_23i                 0x12345678
///     # 0x00084 ADR_ARY24            
///               %unsigned 32 array_24i                 0x12345678
///     # 0x00088 ADR_ARY25            
///               %unsigned 32 array_25i                 0x12345678
///     # 0x0008C ADR_ARY26            
///               %unsigned 32 array_26i                 0x12345678
///     # 0x00090 ADR_ARY27            
///               %unsigned 32 array_27i                 0x12345678
///     # 0x00094 ADR_ARY28            
///               %unsigned 32 array_28i                 0x12345678
///     # 0x00098 ADR_ARY29            
///               %unsigned 32 array_29i                 0x12345678
///     # 0x0009C ADR_ARY30            
///               %unsigned 32 array_30i                 0x12345678
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     160B, bits:    1280b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BOOT_SEC
#define h_BOOT_SEC (){}

    #define     RA_BOOT_SEC_BOOT_VEC                           0x0000

    #define     BA_BOOT_SEC_BOOT_VEC_word                      0x0000
    #define     B16BOOT_SEC_BOOT_VEC_word                      0x0000
    #define   LSb32BOOT_SEC_BOOT_VEC_word                         0
    #define   LSb16BOOT_SEC_BOOT_VEC_word                         0
    #define       bBOOT_SEC_BOOT_VEC_word                      32
    #define   MSK32BOOT_SEC_BOOT_VEC_word                         0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_BOOT_SEC_BOOT_ARY                           0x0004

    #define     BA_BOOT_SEC_BOOT_ARY_array_0i                  0x0004
    #define     B16BOOT_SEC_BOOT_ARY_array_0i                  0x0004
    #define   LSb32BOOT_SEC_BOOT_ARY_array_0i                     0
    #define   LSb16BOOT_SEC_BOOT_ARY_array_0i                     0
    #define       bBOOT_SEC_BOOT_ARY_array_0i                  32
    #define   MSK32BOOT_SEC_BOOT_ARY_array_0i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_BOOT_ARY1                          0x0008

    #define     BA_BOOT_SEC_BOOT_ARY_array_1i                  0x0008
    #define     B16BOOT_SEC_BOOT_ARY_array_1i                  0x0008
    #define   LSb32BOOT_SEC_BOOT_ARY_array_1i                     0
    #define   LSb16BOOT_SEC_BOOT_ARY_array_1i                     0
    #define       bBOOT_SEC_BOOT_ARY_array_1i                  32
    #define   MSK32BOOT_SEC_BOOT_ARY_array_1i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_BOOT_ARY2                          0x000C

    #define     BA_BOOT_SEC_BOOT_ARY_array_2i                  0x000C
    #define     B16BOOT_SEC_BOOT_ARY_array_2i                  0x000C
    #define   LSb32BOOT_SEC_BOOT_ARY_array_2i                     0
    #define   LSb16BOOT_SEC_BOOT_ARY_array_2i                     0
    #define       bBOOT_SEC_BOOT_ARY_array_2i                  32
    #define   MSK32BOOT_SEC_BOOT_ARY_array_2i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_BOOT_ARY3                          0x0010

    #define     BA_BOOT_SEC_BOOT_ARY_array_3i                  0x0010
    #define     B16BOOT_SEC_BOOT_ARY_array_3i                  0x0010
    #define   LSb32BOOT_SEC_BOOT_ARY_array_3i                     0
    #define   LSb16BOOT_SEC_BOOT_ARY_array_3i                     0
    #define       bBOOT_SEC_BOOT_ARY_array_3i                  32
    #define   MSK32BOOT_SEC_BOOT_ARY_array_3i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_BOOT_ARY4                          0x0014

    #define     BA_BOOT_SEC_BOOT_ARY_array_4i                  0x0014
    #define     B16BOOT_SEC_BOOT_ARY_array_4i                  0x0014
    #define   LSb32BOOT_SEC_BOOT_ARY_array_4i                     0
    #define   LSb16BOOT_SEC_BOOT_ARY_array_4i                     0
    #define       bBOOT_SEC_BOOT_ARY_array_4i                  32
    #define   MSK32BOOT_SEC_BOOT_ARY_array_4i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_BOOT_ARY5                          0x0018

    #define     BA_BOOT_SEC_BOOT_ARY_array_5i                  0x0018
    #define     B16BOOT_SEC_BOOT_ARY_array_5i                  0x0018
    #define   LSb32BOOT_SEC_BOOT_ARY_array_5i                     0
    #define   LSb16BOOT_SEC_BOOT_ARY_array_5i                     0
    #define       bBOOT_SEC_BOOT_ARY_array_5i                  32
    #define   MSK32BOOT_SEC_BOOT_ARY_array_5i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_BOOT_ARY6                          0x001C

    #define     BA_BOOT_SEC_BOOT_ARY_array_6i                  0x001C
    #define     B16BOOT_SEC_BOOT_ARY_array_6i                  0x001C
    #define   LSb32BOOT_SEC_BOOT_ARY_array_6i                     0
    #define   LSb16BOOT_SEC_BOOT_ARY_array_6i                     0
    #define       bBOOT_SEC_BOOT_ARY_array_6i                  32
    #define   MSK32BOOT_SEC_BOOT_ARY_array_6i                     0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_BOOT_SEC_ADR_0                              0x0020

    #define     BA_BOOT_SEC_ADR_0_word                         0x0020
    #define     B16BOOT_SEC_ADR_0_word                         0x0020
    #define   LSb32BOOT_SEC_ADR_0_word                            0
    #define   LSb16BOOT_SEC_ADR_0_word                            0
    #define       bBOOT_SEC_ADR_0_word                         32
    #define   MSK32BOOT_SEC_ADR_0_word                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_BOOT_SEC_ADR_ARY                            0x0024

    #define     BA_BOOT_SEC_ADR_ARY_array_0i                   0x0024
    #define     B16BOOT_SEC_ADR_ARY_array_0i                   0x0024
    #define   LSb32BOOT_SEC_ADR_ARY_array_0i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_0i                      0
    #define       bBOOT_SEC_ADR_ARY_array_0i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_0i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY1                           0x0028

    #define     BA_BOOT_SEC_ADR_ARY_array_1i                   0x0028
    #define     B16BOOT_SEC_ADR_ARY_array_1i                   0x0028
    #define   LSb32BOOT_SEC_ADR_ARY_array_1i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_1i                      0
    #define       bBOOT_SEC_ADR_ARY_array_1i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_1i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY2                           0x002C

    #define     BA_BOOT_SEC_ADR_ARY_array_2i                   0x002C
    #define     B16BOOT_SEC_ADR_ARY_array_2i                   0x002C
    #define   LSb32BOOT_SEC_ADR_ARY_array_2i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_2i                      0
    #define       bBOOT_SEC_ADR_ARY_array_2i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_2i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY3                           0x0030

    #define     BA_BOOT_SEC_ADR_ARY_array_3i                   0x0030
    #define     B16BOOT_SEC_ADR_ARY_array_3i                   0x0030
    #define   LSb32BOOT_SEC_ADR_ARY_array_3i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_3i                      0
    #define       bBOOT_SEC_ADR_ARY_array_3i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_3i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY4                           0x0034

    #define     BA_BOOT_SEC_ADR_ARY_array_4i                   0x0034
    #define     B16BOOT_SEC_ADR_ARY_array_4i                   0x0034
    #define   LSb32BOOT_SEC_ADR_ARY_array_4i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_4i                      0
    #define       bBOOT_SEC_ADR_ARY_array_4i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_4i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY5                           0x0038

    #define     BA_BOOT_SEC_ADR_ARY_array_5i                   0x0038
    #define     B16BOOT_SEC_ADR_ARY_array_5i                   0x0038
    #define   LSb32BOOT_SEC_ADR_ARY_array_5i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_5i                      0
    #define       bBOOT_SEC_ADR_ARY_array_5i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_5i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY6                           0x003C

    #define     BA_BOOT_SEC_ADR_ARY_array_6i                   0x003C
    #define     B16BOOT_SEC_ADR_ARY_array_6i                   0x003C
    #define   LSb32BOOT_SEC_ADR_ARY_array_6i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_6i                      0
    #define       bBOOT_SEC_ADR_ARY_array_6i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_6i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY7                           0x0040

    #define     BA_BOOT_SEC_ADR_ARY_array_7i                   0x0040
    #define     B16BOOT_SEC_ADR_ARY_array_7i                   0x0040
    #define   LSb32BOOT_SEC_ADR_ARY_array_7i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_7i                      0
    #define       bBOOT_SEC_ADR_ARY_array_7i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_7i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY8                           0x0044

    #define     BA_BOOT_SEC_ADR_ARY_array_8i                   0x0044
    #define     B16BOOT_SEC_ADR_ARY_array_8i                   0x0044
    #define   LSb32BOOT_SEC_ADR_ARY_array_8i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_8i                      0
    #define       bBOOT_SEC_ADR_ARY_array_8i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_8i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY9                           0x0048

    #define     BA_BOOT_SEC_ADR_ARY_array_9i                   0x0048
    #define     B16BOOT_SEC_ADR_ARY_array_9i                   0x0048
    #define   LSb32BOOT_SEC_ADR_ARY_array_9i                      0
    #define   LSb16BOOT_SEC_ADR_ARY_array_9i                      0
    #define       bBOOT_SEC_ADR_ARY_array_9i                   32
    #define   MSK32BOOT_SEC_ADR_ARY_array_9i                      0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY10                          0x004C

    #define     BA_BOOT_SEC_ADR_ARY_array_10i                  0x004C
    #define     B16BOOT_SEC_ADR_ARY_array_10i                  0x004C
    #define   LSb32BOOT_SEC_ADR_ARY_array_10i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_10i                     0
    #define       bBOOT_SEC_ADR_ARY_array_10i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_10i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY11                          0x0050

    #define     BA_BOOT_SEC_ADR_ARY_array_11i                  0x0050
    #define     B16BOOT_SEC_ADR_ARY_array_11i                  0x0050
    #define   LSb32BOOT_SEC_ADR_ARY_array_11i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_11i                     0
    #define       bBOOT_SEC_ADR_ARY_array_11i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_11i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY12                          0x0054

    #define     BA_BOOT_SEC_ADR_ARY_array_12i                  0x0054
    #define     B16BOOT_SEC_ADR_ARY_array_12i                  0x0054
    #define   LSb32BOOT_SEC_ADR_ARY_array_12i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_12i                     0
    #define       bBOOT_SEC_ADR_ARY_array_12i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_12i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY13                          0x0058

    #define     BA_BOOT_SEC_ADR_ARY_array_13i                  0x0058
    #define     B16BOOT_SEC_ADR_ARY_array_13i                  0x0058
    #define   LSb32BOOT_SEC_ADR_ARY_array_13i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_13i                     0
    #define       bBOOT_SEC_ADR_ARY_array_13i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_13i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY14                          0x005C

    #define     BA_BOOT_SEC_ADR_ARY_array_14i                  0x005C
    #define     B16BOOT_SEC_ADR_ARY_array_14i                  0x005C
    #define   LSb32BOOT_SEC_ADR_ARY_array_14i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_14i                     0
    #define       bBOOT_SEC_ADR_ARY_array_14i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_14i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY15                          0x0060

    #define     BA_BOOT_SEC_ADR_ARY_array_15i                  0x0060
    #define     B16BOOT_SEC_ADR_ARY_array_15i                  0x0060
    #define   LSb32BOOT_SEC_ADR_ARY_array_15i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_15i                     0
    #define       bBOOT_SEC_ADR_ARY_array_15i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_15i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY16                          0x0064

    #define     BA_BOOT_SEC_ADR_ARY_array_16i                  0x0064
    #define     B16BOOT_SEC_ADR_ARY_array_16i                  0x0064
    #define   LSb32BOOT_SEC_ADR_ARY_array_16i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_16i                     0
    #define       bBOOT_SEC_ADR_ARY_array_16i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_16i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY17                          0x0068

    #define     BA_BOOT_SEC_ADR_ARY_array_17i                  0x0068
    #define     B16BOOT_SEC_ADR_ARY_array_17i                  0x0068
    #define   LSb32BOOT_SEC_ADR_ARY_array_17i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_17i                     0
    #define       bBOOT_SEC_ADR_ARY_array_17i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_17i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY18                          0x006C

    #define     BA_BOOT_SEC_ADR_ARY_array_18i                  0x006C
    #define     B16BOOT_SEC_ADR_ARY_array_18i                  0x006C
    #define   LSb32BOOT_SEC_ADR_ARY_array_18i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_18i                     0
    #define       bBOOT_SEC_ADR_ARY_array_18i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_18i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY19                          0x0070

    #define     BA_BOOT_SEC_ADR_ARY_array_19i                  0x0070
    #define     B16BOOT_SEC_ADR_ARY_array_19i                  0x0070
    #define   LSb32BOOT_SEC_ADR_ARY_array_19i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_19i                     0
    #define       bBOOT_SEC_ADR_ARY_array_19i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_19i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY20                          0x0074

    #define     BA_BOOT_SEC_ADR_ARY_array_20i                  0x0074
    #define     B16BOOT_SEC_ADR_ARY_array_20i                  0x0074
    #define   LSb32BOOT_SEC_ADR_ARY_array_20i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_20i                     0
    #define       bBOOT_SEC_ADR_ARY_array_20i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_20i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY21                          0x0078

    #define     BA_BOOT_SEC_ADR_ARY_array_21i                  0x0078
    #define     B16BOOT_SEC_ADR_ARY_array_21i                  0x0078
    #define   LSb32BOOT_SEC_ADR_ARY_array_21i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_21i                     0
    #define       bBOOT_SEC_ADR_ARY_array_21i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_21i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY22                          0x007C

    #define     BA_BOOT_SEC_ADR_ARY_array_22i                  0x007C
    #define     B16BOOT_SEC_ADR_ARY_array_22i                  0x007C
    #define   LSb32BOOT_SEC_ADR_ARY_array_22i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_22i                     0
    #define       bBOOT_SEC_ADR_ARY_array_22i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_22i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY23                          0x0080

    #define     BA_BOOT_SEC_ADR_ARY_array_23i                  0x0080
    #define     B16BOOT_SEC_ADR_ARY_array_23i                  0x0080
    #define   LSb32BOOT_SEC_ADR_ARY_array_23i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_23i                     0
    #define       bBOOT_SEC_ADR_ARY_array_23i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_23i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY24                          0x0084

    #define     BA_BOOT_SEC_ADR_ARY_array_24i                  0x0084
    #define     B16BOOT_SEC_ADR_ARY_array_24i                  0x0084
    #define   LSb32BOOT_SEC_ADR_ARY_array_24i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_24i                     0
    #define       bBOOT_SEC_ADR_ARY_array_24i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_24i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY25                          0x0088

    #define     BA_BOOT_SEC_ADR_ARY_array_25i                  0x0088
    #define     B16BOOT_SEC_ADR_ARY_array_25i                  0x0088
    #define   LSb32BOOT_SEC_ADR_ARY_array_25i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_25i                     0
    #define       bBOOT_SEC_ADR_ARY_array_25i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_25i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY26                          0x008C

    #define     BA_BOOT_SEC_ADR_ARY_array_26i                  0x008C
    #define     B16BOOT_SEC_ADR_ARY_array_26i                  0x008C
    #define   LSb32BOOT_SEC_ADR_ARY_array_26i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_26i                     0
    #define       bBOOT_SEC_ADR_ARY_array_26i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_26i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY27                          0x0090

    #define     BA_BOOT_SEC_ADR_ARY_array_27i                  0x0090
    #define     B16BOOT_SEC_ADR_ARY_array_27i                  0x0090
    #define   LSb32BOOT_SEC_ADR_ARY_array_27i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_27i                     0
    #define       bBOOT_SEC_ADR_ARY_array_27i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_27i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY28                          0x0094

    #define     BA_BOOT_SEC_ADR_ARY_array_28i                  0x0094
    #define     B16BOOT_SEC_ADR_ARY_array_28i                  0x0094
    #define   LSb32BOOT_SEC_ADR_ARY_array_28i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_28i                     0
    #define       bBOOT_SEC_ADR_ARY_array_28i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_28i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY29                          0x0098

    #define     BA_BOOT_SEC_ADR_ARY_array_29i                  0x0098
    #define     B16BOOT_SEC_ADR_ARY_array_29i                  0x0098
    #define   LSb32BOOT_SEC_ADR_ARY_array_29i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_29i                     0
    #define       bBOOT_SEC_ADR_ARY_array_29i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_29i                     0xFFFFFFFF

    #define     RA_BOOT_SEC_ADR_ARY30                          0x009C

    #define     BA_BOOT_SEC_ADR_ARY_array_30i                  0x009C
    #define     B16BOOT_SEC_ADR_ARY_array_30i                  0x009C
    #define   LSb32BOOT_SEC_ADR_ARY_array_30i                     0
    #define   LSb16BOOT_SEC_ADR_ARY_array_30i                     0
    #define       bBOOT_SEC_ADR_ARY_array_30i                  32
    #define   MSK32BOOT_SEC_ADR_ARY_array_30i                     0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BOOT_SEC {
    ///////////////////////////////////////////////////////////
    #define   GET32BOOT_SEC_BOOT_VEC_word(r32)                 _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_BOOT_VEC_word(r32,v)               _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_BOOT_VEC                           {\
            UNSG32 uBOOT_VEC_word                              : 32;\
          }
    union { UNSG32 u32BOOT_SEC_BOOT_VEC;
            struct w32BOOT_SEC_BOOT_VEC;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BOOT_SEC_BOOT_ARY_array_0i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_BOOT_ARY_array_0i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_BOOT_ARY                           {\
            UNSG32 uBOOT_ARY_array_0i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_BOOT_ARY;
            struct w32BOOT_SEC_BOOT_ARY;
          };
    #define   GET32BOOT_SEC_BOOT_ARY_array_1i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_BOOT_ARY_array_1i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_BOOT_ARY1                          {\
            UNSG32 uBOOT_ARY_array_1i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_BOOT_ARY1;
            struct w32BOOT_SEC_BOOT_ARY1;
          };
    #define   GET32BOOT_SEC_BOOT_ARY_array_2i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_BOOT_ARY_array_2i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_BOOT_ARY2                          {\
            UNSG32 uBOOT_ARY_array_2i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_BOOT_ARY2;
            struct w32BOOT_SEC_BOOT_ARY2;
          };
    #define   GET32BOOT_SEC_BOOT_ARY_array_3i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_BOOT_ARY_array_3i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_BOOT_ARY3                          {\
            UNSG32 uBOOT_ARY_array_3i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_BOOT_ARY3;
            struct w32BOOT_SEC_BOOT_ARY3;
          };
    #define   GET32BOOT_SEC_BOOT_ARY_array_4i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_BOOT_ARY_array_4i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_BOOT_ARY4                          {\
            UNSG32 uBOOT_ARY_array_4i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_BOOT_ARY4;
            struct w32BOOT_SEC_BOOT_ARY4;
          };
    #define   GET32BOOT_SEC_BOOT_ARY_array_5i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_BOOT_ARY_array_5i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_BOOT_ARY5                          {\
            UNSG32 uBOOT_ARY_array_5i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_BOOT_ARY5;
            struct w32BOOT_SEC_BOOT_ARY5;
          };
    #define   GET32BOOT_SEC_BOOT_ARY_array_6i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_BOOT_ARY_array_6i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_BOOT_ARY6                          {\
            UNSG32 uBOOT_ARY_array_6i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_BOOT_ARY6;
            struct w32BOOT_SEC_BOOT_ARY6;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BOOT_SEC_ADR_0_word(r32)                    _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_0_word(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_0                              {\
            UNSG32 uADR_0_word                                 : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_0;
            struct w32BOOT_SEC_ADR_0;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BOOT_SEC_ADR_ARY_array_0i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_0i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY                            {\
            UNSG32 uADR_ARY_array_0i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY;
            struct w32BOOT_SEC_ADR_ARY;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_1i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_1i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY1                           {\
            UNSG32 uADR_ARY_array_1i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY1;
            struct w32BOOT_SEC_ADR_ARY1;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_2i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_2i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY2                           {\
            UNSG32 uADR_ARY_array_2i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY2;
            struct w32BOOT_SEC_ADR_ARY2;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_3i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_3i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY3                           {\
            UNSG32 uADR_ARY_array_3i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY3;
            struct w32BOOT_SEC_ADR_ARY3;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_4i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_4i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY4                           {\
            UNSG32 uADR_ARY_array_4i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY4;
            struct w32BOOT_SEC_ADR_ARY4;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_5i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_5i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY5                           {\
            UNSG32 uADR_ARY_array_5i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY5;
            struct w32BOOT_SEC_ADR_ARY5;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_6i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_6i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY6                           {\
            UNSG32 uADR_ARY_array_6i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY6;
            struct w32BOOT_SEC_ADR_ARY6;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_7i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_7i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY7                           {\
            UNSG32 uADR_ARY_array_7i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY7;
            struct w32BOOT_SEC_ADR_ARY7;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_8i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_8i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY8                           {\
            UNSG32 uADR_ARY_array_8i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY8;
            struct w32BOOT_SEC_ADR_ARY8;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_9i(r32)              _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_9i(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY9                           {\
            UNSG32 uADR_ARY_array_9i                           : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY9;
            struct w32BOOT_SEC_ADR_ARY9;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_10i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_10i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY10                          {\
            UNSG32 uADR_ARY_array_10i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY10;
            struct w32BOOT_SEC_ADR_ARY10;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_11i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_11i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY11                          {\
            UNSG32 uADR_ARY_array_11i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY11;
            struct w32BOOT_SEC_ADR_ARY11;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_12i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_12i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY12                          {\
            UNSG32 uADR_ARY_array_12i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY12;
            struct w32BOOT_SEC_ADR_ARY12;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_13i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_13i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY13                          {\
            UNSG32 uADR_ARY_array_13i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY13;
            struct w32BOOT_SEC_ADR_ARY13;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_14i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_14i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY14                          {\
            UNSG32 uADR_ARY_array_14i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY14;
            struct w32BOOT_SEC_ADR_ARY14;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_15i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_15i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY15                          {\
            UNSG32 uADR_ARY_array_15i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY15;
            struct w32BOOT_SEC_ADR_ARY15;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_16i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_16i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY16                          {\
            UNSG32 uADR_ARY_array_16i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY16;
            struct w32BOOT_SEC_ADR_ARY16;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_17i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_17i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY17                          {\
            UNSG32 uADR_ARY_array_17i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY17;
            struct w32BOOT_SEC_ADR_ARY17;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_18i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_18i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY18                          {\
            UNSG32 uADR_ARY_array_18i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY18;
            struct w32BOOT_SEC_ADR_ARY18;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_19i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_19i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY19                          {\
            UNSG32 uADR_ARY_array_19i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY19;
            struct w32BOOT_SEC_ADR_ARY19;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_20i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_20i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY20                          {\
            UNSG32 uADR_ARY_array_20i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY20;
            struct w32BOOT_SEC_ADR_ARY20;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_21i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_21i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY21                          {\
            UNSG32 uADR_ARY_array_21i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY21;
            struct w32BOOT_SEC_ADR_ARY21;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_22i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_22i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY22                          {\
            UNSG32 uADR_ARY_array_22i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY22;
            struct w32BOOT_SEC_ADR_ARY22;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_23i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_23i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY23                          {\
            UNSG32 uADR_ARY_array_23i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY23;
            struct w32BOOT_SEC_ADR_ARY23;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_24i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_24i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY24                          {\
            UNSG32 uADR_ARY_array_24i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY24;
            struct w32BOOT_SEC_ADR_ARY24;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_25i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_25i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY25                          {\
            UNSG32 uADR_ARY_array_25i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY25;
            struct w32BOOT_SEC_ADR_ARY25;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_26i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_26i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY26                          {\
            UNSG32 uADR_ARY_array_26i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY26;
            struct w32BOOT_SEC_ADR_ARY26;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_27i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_27i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY27                          {\
            UNSG32 uADR_ARY_array_27i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY27;
            struct w32BOOT_SEC_ADR_ARY27;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_28i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_28i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY28                          {\
            UNSG32 uADR_ARY_array_28i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY28;
            struct w32BOOT_SEC_ADR_ARY28;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_29i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_29i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY29                          {\
            UNSG32 uADR_ARY_array_29i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY29;
            struct w32BOOT_SEC_ADR_ARY29;
          };
    #define   GET32BOOT_SEC_ADR_ARY_array_30i(r32)             _BFGET_(r32,31, 0)
    #define   SET32BOOT_SEC_ADR_ARY_array_30i(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32BOOT_SEC_ADR_ARY30                          {\
            UNSG32 uADR_ARY_array_30i                          : 32;\
          }
    union { UNSG32 u32BOOT_SEC_ADR_ARY30;
            struct w32BOOT_SEC_ADR_ARY30;
          };
    ///////////////////////////////////////////////////////////
    } SIE_BOOT_SEC;

    typedef union  T32BOOT_SEC_BOOT_VEC
          { UNSG32 u32;
            struct w32BOOT_SEC_BOOT_VEC;
                 } T32BOOT_SEC_BOOT_VEC;
    typedef union  T32BOOT_SEC_BOOT_ARY
          { UNSG32 u32;
            struct w32BOOT_SEC_BOOT_ARY;
                 } T32BOOT_SEC_BOOT_ARY;
    typedef union  T32BOOT_SEC_BOOT_ARY1
          { UNSG32 u32;
            struct w32BOOT_SEC_BOOT_ARY1;
                 } T32BOOT_SEC_BOOT_ARY1;
    typedef union  T32BOOT_SEC_BOOT_ARY2
          { UNSG32 u32;
            struct w32BOOT_SEC_BOOT_ARY2;
                 } T32BOOT_SEC_BOOT_ARY2;
    typedef union  T32BOOT_SEC_BOOT_ARY3
          { UNSG32 u32;
            struct w32BOOT_SEC_BOOT_ARY3;
                 } T32BOOT_SEC_BOOT_ARY3;
    typedef union  T32BOOT_SEC_BOOT_ARY4
          { UNSG32 u32;
            struct w32BOOT_SEC_BOOT_ARY4;
                 } T32BOOT_SEC_BOOT_ARY4;
    typedef union  T32BOOT_SEC_BOOT_ARY5
          { UNSG32 u32;
            struct w32BOOT_SEC_BOOT_ARY5;
                 } T32BOOT_SEC_BOOT_ARY5;
    typedef union  T32BOOT_SEC_BOOT_ARY6
          { UNSG32 u32;
            struct w32BOOT_SEC_BOOT_ARY6;
                 } T32BOOT_SEC_BOOT_ARY6;
    typedef union  T32BOOT_SEC_ADR_0
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_0;
                 } T32BOOT_SEC_ADR_0;
    typedef union  T32BOOT_SEC_ADR_ARY
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY;
                 } T32BOOT_SEC_ADR_ARY;
    typedef union  T32BOOT_SEC_ADR_ARY1
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY1;
                 } T32BOOT_SEC_ADR_ARY1;
    typedef union  T32BOOT_SEC_ADR_ARY2
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY2;
                 } T32BOOT_SEC_ADR_ARY2;
    typedef union  T32BOOT_SEC_ADR_ARY3
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY3;
                 } T32BOOT_SEC_ADR_ARY3;
    typedef union  T32BOOT_SEC_ADR_ARY4
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY4;
                 } T32BOOT_SEC_ADR_ARY4;
    typedef union  T32BOOT_SEC_ADR_ARY5
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY5;
                 } T32BOOT_SEC_ADR_ARY5;
    typedef union  T32BOOT_SEC_ADR_ARY6
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY6;
                 } T32BOOT_SEC_ADR_ARY6;
    typedef union  T32BOOT_SEC_ADR_ARY7
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY7;
                 } T32BOOT_SEC_ADR_ARY7;
    typedef union  T32BOOT_SEC_ADR_ARY8
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY8;
                 } T32BOOT_SEC_ADR_ARY8;
    typedef union  T32BOOT_SEC_ADR_ARY9
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY9;
                 } T32BOOT_SEC_ADR_ARY9;
    typedef union  T32BOOT_SEC_ADR_ARY10
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY10;
                 } T32BOOT_SEC_ADR_ARY10;
    typedef union  T32BOOT_SEC_ADR_ARY11
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY11;
                 } T32BOOT_SEC_ADR_ARY11;
    typedef union  T32BOOT_SEC_ADR_ARY12
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY12;
                 } T32BOOT_SEC_ADR_ARY12;
    typedef union  T32BOOT_SEC_ADR_ARY13
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY13;
                 } T32BOOT_SEC_ADR_ARY13;
    typedef union  T32BOOT_SEC_ADR_ARY14
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY14;
                 } T32BOOT_SEC_ADR_ARY14;
    typedef union  T32BOOT_SEC_ADR_ARY15
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY15;
                 } T32BOOT_SEC_ADR_ARY15;
    typedef union  T32BOOT_SEC_ADR_ARY16
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY16;
                 } T32BOOT_SEC_ADR_ARY16;
    typedef union  T32BOOT_SEC_ADR_ARY17
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY17;
                 } T32BOOT_SEC_ADR_ARY17;
    typedef union  T32BOOT_SEC_ADR_ARY18
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY18;
                 } T32BOOT_SEC_ADR_ARY18;
    typedef union  T32BOOT_SEC_ADR_ARY19
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY19;
                 } T32BOOT_SEC_ADR_ARY19;
    typedef union  T32BOOT_SEC_ADR_ARY20
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY20;
                 } T32BOOT_SEC_ADR_ARY20;
    typedef union  T32BOOT_SEC_ADR_ARY21
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY21;
                 } T32BOOT_SEC_ADR_ARY21;
    typedef union  T32BOOT_SEC_ADR_ARY22
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY22;
                 } T32BOOT_SEC_ADR_ARY22;
    typedef union  T32BOOT_SEC_ADR_ARY23
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY23;
                 } T32BOOT_SEC_ADR_ARY23;
    typedef union  T32BOOT_SEC_ADR_ARY24
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY24;
                 } T32BOOT_SEC_ADR_ARY24;
    typedef union  T32BOOT_SEC_ADR_ARY25
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY25;
                 } T32BOOT_SEC_ADR_ARY25;
    typedef union  T32BOOT_SEC_ADR_ARY26
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY26;
                 } T32BOOT_SEC_ADR_ARY26;
    typedef union  T32BOOT_SEC_ADR_ARY27
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY27;
                 } T32BOOT_SEC_ADR_ARY27;
    typedef union  T32BOOT_SEC_ADR_ARY28
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY28;
                 } T32BOOT_SEC_ADR_ARY28;
    typedef union  T32BOOT_SEC_ADR_ARY29
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY29;
                 } T32BOOT_SEC_ADR_ARY29;
    typedef union  T32BOOT_SEC_ADR_ARY30
          { UNSG32 u32;
            struct w32BOOT_SEC_ADR_ARY30;
                 } T32BOOT_SEC_ADR_ARY30;
    ///////////////////////////////////////////////////////////

    typedef union  TBOOT_SEC_BOOT_VEC
          { UNSG32 u32[1];
            struct {
            struct w32BOOT_SEC_BOOT_VEC;
                   };
                 } TBOOT_SEC_BOOT_VEC;
    typedef union  TBOOT_SEC_BOOT_ARY
          { UNSG32 u32[7];
            struct {
            struct w32BOOT_SEC_BOOT_ARY;
            struct w32BOOT_SEC_BOOT_ARY1;
            struct w32BOOT_SEC_BOOT_ARY2;
            struct w32BOOT_SEC_BOOT_ARY3;
            struct w32BOOT_SEC_BOOT_ARY4;
            struct w32BOOT_SEC_BOOT_ARY5;
            struct w32BOOT_SEC_BOOT_ARY6;
                   };
                 } TBOOT_SEC_BOOT_ARY;
    typedef union  TBOOT_SEC_ADR_0
          { UNSG32 u32[1];
            struct {
            struct w32BOOT_SEC_ADR_0;
                   };
                 } TBOOT_SEC_ADR_0;
    typedef union  TBOOT_SEC_ADR_ARY
          { UNSG32 u32[31];
            struct {
            struct w32BOOT_SEC_ADR_ARY;
            struct w32BOOT_SEC_ADR_ARY1;
            struct w32BOOT_SEC_ADR_ARY2;
            struct w32BOOT_SEC_ADR_ARY3;
            struct w32BOOT_SEC_ADR_ARY4;
            struct w32BOOT_SEC_ADR_ARY5;
            struct w32BOOT_SEC_ADR_ARY6;
            struct w32BOOT_SEC_ADR_ARY7;
            struct w32BOOT_SEC_ADR_ARY8;
            struct w32BOOT_SEC_ADR_ARY9;
            struct w32BOOT_SEC_ADR_ARY10;
            struct w32BOOT_SEC_ADR_ARY11;
            struct w32BOOT_SEC_ADR_ARY12;
            struct w32BOOT_SEC_ADR_ARY13;
            struct w32BOOT_SEC_ADR_ARY14;
            struct w32BOOT_SEC_ADR_ARY15;
            struct w32BOOT_SEC_ADR_ARY16;
            struct w32BOOT_SEC_ADR_ARY17;
            struct w32BOOT_SEC_ADR_ARY18;
            struct w32BOOT_SEC_ADR_ARY19;
            struct w32BOOT_SEC_ADR_ARY20;
            struct w32BOOT_SEC_ADR_ARY21;
            struct w32BOOT_SEC_ADR_ARY22;
            struct w32BOOT_SEC_ADR_ARY23;
            struct w32BOOT_SEC_ADR_ARY24;
            struct w32BOOT_SEC_ADR_ARY25;
            struct w32BOOT_SEC_ADR_ARY26;
            struct w32BOOT_SEC_ADR_ARY27;
            struct w32BOOT_SEC_ADR_ARY28;
            struct w32BOOT_SEC_ADR_ARY29;
            struct w32BOOT_SEC_ADR_ARY30;
                   };
                 } TBOOT_SEC_ADR_ARY;

    ///////////////////////////////////////////////////////////
     SIGN32 BOOT_SEC_drvrd(SIE_BOOT_SEC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BOOT_SEC_drvwr(SIE_BOOT_SEC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BOOT_SEC_reset(SIE_BOOT_SEC *p);
     SIGN32 BOOT_SEC_cmp  (SIE_BOOT_SEC *p, SIE_BOOT_SEC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BOOT_SEC_check(p,pie,pfx,hLOG) BOOT_SEC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BOOT_SEC_print(p,    pfx,hLOG) BOOT_SEC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BOOT_SEC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE array                                    (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (W-)
///     #         # Stuffing bytes...
///               %% 262112
///     @ 0x07FFC Last                 (P)
///               %unsigned 32 entry                     
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   32768B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_array
#define h_array (){}

    #define     RA_array_Last                                  0x7FFC

    #define     BA_array_Last_entry                            0x7FFC
    #define     B16array_Last_entry                            0x7FFC
    #define   LSb32array_Last_entry                               0
    #define   LSb16array_Last_entry                               0
    #define       barray_Last_entry                            32
    #define   MSK32array_Last_entry                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_array {
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx0                                      [32764];
    ///////////////////////////////////////////////////////////
    #define   GET32array_Last_entry(r32)                       _BFGET_(r32,31, 0)
    #define   SET32array_Last_entry(r32,v)                     _BFSET_(r32,31, 0,v)

    #define     w32array_Last                                  {\
            UNSG32 uLast_entry                                 : 32;\
          }
    union { UNSG32 u32array_Last;
            struct w32array_Last;
          };
    ///////////////////////////////////////////////////////////
    } SIE_array;

    typedef union  T32array_Last
          { UNSG32 u32;
            struct w32array_Last;
                 } T32array_Last;
    ///////////////////////////////////////////////////////////

    typedef union  Tarray_Last
          { UNSG32 u32[1];
            struct {
            struct w32array_Last;
                   };
                 } Tarray_Last;

    ///////////////////////////////////////////////////////////
     SIGN32 array_drvrd(SIE_array *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 array_drvwr(SIE_array *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void array_reset(SIE_array *p);
     SIGN32 array_cmp  (SIE_array *p, SIE_array *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define array_check(p,pie,pfx,hLOG) array_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define array_print(p,    pfx,hLOG) array_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: array
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ROM                     biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 ROM_ARY              (P)
///     # 0x00000 words                
///               $array               words             MEM          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   32768B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ROM
#define h_ROM (){}

    #define     RA_ROM_ROM_ARY                                 0x0000
    #define     RA_ROM_words                                   0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ROM {
    ///////////////////////////////////////////////////////////
              SIE_array                                        ie_words;
    ///////////////////////////////////////////////////////////
    } SIE_ROM;

    ///////////////////////////////////////////////////////////
     SIGN32 ROM_drvrd(SIE_ROM *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ROM_drvwr(SIE_ROM *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ROM_reset(SIE_ROM *p);
     SIGN32 ROM_cmp  (SIE_ROM *p, SIE_ROM *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ROM_check(p,pie,pfx,hLOG) ROM_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ROM_print(p,    pfx,hLOG) ROM_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ROM
////////////////////////////////////////////////////////////



#ifdef __cplusplus
  }
#endif
#pragma  pack()

#endif
//////
/// ENDOFFILE: rom.h
////////////////////////////////////////////////////////////

