1 /**
2  * \file
3  *
4  * \brief Component description for PICOP
5  *
6  * Copyright (c) 2015 Atmel Corporation. All rights reserved.
7  *
8  * \asf_license_start
9  *
10  * \page License
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions are met:
14  *
15  * 1. Redistributions of source code must retain the above copyright notice,
16  *    this list of conditions and the following disclaimer.
17  *
18  * 2. Redistributions in binary form must reproduce the above copyright notice,
19  *    this list of conditions and the following disclaimer in the documentation
20  *    and/or other materials provided with the distribution.
21  *
22  * 3. The name of Atmel may not be used to endorse or promote products derived
23  *    from this software without specific prior written permission.
24  *
25  * 4. This software may only be redistributed and used in connection with an
26  *    Atmel microcontroller product.
27  *
28  * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
29  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
30  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
31  * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
32  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
37  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38  * POSSIBILITY OF SUCH DAMAGE.
39  *
40  * \asf_license_stop
41  *
42  */
43 
44 #ifndef _SAME54_PICOP_COMPONENT_
45 #define _SAME54_PICOP_COMPONENT_
46 
47 /* ========================================================================== */
48 /**  SOFTWARE API DEFINITION FOR PICOP */
49 /* ========================================================================== */
50 /** \addtogroup SAME54_PICOP PicoProcessor */
51 /*@{*/
52 
53 #define PICOP_U2232
54 #define REV_PICOP                   0x200
55 
56 /* -------- PICOP_ID : (PICOP Offset: 0x000) (R/W 32) ID n -------- */
57 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
58 typedef union {
59   struct {
60     uint32_t ID:32;            /*!< bit:  0..31  ID String 0                        */
61   } bit;                       /*!< Structure used for bit  access                  */
62   uint32_t reg;                /*!< Type      used for register access              */
63 } PICOP_ID_Type;
64 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
65 
66 #define PICOP_ID_OFFSET             0x000        /**< \brief (PICOP_ID offset) ID n */
67 #define PICOP_ID_RESETVALUE         0x00000000ul /**< \brief (PICOP_ID reset_value) ID n */
68 
69 #define PICOP_ID_ID_Pos             0            /**< \brief (PICOP_ID) ID String 0 */
70 #define PICOP_ID_ID_Msk             (0xFFFFFFFFul << PICOP_ID_ID_Pos)
71 #define PICOP_ID_ID(value)          (PICOP_ID_ID_Msk & ((value) << PICOP_ID_ID_Pos))
72 #define PICOP_ID_MASK               0xFFFFFFFFul /**< \brief (PICOP_ID) MASK Register */
73 
74 /* -------- PICOP_CONFIG : (PICOP Offset: 0x020) (R/W 32) Configuration -------- */
75 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
76 typedef union {
77   struct {
78     uint32_t ISA:2;            /*!< bit:  0.. 1  Instruction Set Architecture       */
79     uint32_t ASP:1;            /*!< bit:      2  Aligned Stack Pointer              */
80     uint32_t MARRET:1;         /*!< bit:      3  Misaligned implicit long return register (GCC compatibility) */
81     uint32_t RRET:4;           /*!< bit:  4.. 7  Implicit return word register      */
82     uint32_t PCEXEN:1;         /*!< bit:      8  PC_EX register enabled for reduced interrupt latency */
83     uint32_t :23;              /*!< bit:  9..31  Reserved                           */
84   } bit;                       /*!< Structure used for bit  access                  */
85   uint32_t reg;                /*!< Type      used for register access              */
86 } PICOP_CONFIG_Type;
87 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
88 
89 #define PICOP_CONFIG_OFFSET         0x020        /**< \brief (PICOP_CONFIG offset) Configuration */
90 #define PICOP_CONFIG_RESETVALUE     0x00000000ul /**< \brief (PICOP_CONFIG reset_value) Configuration */
91 
92 #define PICOP_CONFIG_ISA_Pos        0            /**< \brief (PICOP_CONFIG) Instruction Set Architecture */
93 #define PICOP_CONFIG_ISA_Msk        (0x3ul << PICOP_CONFIG_ISA_Pos)
94 #define PICOP_CONFIG_ISA(value)     (PICOP_CONFIG_ISA_Msk & ((value) << PICOP_CONFIG_ISA_Pos))
95 #define   PICOP_CONFIG_ISA_AVR8_Val       0x0ul  /**< \brief (PICOP_CONFIG) AVR8 ISA, AVR8SP=1 */
96 #define   PICOP_CONFIG_ISA_AVR16C_Val     0x1ul  /**< \brief (PICOP_CONFIG) AVR16 ISA fully compatible with AVR8 ISA, AVR8SP=1 */
97 #define   PICOP_CONFIG_ISA_AVR16E_Val     0x2ul  /**< \brief (PICOP_CONFIG) AVR16 ISA extended, AVR8SP=1 */
98 #define   PICOP_CONFIG_ISA_AVR16_Val      0x3ul  /**< \brief (PICOP_CONFIG) AVR16 ISA extended, AVR8SP=0 */
99 #define PICOP_CONFIG_ISA_AVR8       (PICOP_CONFIG_ISA_AVR8_Val     << PICOP_CONFIG_ISA_Pos)
100 #define PICOP_CONFIG_ISA_AVR16C     (PICOP_CONFIG_ISA_AVR16C_Val   << PICOP_CONFIG_ISA_Pos)
101 #define PICOP_CONFIG_ISA_AVR16E     (PICOP_CONFIG_ISA_AVR16E_Val   << PICOP_CONFIG_ISA_Pos)
102 #define PICOP_CONFIG_ISA_AVR16      (PICOP_CONFIG_ISA_AVR16_Val    << PICOP_CONFIG_ISA_Pos)
103 #define PICOP_CONFIG_ASP_Pos        2            /**< \brief (PICOP_CONFIG) Aligned Stack Pointer */
104 #define PICOP_CONFIG_ASP            (0x1ul << PICOP_CONFIG_ASP_Pos)
105 #define PICOP_CONFIG_MARRET_Pos     3            /**< \brief (PICOP_CONFIG) Misaligned implicit long return register (GCC compatibility) */
106 #define PICOP_CONFIG_MARRET         (0x1ul << PICOP_CONFIG_MARRET_Pos)
107 #define PICOP_CONFIG_RRET_Pos       4            /**< \brief (PICOP_CONFIG) Implicit return word register */
108 #define PICOP_CONFIG_RRET_Msk       (0xFul << PICOP_CONFIG_RRET_Pos)
109 #define PICOP_CONFIG_RRET(value)    (PICOP_CONFIG_RRET_Msk & ((value) << PICOP_CONFIG_RRET_Pos))
110 #define PICOP_CONFIG_PCEXEN_Pos     8            /**< \brief (PICOP_CONFIG) PC_EX register enabled for reduced interrupt latency */
111 #define PICOP_CONFIG_PCEXEN         (0x1ul << PICOP_CONFIG_PCEXEN_Pos)
112 #define PICOP_CONFIG_MASK           0x000001FFul /**< \brief (PICOP_CONFIG) MASK Register */
113 
114 /* -------- PICOP_CTRL : (PICOP Offset: 0x024) (R/W 32) Control -------- */
115 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
116 typedef union {
117   struct {
118     uint32_t MAPUEXCEPT:1;     /*!< bit:      0  Enable exception for illegal access */
119     uint32_t WPICACHE:1;       /*!< bit:      1  Write protect iCache               */
120     uint32_t WPVEC:2;          /*!< bit:  2.. 3  Write protect vectors              */
121     uint32_t WPCTX:2;          /*!< bit:  4.. 5  Write protect contexts             */
122     uint32_t WPCODE:4;         /*!< bit:  6.. 9  Write protect code                 */
123     uint32_t :22;              /*!< bit: 10..31  Reserved                           */
124   } bit;                       /*!< Structure used for bit  access                  */
125   uint32_t reg;                /*!< Type      used for register access              */
126 } PICOP_CTRL_Type;
127 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
128 
129 #define PICOP_CTRL_OFFSET           0x024        /**< \brief (PICOP_CTRL offset) Control */
130 #define PICOP_CTRL_RESETVALUE       0x00000000ul /**< \brief (PICOP_CTRL reset_value) Control */
131 
132 #define PICOP_CTRL_MAPUEXCEPT_Pos   0            /**< \brief (PICOP_CTRL) Enable exception for illegal access */
133 #define PICOP_CTRL_MAPUEXCEPT       (0x1ul << PICOP_CTRL_MAPUEXCEPT_Pos)
134 #define PICOP_CTRL_WPICACHE_Pos     1            /**< \brief (PICOP_CTRL) Write protect iCache */
135 #define PICOP_CTRL_WPICACHE         (0x1ul << PICOP_CTRL_WPICACHE_Pos)
136 #define PICOP_CTRL_WPVEC_Pos        2            /**< \brief (PICOP_CTRL) Write protect vectors */
137 #define PICOP_CTRL_WPVEC_Msk        (0x3ul << PICOP_CTRL_WPVEC_Pos)
138 #define PICOP_CTRL_WPVEC(value)     (PICOP_CTRL_WPVEC_Msk & ((value) << PICOP_CTRL_WPVEC_Pos))
139 #define   PICOP_CTRL_WPVEC_NONE_Val       0x0ul  /**< \brief (PICOP_CTRL)  */
140 #define   PICOP_CTRL_WPVEC_RSTNMI_Val     0x1ul  /**< \brief (PICOP_CTRL)  */
141 #define PICOP_CTRL_WPVEC_NONE       (PICOP_CTRL_WPVEC_NONE_Val     << PICOP_CTRL_WPVEC_Pos)
142 #define PICOP_CTRL_WPVEC_RSTNMI     (PICOP_CTRL_WPVEC_RSTNMI_Val   << PICOP_CTRL_WPVEC_Pos)
143 #define PICOP_CTRL_WPCTX_Pos        4            /**< \brief (PICOP_CTRL) Write protect contexts */
144 #define PICOP_CTRL_WPCTX_Msk        (0x3ul << PICOP_CTRL_WPCTX_Pos)
145 #define PICOP_CTRL_WPCTX(value)     (PICOP_CTRL_WPCTX_Msk & ((value) << PICOP_CTRL_WPCTX_Pos))
146 #define   PICOP_CTRL_WPCTX_NONE_Val       0x0ul  /**< \brief (PICOP_CTRL)  */
147 #define   PICOP_CTRL_WPCTX_CTX0_Val       0x1ul  /**< \brief (PICOP_CTRL)  */
148 #define   PICOP_CTRL_WPCTX_CTX01_Val      0x2ul  /**< \brief (PICOP_CTRL)  */
149 #define   PICOP_CTRL_WPCTX_CTX012_Val     0x3ul  /**< \brief (PICOP_CTRL)  */
150 #define PICOP_CTRL_WPCTX_NONE       (PICOP_CTRL_WPCTX_NONE_Val     << PICOP_CTRL_WPCTX_Pos)
151 #define PICOP_CTRL_WPCTX_CTX0       (PICOP_CTRL_WPCTX_CTX0_Val     << PICOP_CTRL_WPCTX_Pos)
152 #define PICOP_CTRL_WPCTX_CTX01      (PICOP_CTRL_WPCTX_CTX01_Val    << PICOP_CTRL_WPCTX_Pos)
153 #define PICOP_CTRL_WPCTX_CTX012     (PICOP_CTRL_WPCTX_CTX012_Val   << PICOP_CTRL_WPCTX_Pos)
154 #define PICOP_CTRL_WPCODE_Pos       6            /**< \brief (PICOP_CTRL) Write protect code */
155 #define PICOP_CTRL_WPCODE_Msk       (0xFul << PICOP_CTRL_WPCODE_Pos)
156 #define PICOP_CTRL_WPCODE(value)    (PICOP_CTRL_WPCODE_Msk & ((value) << PICOP_CTRL_WPCODE_Pos))
157 #define   PICOP_CTRL_WPCODE_NONE_Val      0x0ul  /**< \brief (PICOP_CTRL)  */
158 #define   PICOP_CTRL_WPCODE_256B_Val      0x1ul  /**< \brief (PICOP_CTRL)  */
159 #define   PICOP_CTRL_WPCODE_512B_Val      0x2ul  /**< \brief (PICOP_CTRL)  */
160 #define   PICOP_CTRL_WPCODE_768B_Val      0x3ul  /**< \brief (PICOP_CTRL)  */
161 #define   PICOP_CTRL_WPCODE_1024B_Val     0x4ul  /**< \brief (PICOP_CTRL)  */
162 #define   PICOP_CTRL_WPCODE_1280B_Val     0x5ul  /**< \brief (PICOP_CTRL)  */
163 #define   PICOP_CTRL_WPCODE_1536B_Val     0x6ul  /**< \brief (PICOP_CTRL)  */
164 #define   PICOP_CTRL_WPCODE_1792B_Val     0x7ul  /**< \brief (PICOP_CTRL)  */
165 #define   PICOP_CTRL_WPCODE_2048B_Val     0x8ul  /**< \brief (PICOP_CTRL)  */
166 #define   PICOP_CTRL_WPCODE_2304B_Val     0x9ul  /**< \brief (PICOP_CTRL)  */
167 #define   PICOP_CTRL_WPCODE_2560B_Val     0xAul  /**< \brief (PICOP_CTRL)  */
168 #define   PICOP_CTRL_WPCODE_2816B_Val     0xBul  /**< \brief (PICOP_CTRL)  */
169 #define   PICOP_CTRL_WPCODE_3072B_Val     0xCul  /**< \brief (PICOP_CTRL)  */
170 #define   PICOP_CTRL_WPCODE_3328B_Val     0xDul  /**< \brief (PICOP_CTRL)  */
171 #define   PICOP_CTRL_WPCODE_3584B_Val     0xEul  /**< \brief (PICOP_CTRL)  */
172 #define   PICOP_CTRL_WPCODE_3840B_Val     0xFul  /**< \brief (PICOP_CTRL)  */
173 #define PICOP_CTRL_WPCODE_NONE      (PICOP_CTRL_WPCODE_NONE_Val    << PICOP_CTRL_WPCODE_Pos)
174 #define PICOP_CTRL_WPCODE_256B      (PICOP_CTRL_WPCODE_256B_Val    << PICOP_CTRL_WPCODE_Pos)
175 #define PICOP_CTRL_WPCODE_512B      (PICOP_CTRL_WPCODE_512B_Val    << PICOP_CTRL_WPCODE_Pos)
176 #define PICOP_CTRL_WPCODE_768B      (PICOP_CTRL_WPCODE_768B_Val    << PICOP_CTRL_WPCODE_Pos)
177 #define PICOP_CTRL_WPCODE_1024B     (PICOP_CTRL_WPCODE_1024B_Val   << PICOP_CTRL_WPCODE_Pos)
178 #define PICOP_CTRL_WPCODE_1280B     (PICOP_CTRL_WPCODE_1280B_Val   << PICOP_CTRL_WPCODE_Pos)
179 #define PICOP_CTRL_WPCODE_1536B     (PICOP_CTRL_WPCODE_1536B_Val   << PICOP_CTRL_WPCODE_Pos)
180 #define PICOP_CTRL_WPCODE_1792B     (PICOP_CTRL_WPCODE_1792B_Val   << PICOP_CTRL_WPCODE_Pos)
181 #define PICOP_CTRL_WPCODE_2048B     (PICOP_CTRL_WPCODE_2048B_Val   << PICOP_CTRL_WPCODE_Pos)
182 #define PICOP_CTRL_WPCODE_2304B     (PICOP_CTRL_WPCODE_2304B_Val   << PICOP_CTRL_WPCODE_Pos)
183 #define PICOP_CTRL_WPCODE_2560B     (PICOP_CTRL_WPCODE_2560B_Val   << PICOP_CTRL_WPCODE_Pos)
184 #define PICOP_CTRL_WPCODE_2816B     (PICOP_CTRL_WPCODE_2816B_Val   << PICOP_CTRL_WPCODE_Pos)
185 #define PICOP_CTRL_WPCODE_3072B     (PICOP_CTRL_WPCODE_3072B_Val   << PICOP_CTRL_WPCODE_Pos)
186 #define PICOP_CTRL_WPCODE_3328B     (PICOP_CTRL_WPCODE_3328B_Val   << PICOP_CTRL_WPCODE_Pos)
187 #define PICOP_CTRL_WPCODE_3584B     (PICOP_CTRL_WPCODE_3584B_Val   << PICOP_CTRL_WPCODE_Pos)
188 #define PICOP_CTRL_WPCODE_3840B     (PICOP_CTRL_WPCODE_3840B_Val   << PICOP_CTRL_WPCODE_Pos)
189 #define PICOP_CTRL_MASK             0x000003FFul /**< \brief (PICOP_CTRL) MASK Register */
190 
191 /* -------- PICOP_CMD : (PICOP Offset: 0x028) (R/W 32) Command -------- */
192 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
193 typedef union {
194   struct { // CMD mode
195     uint32_t CMD:4;            /*!< bit:  0.. 3  Command                            */
196     uint32_t :12;              /*!< bit:  4..15  Reserved                           */
197     uint32_t UNLOCK:16;        /*!< bit: 16..31  Unlock                             */
198   } CMD;                       /*!< Structure used for CMD                          */
199   struct { // STATUS mode
200     uint32_t CTTSEX:1;         /*!< bit:      0  Context Task Switch                */
201     uint32_t IL0EX:1;          /*!< bit:      1  Interrupt Level 0 Exception        */
202     uint32_t IL1EX:1;          /*!< bit:      2  Interrupt Level 1 Exception        */
203     uint32_t IL2EX:1;          /*!< bit:      3  Interrupt Level 2 Exception        */
204     uint32_t IL3EX:1;          /*!< bit:      4  Interrupt Level 3 Exception        */
205     uint32_t IL4EX:1;          /*!< bit:      5  Interrupt Level 4 Exception        */
206     uint32_t NMIEX:1;          /*!< bit:      6  NMI Exception                      */
207     uint32_t :1;               /*!< bit:      7  Reserved                           */
208     uint32_t EXCEPT:1;         /*!< bit:      8  Exception                          */
209     uint32_t AVR16:1;          /*!< bit:      9  AVR16 Mode                         */
210     uint32_t OCDCOF:1;         /*!< bit:     10  OCD Change of Flow                 */
211     uint32_t :5;               /*!< bit: 11..15  Reserved                           */
212     uint32_t UPC:8;            /*!< bit: 16..23  Microcode State                    */
213     uint32_t :3;               /*!< bit: 24..26  Reserved                           */
214     uint32_t STATE:5;          /*!< bit: 27..31  System State                       */
215   } STATUS;                    /*!< Structure used for STATUS                       */
216   uint32_t reg;                /*!< Type      used for register access              */
217 } PICOP_CMD_Type;
218 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
219 
220 #define PICOP_CMD_OFFSET            0x028        /**< \brief (PICOP_CMD offset) Command */
221 #define PICOP_CMD_RESETVALUE        0x00000000ul /**< \brief (PICOP_CMD reset_value) Command */
222 
223 // CMD mode
224 #define PICOP_CMD_CMD_CMD_Pos       0            /**< \brief (PICOP_CMD_CMD) Command */
225 #define PICOP_CMD_CMD_CMD_Msk       (0xFul << PICOP_CMD_CMD_CMD_Pos)
226 #define PICOP_CMD_CMD_CMD(value)    (PICOP_CMD_CMD_CMD_Msk & ((value) << PICOP_CMD_CMD_CMD_Pos))
227 #define   PICOP_CMD_CMD_CMD_NOACTION_Val  0x0ul  /**< \brief (PICOP_CMD_CMD) No action */
228 #define   PICOP_CMD_CMD_CMD_STOP_Val      0x1ul  /**< \brief (PICOP_CMD_CMD) Wait for ongoing execution to complete, then stop */
229 #define   PICOP_CMD_CMD_CMD_RESET_Val     0x2ul  /**< \brief (PICOP_CMD_CMD) Stop, reset and stop */
230 #define   PICOP_CMD_CMD_CMD_RESTART_Val   0x3ul  /**< \brief (PICOP_CMD_CMD) Stop, reset and run */
231 #define   PICOP_CMD_CMD_CMD_ABORT_Val     0x4ul  /**< \brief (PICOP_CMD_CMD) Abort, reset and stop */
232 #define   PICOP_CMD_CMD_CMD_RUN_Val       0x5ul  /**< \brief (PICOP_CMD_CMD) Start execution (from unlocked stopped state) */
233 #define   PICOP_CMD_CMD_CMD_RUNLOCK_Val   0x6ul  /**< \brief (PICOP_CMD_CMD) Start execution and lock */
234 #define   PICOP_CMD_CMD_CMD_RUNOCD_Val    0x7ul  /**< \brief (PICOP_CMD_CMD) Start execution and enable host-controlled OCD */
235 #define   PICOP_CMD_CMD_CMD_UNLOCK_Val    0x8ul  /**< \brief (PICOP_CMD_CMD) Unlock and run */
236 #define   PICOP_CMD_CMD_CMD_NMI_Val       0x9ul  /**< \brief (PICOP_CMD_CMD) Trigger a NMI */
237 #define   PICOP_CMD_CMD_CMD_WAKEUP_Val    0xAul  /**< \brief (PICOP_CMD_CMD) Force a wakeup from sleep (if in sleep) */
238 #define PICOP_CMD_CMD_CMD_NOACTION  (PICOP_CMD_CMD_CMD_NOACTION_Val << PICOP_CMD_CMD_CMD_Pos)
239 #define PICOP_CMD_CMD_CMD_STOP      (PICOP_CMD_CMD_CMD_STOP_Val    << PICOP_CMD_CMD_CMD_Pos)
240 #define PICOP_CMD_CMD_CMD_RESET     (PICOP_CMD_CMD_CMD_RESET_Val   << PICOP_CMD_CMD_CMD_Pos)
241 #define PICOP_CMD_CMD_CMD_RESTART   (PICOP_CMD_CMD_CMD_RESTART_Val << PICOP_CMD_CMD_CMD_Pos)
242 #define PICOP_CMD_CMD_CMD_ABORT     (PICOP_CMD_CMD_CMD_ABORT_Val   << PICOP_CMD_CMD_CMD_Pos)
243 #define PICOP_CMD_CMD_CMD_RUN       (PICOP_CMD_CMD_CMD_RUN_Val     << PICOP_CMD_CMD_CMD_Pos)
244 #define PICOP_CMD_CMD_CMD_RUNLOCK   (PICOP_CMD_CMD_CMD_RUNLOCK_Val << PICOP_CMD_CMD_CMD_Pos)
245 #define PICOP_CMD_CMD_CMD_RUNOCD    (PICOP_CMD_CMD_CMD_RUNOCD_Val  << PICOP_CMD_CMD_CMD_Pos)
246 #define PICOP_CMD_CMD_CMD_UNLOCK    (PICOP_CMD_CMD_CMD_UNLOCK_Val  << PICOP_CMD_CMD_CMD_Pos)
247 #define PICOP_CMD_CMD_CMD_NMI       (PICOP_CMD_CMD_CMD_NMI_Val     << PICOP_CMD_CMD_CMD_Pos)
248 #define PICOP_CMD_CMD_CMD_WAKEUP    (PICOP_CMD_CMD_CMD_WAKEUP_Val  << PICOP_CMD_CMD_CMD_Pos)
249 #define PICOP_CMD_CMD_UNLOCK_Pos    16           /**< \brief (PICOP_CMD_CMD) Unlock */
250 #define PICOP_CMD_CMD_UNLOCK_Msk    (0xFFFFul << PICOP_CMD_CMD_UNLOCK_Pos)
251 #define PICOP_CMD_CMD_UNLOCK(value) (PICOP_CMD_CMD_UNLOCK_Msk & ((value) << PICOP_CMD_CMD_UNLOCK_Pos))
252 #define PICOP_CMD_CMD_MASK          0xFFFF000Ful /**< \brief (PICOP_CMD_CMD) MASK Register */
253 
254 // STATUS mode
255 #define PICOP_CMD_STATUS_CTTSEX_Pos 0            /**< \brief (PICOP_CMD_STATUS) Context Task Switch */
256 #define PICOP_CMD_STATUS_CTTSEX     (0x1ul << PICOP_CMD_STATUS_CTTSEX_Pos)
257 #define PICOP_CMD_STATUS_IL0EX_Pos  1            /**< \brief (PICOP_CMD_STATUS) Interrupt Level 0 Exception */
258 #define PICOP_CMD_STATUS_IL0EX      (0x1ul << PICOP_CMD_STATUS_IL0EX_Pos)
259 #define PICOP_CMD_STATUS_IL1EX_Pos  2            /**< \brief (PICOP_CMD_STATUS) Interrupt Level 1 Exception */
260 #define PICOP_CMD_STATUS_IL1EX      (0x1ul << PICOP_CMD_STATUS_IL1EX_Pos)
261 #define PICOP_CMD_STATUS_IL2EX_Pos  3            /**< \brief (PICOP_CMD_STATUS) Interrupt Level 2 Exception */
262 #define PICOP_CMD_STATUS_IL2EX      (0x1ul << PICOP_CMD_STATUS_IL2EX_Pos)
263 #define PICOP_CMD_STATUS_IL3EX_Pos  4            /**< \brief (PICOP_CMD_STATUS) Interrupt Level 3 Exception */
264 #define PICOP_CMD_STATUS_IL3EX      (0x1ul << PICOP_CMD_STATUS_IL3EX_Pos)
265 #define PICOP_CMD_STATUS_IL4EX_Pos  5            /**< \brief (PICOP_CMD_STATUS) Interrupt Level 4 Exception */
266 #define PICOP_CMD_STATUS_IL4EX      (0x1ul << PICOP_CMD_STATUS_IL4EX_Pos)
267 #define PICOP_CMD_STATUS_NMIEX_Pos  6            /**< \brief (PICOP_CMD_STATUS) NMI Exception */
268 #define PICOP_CMD_STATUS_NMIEX      (0x1ul << PICOP_CMD_STATUS_NMIEX_Pos)
269 #define PICOP_CMD_STATUS_EXCEPT_Pos 8            /**< \brief (PICOP_CMD_STATUS) Exception */
270 #define PICOP_CMD_STATUS_EXCEPT     (0x1ul << PICOP_CMD_STATUS_EXCEPT_Pos)
271 #define PICOP_CMD_STATUS_AVR16_Pos  9            /**< \brief (PICOP_CMD_STATUS) AVR16 Mode */
272 #define PICOP_CMD_STATUS_AVR16      (0x1ul << PICOP_CMD_STATUS_AVR16_Pos)
273 #define PICOP_CMD_STATUS_OCDCOF_Pos 10           /**< \brief (PICOP_CMD_STATUS) OCD Change of Flow */
274 #define PICOP_CMD_STATUS_OCDCOF     (0x1ul << PICOP_CMD_STATUS_OCDCOF_Pos)
275 #define PICOP_CMD_STATUS_UPC_Pos    16           /**< \brief (PICOP_CMD_STATUS) Microcode State */
276 #define PICOP_CMD_STATUS_UPC_Msk    (0xFFul << PICOP_CMD_STATUS_UPC_Pos)
277 #define PICOP_CMD_STATUS_UPC(value) (PICOP_CMD_STATUS_UPC_Msk & ((value) << PICOP_CMD_STATUS_UPC_Pos))
278 #define   PICOP_CMD_STATUS_UPC_EXEC_Val   0x0ul  /**< \brief (PICOP_CMD_STATUS) Normal execution (no ucode) */
279 #define   PICOP_CMD_STATUS_UPC_EXEC_NOBRK_Val 0x1ul  /**< \brief (PICOP_CMD_STATUS) Normal execution with break disabled */
280 #define   PICOP_CMD_STATUS_UPC_EXEC_NOP_Val 0x2ul  /**< \brief (PICOP_CMD_STATUS) OCD NOP override execution (break disabled) */
281 #define   PICOP_CMD_STATUS_UPC_EXEC_IMM_Val 0x3ul  /**< \brief (PICOP_CMD_STATUS) OCD IMM override execution (break disabled) */
282 #define   PICOP_CMD_STATUS_UPC_ICACHE_FLUSH_Val 0x4ul  /**< \brief (PICOP_CMD_STATUS) Flush instruction cache */
283 #define   PICOP_CMD_STATUS_UPC_HALT_Val   0x10ul  /**< \brief (PICOP_CMD_STATUS) HALT execution (shutdown) */
284 #define   PICOP_CMD_STATUS_UPC_HALTED_Val 0x11ul  /**< \brief (PICOP_CMD_STATUS) Execution halted (shutdown) */
285 #define   PICOP_CMD_STATUS_UPC_SLEEP_Val  0x17ul  /**< \brief (PICOP_CMD_STATUS) Wait until safe to go to sleeping state */
286 #define   PICOP_CMD_STATUS_UPC_SLEEPING_Val 0x18ul  /**< \brief (PICOP_CMD_STATUS) Sleeping / reset cycle 0 */
287 #define   PICOP_CMD_STATUS_UPC_WAKEUP_RST1_Val 0x19ul  /**< \brief (PICOP_CMD_STATUS) Reset cycle 1 */
288 #define   PICOP_CMD_STATUS_UPC_WAKEUP_CTR_SP_Val 0x1Aul  /**< \brief (PICOP_CMD_STATUS) SLEEP: Context Restore CCR..SP */
289 #define   PICOP_CMD_STATUS_UPC_WAKEUP_CTR_ZY_Val 0x1Bul  /**< \brief (PICOP_CMD_STATUS) SLEEP: Context Restore Z..Y */
290 #define   PICOP_CMD_STATUS_UPC_OCD_STATE_Val 0x20ul  /**< \brief (PICOP_CMD_STATUS) OCD state: No break (sr.upc[1:0] == 2'b00) */
291 #define   PICOP_CMD_STATUS_UPC_OCD_STATE_NOP_Val 0x21ul  /**< \brief (PICOP_CMD_STATUS) OCD state: NOP override (sr.upc[1:0] == 2'b01) */
292 #define   PICOP_CMD_STATUS_UPC_OCD_STATE_IMM_Val 0x22ul  /**< \brief (PICOP_CMD_STATUS) OCD state: IMM override (sr.upc[1:0] == 2'b10) */
293 #define   PICOP_CMD_STATUS_UPC_OCD_STATE_SLEEP_Val 0x23ul  /**< \brief (PICOP_CMD_STATUS) OCD state: SLEEP instruction (sr.upc[1:0] == 2'b11) */
294 #define   PICOP_CMD_STATUS_UPC_OCD_BREAKPOINT_Val 0x28ul  /**< \brief (PICOP_CMD_STATUS) Breakpoint (sr.upc[0] == 1'b0) */
295 #define   PICOP_CMD_STATUS_UPC_OCD_BREAKI_Val 0x29ul  /**< \brief (PICOP_CMD_STATUS) Breakpoint instruction (sr.upc[0] == 1'b1) */
296 #define   PICOP_CMD_STATUS_UPC_CANCEL_EX_Val 0x2Eul  /**< \brief (PICOP_CMD_STATUS) Cancel exception */
297 #define   PICOP_CMD_STATUS_UPC_IRQ_Val    0x2Ful  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save CCR..SP */
298 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_0_Val 0x30ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save R{m+0+1}.l */
299 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_1_Val 0x31ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save R{m+1+1}.l */
300 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_2_Val 0x32ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save R{m+2+1}.l */
301 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_3_Val 0x33ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save R{m+3+1}.l */
302 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_4_Val 0x34ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save R{m+4+1}.l */
303 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_5_Val 0x35ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save R{m+5+1}.l */
304 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_6_Val 0x36ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save R{m+6+1}.l */
305 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_7_Val 0x37ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save R{m+7+1}.l */
306 #define   PICOP_CMD_STATUS_UPC_IRQ_CTS_PC_Val 0x38ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Context Save (SR):PC */
307 #define   PICOP_CMD_STATUS_UPC_IRQ_ACK_Val 0x39ul  /**< \brief (PICOP_CMD_STATUS) IRQ: Acknowledge cycle */
308 #define   PICOP_CMD_STATUS_UPC_EXCEPT_Val 0x3Aul  /**< \brief (PICOP_CMD_STATUS) Internal exceptions */
309 #define   PICOP_CMD_STATUS_UPC_RETI_SLEEP_Val 0x3Ful  /**< \brief (PICOP_CMD_STATUS) RETI: Clear SLEEPMODE (RETI) */
310 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_R0_Val 0x40ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore  R3..R0 (RETIS) */
311 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_R4_Val 0x41ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore  R7..R4 */
312 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_R8_Val 0x42ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore R11..R8 */
313 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_R12_Val 0x43ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore R15..R12 */
314 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_R16_Val 0x44ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore R19..R16 */
315 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_R20_Val 0x45ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore R23..R20 */
316 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_R24_Val 0x46ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore R27..R24 */
317 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_R28_Val 0x47ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore R31..R28 */
318 #define   PICOP_CMD_STATUS_UPC_RETI_CTR_SP_Val 0x48ul  /**< \brief (PICOP_CMD_STATUS) RETI: Context Restore CCR..SP */
319 #define   PICOP_CMD_STATUS_UPC_RETI_EXEC_Val 0x49ul  /**< \brief (PICOP_CMD_STATUS) RETI: Return to code execution (PC <- LINK) */
320 #define PICOP_CMD_STATUS_UPC_EXEC   (PICOP_CMD_STATUS_UPC_EXEC_Val << PICOP_CMD_STATUS_UPC_Pos)
321 #define PICOP_CMD_STATUS_UPC_EXEC_NOBRK (PICOP_CMD_STATUS_UPC_EXEC_NOBRK_Val << PICOP_CMD_STATUS_UPC_Pos)
322 #define PICOP_CMD_STATUS_UPC_EXEC_NOP (PICOP_CMD_STATUS_UPC_EXEC_NOP_Val << PICOP_CMD_STATUS_UPC_Pos)
323 #define PICOP_CMD_STATUS_UPC_EXEC_IMM (PICOP_CMD_STATUS_UPC_EXEC_IMM_Val << PICOP_CMD_STATUS_UPC_Pos)
324 #define PICOP_CMD_STATUS_UPC_ICACHE_FLUSH (PICOP_CMD_STATUS_UPC_ICACHE_FLUSH_Val << PICOP_CMD_STATUS_UPC_Pos)
325 #define PICOP_CMD_STATUS_UPC_HALT   (PICOP_CMD_STATUS_UPC_HALT_Val << PICOP_CMD_STATUS_UPC_Pos)
326 #define PICOP_CMD_STATUS_UPC_HALTED (PICOP_CMD_STATUS_UPC_HALTED_Val << PICOP_CMD_STATUS_UPC_Pos)
327 #define PICOP_CMD_STATUS_UPC_SLEEP  (PICOP_CMD_STATUS_UPC_SLEEP_Val << PICOP_CMD_STATUS_UPC_Pos)
328 #define PICOP_CMD_STATUS_UPC_SLEEPING (PICOP_CMD_STATUS_UPC_SLEEPING_Val << PICOP_CMD_STATUS_UPC_Pos)
329 #define PICOP_CMD_STATUS_UPC_WAKEUP_RST1 (PICOP_CMD_STATUS_UPC_WAKEUP_RST1_Val << PICOP_CMD_STATUS_UPC_Pos)
330 #define PICOP_CMD_STATUS_UPC_WAKEUP_CTR_SP (PICOP_CMD_STATUS_UPC_WAKEUP_CTR_SP_Val << PICOP_CMD_STATUS_UPC_Pos)
331 #define PICOP_CMD_STATUS_UPC_WAKEUP_CTR_ZY (PICOP_CMD_STATUS_UPC_WAKEUP_CTR_ZY_Val << PICOP_CMD_STATUS_UPC_Pos)
332 #define PICOP_CMD_STATUS_UPC_OCD_STATE (PICOP_CMD_STATUS_UPC_OCD_STATE_Val << PICOP_CMD_STATUS_UPC_Pos)
333 #define PICOP_CMD_STATUS_UPC_OCD_STATE_NOP (PICOP_CMD_STATUS_UPC_OCD_STATE_NOP_Val << PICOP_CMD_STATUS_UPC_Pos)
334 #define PICOP_CMD_STATUS_UPC_OCD_STATE_IMM (PICOP_CMD_STATUS_UPC_OCD_STATE_IMM_Val << PICOP_CMD_STATUS_UPC_Pos)
335 #define PICOP_CMD_STATUS_UPC_OCD_STATE_SLEEP (PICOP_CMD_STATUS_UPC_OCD_STATE_SLEEP_Val << PICOP_CMD_STATUS_UPC_Pos)
336 #define PICOP_CMD_STATUS_UPC_OCD_BREAKPOINT (PICOP_CMD_STATUS_UPC_OCD_BREAKPOINT_Val << PICOP_CMD_STATUS_UPC_Pos)
337 #define PICOP_CMD_STATUS_UPC_OCD_BREAKI (PICOP_CMD_STATUS_UPC_OCD_BREAKI_Val << PICOP_CMD_STATUS_UPC_Pos)
338 #define PICOP_CMD_STATUS_UPC_CANCEL_EX (PICOP_CMD_STATUS_UPC_CANCEL_EX_Val << PICOP_CMD_STATUS_UPC_Pos)
339 #define PICOP_CMD_STATUS_UPC_IRQ    (PICOP_CMD_STATUS_UPC_IRQ_Val  << PICOP_CMD_STATUS_UPC_Pos)
340 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_0 (PICOP_CMD_STATUS_UPC_IRQ_CTS_0_Val << PICOP_CMD_STATUS_UPC_Pos)
341 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_1 (PICOP_CMD_STATUS_UPC_IRQ_CTS_1_Val << PICOP_CMD_STATUS_UPC_Pos)
342 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_2 (PICOP_CMD_STATUS_UPC_IRQ_CTS_2_Val << PICOP_CMD_STATUS_UPC_Pos)
343 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_3 (PICOP_CMD_STATUS_UPC_IRQ_CTS_3_Val << PICOP_CMD_STATUS_UPC_Pos)
344 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_4 (PICOP_CMD_STATUS_UPC_IRQ_CTS_4_Val << PICOP_CMD_STATUS_UPC_Pos)
345 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_5 (PICOP_CMD_STATUS_UPC_IRQ_CTS_5_Val << PICOP_CMD_STATUS_UPC_Pos)
346 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_6 (PICOP_CMD_STATUS_UPC_IRQ_CTS_6_Val << PICOP_CMD_STATUS_UPC_Pos)
347 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_7 (PICOP_CMD_STATUS_UPC_IRQ_CTS_7_Val << PICOP_CMD_STATUS_UPC_Pos)
348 #define PICOP_CMD_STATUS_UPC_IRQ_CTS_PC (PICOP_CMD_STATUS_UPC_IRQ_CTS_PC_Val << PICOP_CMD_STATUS_UPC_Pos)
349 #define PICOP_CMD_STATUS_UPC_IRQ_ACK (PICOP_CMD_STATUS_UPC_IRQ_ACK_Val << PICOP_CMD_STATUS_UPC_Pos)
350 #define PICOP_CMD_STATUS_UPC_EXCEPT (PICOP_CMD_STATUS_UPC_EXCEPT_Val << PICOP_CMD_STATUS_UPC_Pos)
351 #define PICOP_CMD_STATUS_UPC_RETI_SLEEP (PICOP_CMD_STATUS_UPC_RETI_SLEEP_Val << PICOP_CMD_STATUS_UPC_Pos)
352 #define PICOP_CMD_STATUS_UPC_RETI_CTR_R0 (PICOP_CMD_STATUS_UPC_RETI_CTR_R0_Val << PICOP_CMD_STATUS_UPC_Pos)
353 #define PICOP_CMD_STATUS_UPC_RETI_CTR_R4 (PICOP_CMD_STATUS_UPC_RETI_CTR_R4_Val << PICOP_CMD_STATUS_UPC_Pos)
354 #define PICOP_CMD_STATUS_UPC_RETI_CTR_R8 (PICOP_CMD_STATUS_UPC_RETI_CTR_R8_Val << PICOP_CMD_STATUS_UPC_Pos)
355 #define PICOP_CMD_STATUS_UPC_RETI_CTR_R12 (PICOP_CMD_STATUS_UPC_RETI_CTR_R12_Val << PICOP_CMD_STATUS_UPC_Pos)
356 #define PICOP_CMD_STATUS_UPC_RETI_CTR_R16 (PICOP_CMD_STATUS_UPC_RETI_CTR_R16_Val << PICOP_CMD_STATUS_UPC_Pos)
357 #define PICOP_CMD_STATUS_UPC_RETI_CTR_R20 (PICOP_CMD_STATUS_UPC_RETI_CTR_R20_Val << PICOP_CMD_STATUS_UPC_Pos)
358 #define PICOP_CMD_STATUS_UPC_RETI_CTR_R24 (PICOP_CMD_STATUS_UPC_RETI_CTR_R24_Val << PICOP_CMD_STATUS_UPC_Pos)
359 #define PICOP_CMD_STATUS_UPC_RETI_CTR_R28 (PICOP_CMD_STATUS_UPC_RETI_CTR_R28_Val << PICOP_CMD_STATUS_UPC_Pos)
360 #define PICOP_CMD_STATUS_UPC_RETI_CTR_SP (PICOP_CMD_STATUS_UPC_RETI_CTR_SP_Val << PICOP_CMD_STATUS_UPC_Pos)
361 #define PICOP_CMD_STATUS_UPC_RETI_EXEC (PICOP_CMD_STATUS_UPC_RETI_EXEC_Val << PICOP_CMD_STATUS_UPC_Pos)
362 #define PICOP_CMD_STATUS_STATE_Pos  27           /**< \brief (PICOP_CMD_STATUS) System State */
363 #define PICOP_CMD_STATUS_STATE_Msk  (0x1Ful << PICOP_CMD_STATUS_STATE_Pos)
364 #define PICOP_CMD_STATUS_STATE(value) (PICOP_CMD_STATUS_STATE_Msk & ((value) << PICOP_CMD_STATUS_STATE_Pos))
365 #define   PICOP_CMD_STATUS_STATE_RESET_0_Val 0x0ul  /**< \brief (PICOP_CMD_STATUS) Reset step 0 */
366 #define   PICOP_CMD_STATUS_STATE_RESET_1_Val 0x1ul  /**< \brief (PICOP_CMD_STATUS) Reset step 1 */
367 #define   PICOP_CMD_STATUS_STATE_RESET_2_Val 0x2ul  /**< \brief (PICOP_CMD_STATUS) Reset step 2 */
368 #define   PICOP_CMD_STATUS_STATE_RESET_3_Val 0x3ul  /**< \brief (PICOP_CMD_STATUS) Reset step 3 */
369 #define   PICOP_CMD_STATUS_STATE_FUSE_CHECK_Val 0x4ul  /**< \brief (PICOP_CMD_STATUS) Fuse check */
370 #define   PICOP_CMD_STATUS_STATE_INITIALIZED_Val 0x5ul  /**< \brief (PICOP_CMD_STATUS) Initialized */
371 #define   PICOP_CMD_STATUS_STATE_STANDBY_Val 0x6ul  /**< \brief (PICOP_CMD_STATUS) Standby */
372 #define   PICOP_CMD_STATUS_STATE_RUNNING_LOCKED_Val 0x8ul  /**< \brief (PICOP_CMD_STATUS) Running locked */
373 #define   PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_1_Val 0x9ul  /**< \brief (PICOP_CMD_STATUS) Running unlock step 1 */
374 #define   PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_2_Val 0xAul  /**< \brief (PICOP_CMD_STATUS) Running unlock step 2 */
375 #define   PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_3_Val 0xBul  /**< \brief (PICOP_CMD_STATUS) Running unlock step 3 */
376 #define   PICOP_CMD_STATUS_STATE_RUNNING_Val 0xCul  /**< \brief (PICOP_CMD_STATUS) Running */
377 #define   PICOP_CMD_STATUS_STATE_RUNNING_BOOT_Val 0xDul  /**< \brief (PICOP_CMD_STATUS) Running boot */
378 #define   PICOP_CMD_STATUS_STATE_RUNNING_HOSTOCD_Val 0xEul  /**< \brief (PICOP_CMD_STATUS) Running hostocd */
379 #define   PICOP_CMD_STATUS_STATE_RESETTING_Val 0x10ul  /**< \brief (PICOP_CMD_STATUS) Resetting */
380 #define   PICOP_CMD_STATUS_STATE_STOPPING_Val 0x11ul  /**< \brief (PICOP_CMD_STATUS) Stopping */
381 #define   PICOP_CMD_STATUS_STATE_STOPPED_Val 0x12ul  /**< \brief (PICOP_CMD_STATUS) Stopped */
382 #define PICOP_CMD_STATUS_STATE_RESET_0 (PICOP_CMD_STATUS_STATE_RESET_0_Val << PICOP_CMD_STATUS_STATE_Pos)
383 #define PICOP_CMD_STATUS_STATE_RESET_1 (PICOP_CMD_STATUS_STATE_RESET_1_Val << PICOP_CMD_STATUS_STATE_Pos)
384 #define PICOP_CMD_STATUS_STATE_RESET_2 (PICOP_CMD_STATUS_STATE_RESET_2_Val << PICOP_CMD_STATUS_STATE_Pos)
385 #define PICOP_CMD_STATUS_STATE_RESET_3 (PICOP_CMD_STATUS_STATE_RESET_3_Val << PICOP_CMD_STATUS_STATE_Pos)
386 #define PICOP_CMD_STATUS_STATE_FUSE_CHECK (PICOP_CMD_STATUS_STATE_FUSE_CHECK_Val << PICOP_CMD_STATUS_STATE_Pos)
387 #define PICOP_CMD_STATUS_STATE_INITIALIZED (PICOP_CMD_STATUS_STATE_INITIALIZED_Val << PICOP_CMD_STATUS_STATE_Pos)
388 #define PICOP_CMD_STATUS_STATE_STANDBY (PICOP_CMD_STATUS_STATE_STANDBY_Val << PICOP_CMD_STATUS_STATE_Pos)
389 #define PICOP_CMD_STATUS_STATE_RUNNING_LOCKED (PICOP_CMD_STATUS_STATE_RUNNING_LOCKED_Val << PICOP_CMD_STATUS_STATE_Pos)
390 #define PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_1 (PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_1_Val << PICOP_CMD_STATUS_STATE_Pos)
391 #define PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_2 (PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_2_Val << PICOP_CMD_STATUS_STATE_Pos)
392 #define PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_3 (PICOP_CMD_STATUS_STATE_RUNNING_UNLOCK_3_Val << PICOP_CMD_STATUS_STATE_Pos)
393 #define PICOP_CMD_STATUS_STATE_RUNNING (PICOP_CMD_STATUS_STATE_RUNNING_Val << PICOP_CMD_STATUS_STATE_Pos)
394 #define PICOP_CMD_STATUS_STATE_RUNNING_BOOT (PICOP_CMD_STATUS_STATE_RUNNING_BOOT_Val << PICOP_CMD_STATUS_STATE_Pos)
395 #define PICOP_CMD_STATUS_STATE_RUNNING_HOSTOCD (PICOP_CMD_STATUS_STATE_RUNNING_HOSTOCD_Val << PICOP_CMD_STATUS_STATE_Pos)
396 #define PICOP_CMD_STATUS_STATE_RESETTING (PICOP_CMD_STATUS_STATE_RESETTING_Val << PICOP_CMD_STATUS_STATE_Pos)
397 #define PICOP_CMD_STATUS_STATE_STOPPING (PICOP_CMD_STATUS_STATE_STOPPING_Val << PICOP_CMD_STATUS_STATE_Pos)
398 #define PICOP_CMD_STATUS_STATE_STOPPED (PICOP_CMD_STATUS_STATE_STOPPED_Val << PICOP_CMD_STATUS_STATE_Pos)
399 #define PICOP_CMD_STATUS_MASK       0xF8FF077Ful /**< \brief (PICOP_CMD_STATUS) MASK Register */
400 
401 /* -------- PICOP_PC : (PICOP Offset: 0x02C) (R/W 32) Program Counter -------- */
402 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
403 typedef union {
404   struct {
405     uint32_t PC:16;            /*!< bit:  0..15  Program Counter                    */
406     uint32_t :16;              /*!< bit: 16..31  Reserved                           */
407   } bit;                       /*!< Structure used for bit  access                  */
408   uint32_t reg;                /*!< Type      used for register access              */
409 } PICOP_PC_Type;
410 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
411 
412 #define PICOP_PC_OFFSET             0x02C        /**< \brief (PICOP_PC offset) Program Counter */
413 #define PICOP_PC_RESETVALUE         0x00000000ul /**< \brief (PICOP_PC reset_value) Program Counter */
414 
415 #define PICOP_PC_PC_Pos             0            /**< \brief (PICOP_PC) Program Counter */
416 #define PICOP_PC_PC_Msk             (0xFFFFul << PICOP_PC_PC_Pos)
417 #define PICOP_PC_PC(value)          (PICOP_PC_PC_Msk & ((value) << PICOP_PC_PC_Pos))
418 #define PICOP_PC_MASK               0x0000FFFFul /**< \brief (PICOP_PC) MASK Register */
419 
420 /* -------- PICOP_HF : (PICOP Offset: 0x030) (R/W 32) Host Flags -------- */
421 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
422 typedef union {
423   struct {
424     uint32_t HF:32;            /*!< bit:  0..31  Host Flags                         */
425   } bit;                       /*!< Structure used for bit  access                  */
426   uint32_t reg;                /*!< Type      used for register access              */
427 } PICOP_HF_Type;
428 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
429 
430 #define PICOP_HF_OFFSET             0x030        /**< \brief (PICOP_HF offset) Host Flags */
431 #define PICOP_HF_RESETVALUE         0x00000000ul /**< \brief (PICOP_HF reset_value) Host Flags */
432 
433 #define PICOP_HF_HF_Pos             0            /**< \brief (PICOP_HF) Host Flags */
434 #define PICOP_HF_HF_Msk             (0xFFFFFFFFul << PICOP_HF_HF_Pos)
435 #define PICOP_HF_HF(value)          (PICOP_HF_HF_Msk & ((value) << PICOP_HF_HF_Pos))
436 #define PICOP_HF_MASK               0xFFFFFFFFul /**< \brief (PICOP_HF) MASK Register */
437 
438 /* -------- PICOP_HFCTRL : (PICOP Offset: 0x034) (R/W 32) Host Flag Control -------- */
439 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
440 typedef union {
441   struct {
442     uint32_t :4;               /*!< bit:  0.. 3  Reserved                           */
443     uint32_t IRQENCLR:4;       /*!< bit:  4.. 7  Host Flags IRQ Enable Clear        */
444     uint32_t :4;               /*!< bit:  8..11  Reserved                           */
445     uint32_t IRQENSET:4;       /*!< bit: 12..15  Host Flags IRQ Enable Set          */
446     uint32_t :16;              /*!< bit: 16..31  Reserved                           */
447   } bit;                       /*!< Structure used for bit  access                  */
448   uint32_t reg;                /*!< Type      used for register access              */
449 } PICOP_HFCTRL_Type;
450 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
451 
452 #define PICOP_HFCTRL_OFFSET         0x034        /**< \brief (PICOP_HFCTRL offset) Host Flag Control */
453 #define PICOP_HFCTRL_RESETVALUE     0x00000000ul /**< \brief (PICOP_HFCTRL reset_value) Host Flag Control */
454 
455 #define PICOP_HFCTRL_IRQENCLR_Pos   4            /**< \brief (PICOP_HFCTRL) Host Flags IRQ Enable Clear */
456 #define PICOP_HFCTRL_IRQENCLR_Msk   (0xFul << PICOP_HFCTRL_IRQENCLR_Pos)
457 #define PICOP_HFCTRL_IRQENCLR(value) (PICOP_HFCTRL_IRQENCLR_Msk & ((value) << PICOP_HFCTRL_IRQENCLR_Pos))
458 #define PICOP_HFCTRL_IRQENSET_Pos   12           /**< \brief (PICOP_HFCTRL) Host Flags IRQ Enable Set */
459 #define PICOP_HFCTRL_IRQENSET_Msk   (0xFul << PICOP_HFCTRL_IRQENSET_Pos)
460 #define PICOP_HFCTRL_IRQENSET(value) (PICOP_HFCTRL_IRQENSET_Msk & ((value) << PICOP_HFCTRL_IRQENSET_Pos))
461 #define PICOP_HFCTRL_MASK           0x0000F0F0ul /**< \brief (PICOP_HFCTRL) MASK Register */
462 
463 /* -------- PICOP_HFSETCLR0 : (PICOP Offset: 0x038) (R/W 32) Host Flags Set/Clr -------- */
464 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
465 typedef union {
466   struct {
467     uint32_t HFCLR0:8;         /*!< bit:  0.. 7  Host Flags Clear bits 7:0          */
468     uint32_t HFSET0:8;         /*!< bit:  8..15  Host Flags Set bits 7:0            */
469     uint32_t HFCLR1:8;         /*!< bit: 16..23  Host Flags Clear bits 15:8         */
470     uint32_t HFSET1:8;         /*!< bit: 24..31  Host Flags Set bits 15:8           */
471   } bit;                       /*!< Structure used for bit  access                  */
472   uint32_t reg;                /*!< Type      used for register access              */
473 } PICOP_HFSETCLR0_Type;
474 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
475 
476 #define PICOP_HFSETCLR0_OFFSET      0x038        /**< \brief (PICOP_HFSETCLR0 offset) Host Flags Set/Clr */
477 #define PICOP_HFSETCLR0_RESETVALUE  0x00000000ul /**< \brief (PICOP_HFSETCLR0 reset_value) Host Flags Set/Clr */
478 
479 #define PICOP_HFSETCLR0_HFCLR0_Pos  0            /**< \brief (PICOP_HFSETCLR0) Host Flags Clear bits 7:0 */
480 #define PICOP_HFSETCLR0_HFCLR0_Msk  (0xFFul << PICOP_HFSETCLR0_HFCLR0_Pos)
481 #define PICOP_HFSETCLR0_HFCLR0(value) (PICOP_HFSETCLR0_HFCLR0_Msk & ((value) << PICOP_HFSETCLR0_HFCLR0_Pos))
482 #define PICOP_HFSETCLR0_HFSET0_Pos  8            /**< \brief (PICOP_HFSETCLR0) Host Flags Set bits 7:0 */
483 #define PICOP_HFSETCLR0_HFSET0_Msk  (0xFFul << PICOP_HFSETCLR0_HFSET0_Pos)
484 #define PICOP_HFSETCLR0_HFSET0(value) (PICOP_HFSETCLR0_HFSET0_Msk & ((value) << PICOP_HFSETCLR0_HFSET0_Pos))
485 #define PICOP_HFSETCLR0_HFCLR1_Pos  16           /**< \brief (PICOP_HFSETCLR0) Host Flags Clear bits 15:8 */
486 #define PICOP_HFSETCLR0_HFCLR1_Msk  (0xFFul << PICOP_HFSETCLR0_HFCLR1_Pos)
487 #define PICOP_HFSETCLR0_HFCLR1(value) (PICOP_HFSETCLR0_HFCLR1_Msk & ((value) << PICOP_HFSETCLR0_HFCLR1_Pos))
488 #define PICOP_HFSETCLR0_HFSET1_Pos  24           /**< \brief (PICOP_HFSETCLR0) Host Flags Set bits 15:8 */
489 #define PICOP_HFSETCLR0_HFSET1_Msk  (0xFFul << PICOP_HFSETCLR0_HFSET1_Pos)
490 #define PICOP_HFSETCLR0_HFSET1(value) (PICOP_HFSETCLR0_HFSET1_Msk & ((value) << PICOP_HFSETCLR0_HFSET1_Pos))
491 #define PICOP_HFSETCLR0_MASK        0xFFFFFFFFul /**< \brief (PICOP_HFSETCLR0) MASK Register */
492 
493 /* -------- PICOP_HFSETCLR1 : (PICOP Offset: 0x03C) (R/W 32) Host Flags Set/Clr -------- */
494 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
495 typedef union {
496   struct {
497     uint32_t HFCLR2:8;         /*!< bit:  0.. 7  Host Flags Clear bits 23:16        */
498     uint32_t HFSET2:8;         /*!< bit:  8..15  Host Flags Set bits 23:16          */
499     uint32_t HFCLR3:8;         /*!< bit: 16..23  Host Flags Clear bits 31:24        */
500     uint32_t HFSET3:8;         /*!< bit: 24..31  Host Flags Set bits 31:24          */
501   } bit;                       /*!< Structure used for bit  access                  */
502   uint32_t reg;                /*!< Type      used for register access              */
503 } PICOP_HFSETCLR1_Type;
504 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
505 
506 #define PICOP_HFSETCLR1_OFFSET      0x03C        /**< \brief (PICOP_HFSETCLR1 offset) Host Flags Set/Clr */
507 #define PICOP_HFSETCLR1_RESETVALUE  0x00000000ul /**< \brief (PICOP_HFSETCLR1 reset_value) Host Flags Set/Clr */
508 
509 #define PICOP_HFSETCLR1_HFCLR2_Pos  0            /**< \brief (PICOP_HFSETCLR1) Host Flags Clear bits 23:16 */
510 #define PICOP_HFSETCLR1_HFCLR2_Msk  (0xFFul << PICOP_HFSETCLR1_HFCLR2_Pos)
511 #define PICOP_HFSETCLR1_HFCLR2(value) (PICOP_HFSETCLR1_HFCLR2_Msk & ((value) << PICOP_HFSETCLR1_HFCLR2_Pos))
512 #define PICOP_HFSETCLR1_HFSET2_Pos  8            /**< \brief (PICOP_HFSETCLR1) Host Flags Set bits 23:16 */
513 #define PICOP_HFSETCLR1_HFSET2_Msk  (0xFFul << PICOP_HFSETCLR1_HFSET2_Pos)
514 #define PICOP_HFSETCLR1_HFSET2(value) (PICOP_HFSETCLR1_HFSET2_Msk & ((value) << PICOP_HFSETCLR1_HFSET2_Pos))
515 #define PICOP_HFSETCLR1_HFCLR3_Pos  16           /**< \brief (PICOP_HFSETCLR1) Host Flags Clear bits 31:24 */
516 #define PICOP_HFSETCLR1_HFCLR3_Msk  (0xFFul << PICOP_HFSETCLR1_HFCLR3_Pos)
517 #define PICOP_HFSETCLR1_HFCLR3(value) (PICOP_HFSETCLR1_HFCLR3_Msk & ((value) << PICOP_HFSETCLR1_HFCLR3_Pos))
518 #define PICOP_HFSETCLR1_HFSET3_Pos  24           /**< \brief (PICOP_HFSETCLR1) Host Flags Set bits 31:24 */
519 #define PICOP_HFSETCLR1_HFSET3_Msk  (0xFFul << PICOP_HFSETCLR1_HFSET3_Pos)
520 #define PICOP_HFSETCLR1_HFSET3(value) (PICOP_HFSETCLR1_HFSET3_Msk & ((value) << PICOP_HFSETCLR1_HFSET3_Pos))
521 #define PICOP_HFSETCLR1_MASK        0xFFFFFFFFul /**< \brief (PICOP_HFSETCLR1) MASK Register */
522 
523 /* -------- PICOP_OCDCONFIG : (PICOP Offset: 0x050) (R/W 32) OCD Configuration -------- */
524 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
525 typedef union {
526   struct {
527     uint32_t :1;               /*!< bit:      0  Reserved                           */
528     uint32_t CCNTEN:1;         /*!< bit:      1  Cycle Counter Enable               */
529     uint32_t :30;              /*!< bit:  2..31  Reserved                           */
530   } bit;                       /*!< Structure used for bit  access                  */
531   uint32_t reg;                /*!< Type      used for register access              */
532 } PICOP_OCDCONFIG_Type;
533 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
534 
535 #define PICOP_OCDCONFIG_OFFSET      0x050        /**< \brief (PICOP_OCDCONFIG offset) OCD Configuration */
536 #define PICOP_OCDCONFIG_RESETVALUE  0x00000000ul /**< \brief (PICOP_OCDCONFIG reset_value) OCD Configuration */
537 
538 #define PICOP_OCDCONFIG_CCNTEN_Pos  1            /**< \brief (PICOP_OCDCONFIG) Cycle Counter Enable */
539 #define PICOP_OCDCONFIG_CCNTEN      (0x1ul << PICOP_OCDCONFIG_CCNTEN_Pos)
540 #define PICOP_OCDCONFIG_MASK        0x00000002ul /**< \brief (PICOP_OCDCONFIG) MASK Register */
541 
542 /* -------- PICOP_OCDCONTROL : (PICOP Offset: 0x054) (R/W 32) OCD Control -------- */
543 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
544 typedef union {
545   struct {
546     uint32_t OCDEN:1;          /*!< bit:      0  OCD Enable                         */
547     uint32_t :1;               /*!< bit:      1  Reserved                           */
548     uint32_t BPSSTEP:1;        /*!< bit:      2  Single Step Breakpoint             */
549     uint32_t BPCOF:1;          /*!< bit:      3  Change of Flow Breakpoint          */
550     uint32_t BPRST:1;          /*!< bit:      4  Reset Breakpoint                   */
551     uint32_t BPEXCEPTION:1;    /*!< bit:      5  Exception Breakpoint               */
552     uint32_t BPIRQ:1;          /*!< bit:      6  Interrupt Request Breakpoint       */
553     uint32_t BPSW:1;           /*!< bit:      7  Software Breakpoint                */
554     uint32_t BPSLEEP:1;        /*!< bit:      8  Sleep Breakpoint                   */
555     uint32_t BPWDT:1;          /*!< bit:      9  Watchdog Timer Breakpoint          */
556     uint32_t BPISA:1;          /*!< bit:     10  ISA Breakpoint                     */
557     uint32_t :1;               /*!< bit:     11  Reserved                           */
558     uint32_t BPCOMP:4;         /*!< bit: 12..15  Comparator Breakpoint              */
559     uint32_t BPGENMODE:4;      /*!< bit: 16..19  Breakpoint Generator n Mode        */
560     uint32_t :12;              /*!< bit: 20..31  Reserved                           */
561   } bit;                       /*!< Structure used for bit  access                  */
562   uint32_t reg;                /*!< Type      used for register access              */
563 } PICOP_OCDCONTROL_Type;
564 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
565 
566 #define PICOP_OCDCONTROL_OFFSET     0x054        /**< \brief (PICOP_OCDCONTROL offset) OCD Control */
567 #define PICOP_OCDCONTROL_RESETVALUE 0x00000000ul /**< \brief (PICOP_OCDCONTROL reset_value) OCD Control */
568 
569 #define PICOP_OCDCONTROL_OCDEN_Pos  0            /**< \brief (PICOP_OCDCONTROL) OCD Enable */
570 #define PICOP_OCDCONTROL_OCDEN      (0x1ul << PICOP_OCDCONTROL_OCDEN_Pos)
571 #define PICOP_OCDCONTROL_BPSSTEP_Pos 2            /**< \brief (PICOP_OCDCONTROL) Single Step Breakpoint */
572 #define PICOP_OCDCONTROL_BPSSTEP    (0x1ul << PICOP_OCDCONTROL_BPSSTEP_Pos)
573 #define PICOP_OCDCONTROL_BPCOF_Pos  3            /**< \brief (PICOP_OCDCONTROL) Change of Flow Breakpoint */
574 #define PICOP_OCDCONTROL_BPCOF      (0x1ul << PICOP_OCDCONTROL_BPCOF_Pos)
575 #define PICOP_OCDCONTROL_BPRST_Pos  4            /**< \brief (PICOP_OCDCONTROL) Reset Breakpoint */
576 #define PICOP_OCDCONTROL_BPRST      (0x1ul << PICOP_OCDCONTROL_BPRST_Pos)
577 #define PICOP_OCDCONTROL_BPEXCEPTION_Pos 5            /**< \brief (PICOP_OCDCONTROL) Exception Breakpoint */
578 #define PICOP_OCDCONTROL_BPEXCEPTION (0x1ul << PICOP_OCDCONTROL_BPEXCEPTION_Pos)
579 #define PICOP_OCDCONTROL_BPIRQ_Pos  6            /**< \brief (PICOP_OCDCONTROL) Interrupt Request Breakpoint */
580 #define PICOP_OCDCONTROL_BPIRQ      (0x1ul << PICOP_OCDCONTROL_BPIRQ_Pos)
581 #define PICOP_OCDCONTROL_BPSW_Pos   7            /**< \brief (PICOP_OCDCONTROL) Software Breakpoint */
582 #define PICOP_OCDCONTROL_BPSW       (0x1ul << PICOP_OCDCONTROL_BPSW_Pos)
583 #define PICOP_OCDCONTROL_BPSLEEP_Pos 8            /**< \brief (PICOP_OCDCONTROL) Sleep Breakpoint */
584 #define PICOP_OCDCONTROL_BPSLEEP    (0x1ul << PICOP_OCDCONTROL_BPSLEEP_Pos)
585 #define PICOP_OCDCONTROL_BPWDT_Pos  9            /**< \brief (PICOP_OCDCONTROL) Watchdog Timer Breakpoint */
586 #define PICOP_OCDCONTROL_BPWDT      (0x1ul << PICOP_OCDCONTROL_BPWDT_Pos)
587 #define PICOP_OCDCONTROL_BPISA_Pos  10           /**< \brief (PICOP_OCDCONTROL) ISA Breakpoint */
588 #define PICOP_OCDCONTROL_BPISA      (0x1ul << PICOP_OCDCONTROL_BPISA_Pos)
589 #define PICOP_OCDCONTROL_BPCOMP_Pos 12           /**< \brief (PICOP_OCDCONTROL) Comparator Breakpoint */
590 #define PICOP_OCDCONTROL_BPCOMP_Msk (0xFul << PICOP_OCDCONTROL_BPCOMP_Pos)
591 #define PICOP_OCDCONTROL_BPCOMP(value) (PICOP_OCDCONTROL_BPCOMP_Msk & ((value) << PICOP_OCDCONTROL_BPCOMP_Pos))
592 #define PICOP_OCDCONTROL_BPGENMODE_Pos 16           /**< \brief (PICOP_OCDCONTROL) Breakpoint Generator n Mode */
593 #define PICOP_OCDCONTROL_BPGENMODE_Msk (0xFul << PICOP_OCDCONTROL_BPGENMODE_Pos)
594 #define PICOP_OCDCONTROL_BPGENMODE(value) (PICOP_OCDCONTROL_BPGENMODE_Msk & ((value) << PICOP_OCDCONTROL_BPGENMODE_Pos))
595 #define PICOP_OCDCONTROL_MASK       0x000FF7FDul /**< \brief (PICOP_OCDCONTROL) MASK Register */
596 
597 /* -------- PICOP_OCDSTATUS : (PICOP Offset: 0x058) (R/W 32) OCD Status and Command -------- */
598 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
599 typedef union {
600   struct { // CMD mode
601     uint32_t INST:16;          /*!< bit:  0..15  Instruction Override               */
602     uint32_t :16;              /*!< bit: 16..31  Reserved                           */
603   } CMD;                       /*!< Structure used for CMD                          */
604   struct { // STATUS mode
605     uint32_t :1;               /*!< bit:      0  Reserved                           */
606     uint32_t BPEXT:1;          /*!< bit:      1  External Breakpoint                */
607     uint32_t BPSSTEP:1;        /*!< bit:      2  Single Step Breakpoint             */
608     uint32_t BPCOF:1;          /*!< bit:      3  Change of Flow Breakpoint          */
609     uint32_t BPRST:1;          /*!< bit:      4  Reset Breakpoint                   */
610     uint32_t BPEXCEPTION:1;    /*!< bit:      5  Exception Breakpoint               */
611     uint32_t BPIRQ:1;          /*!< bit:      6  Interrupt Request Breakpoint       */
612     uint32_t BPSW:1;           /*!< bit:      7  Software Breakpoint                */
613     uint32_t BPSLEEP:1;        /*!< bit:      8  Sleep Breakpoint                   */
614     uint32_t BPWDT:1;          /*!< bit:      9  Watchdog Timer Breakpoint          */
615     uint32_t BPISA:1;          /*!< bit:     10  ISA Breakpoint                     */
616     uint32_t :1;               /*!< bit:     11  Reserved                           */
617     uint32_t BPCOMP:4;         /*!< bit: 12..15  Comparator Breakpoint              */
618     uint32_t :16;              /*!< bit: 16..31  Reserved                           */
619   } STATUS;                    /*!< Structure used for STATUS                       */
620   uint32_t reg;                /*!< Type      used for register access              */
621 } PICOP_OCDSTATUS_Type;
622 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
623 
624 #define PICOP_OCDSTATUS_OFFSET      0x058        /**< \brief (PICOP_OCDSTATUS offset) OCD Status and Command */
625 #define PICOP_OCDSTATUS_RESETVALUE  0x00000000ul /**< \brief (PICOP_OCDSTATUS reset_value) OCD Status and Command */
626 
627 // CMD mode
628 #define PICOP_OCDSTATUS_CMD_INST_Pos 0            /**< \brief (PICOP_OCDSTATUS_CMD) Instruction Override */
629 #define PICOP_OCDSTATUS_CMD_INST_Msk (0xFFFFul << PICOP_OCDSTATUS_CMD_INST_Pos)
630 #define PICOP_OCDSTATUS_CMD_INST(value) (PICOP_OCDSTATUS_CMD_INST_Msk & ((value) << PICOP_OCDSTATUS_CMD_INST_Pos))
631 #define PICOP_OCDSTATUS_CMD_MASK    0x0000FFFFul /**< \brief (PICOP_OCDSTATUS_CMD) MASK Register */
632 
633 // STATUS mode
634 #define PICOP_OCDSTATUS_STATUS_BPEXT_Pos 1            /**< \brief (PICOP_OCDSTATUS_STATUS) External Breakpoint */
635 #define PICOP_OCDSTATUS_STATUS_BPEXT (0x1ul << PICOP_OCDSTATUS_STATUS_BPEXT_Pos)
636 #define PICOP_OCDSTATUS_STATUS_BPSSTEP_Pos 2            /**< \brief (PICOP_OCDSTATUS_STATUS) Single Step Breakpoint */
637 #define PICOP_OCDSTATUS_STATUS_BPSSTEP (0x1ul << PICOP_OCDSTATUS_STATUS_BPSSTEP_Pos)
638 #define PICOP_OCDSTATUS_STATUS_BPCOF_Pos 3            /**< \brief (PICOP_OCDSTATUS_STATUS) Change of Flow Breakpoint */
639 #define PICOP_OCDSTATUS_STATUS_BPCOF (0x1ul << PICOP_OCDSTATUS_STATUS_BPCOF_Pos)
640 #define PICOP_OCDSTATUS_STATUS_BPRST_Pos 4            /**< \brief (PICOP_OCDSTATUS_STATUS) Reset Breakpoint */
641 #define PICOP_OCDSTATUS_STATUS_BPRST (0x1ul << PICOP_OCDSTATUS_STATUS_BPRST_Pos)
642 #define PICOP_OCDSTATUS_STATUS_BPEXCEPTION_Pos 5            /**< \brief (PICOP_OCDSTATUS_STATUS) Exception Breakpoint */
643 #define PICOP_OCDSTATUS_STATUS_BPEXCEPTION (0x1ul << PICOP_OCDSTATUS_STATUS_BPEXCEPTION_Pos)
644 #define PICOP_OCDSTATUS_STATUS_BPIRQ_Pos 6            /**< \brief (PICOP_OCDSTATUS_STATUS) Interrupt Request Breakpoint */
645 #define PICOP_OCDSTATUS_STATUS_BPIRQ (0x1ul << PICOP_OCDSTATUS_STATUS_BPIRQ_Pos)
646 #define PICOP_OCDSTATUS_STATUS_BPSW_Pos 7            /**< \brief (PICOP_OCDSTATUS_STATUS) Software Breakpoint */
647 #define PICOP_OCDSTATUS_STATUS_BPSW (0x1ul << PICOP_OCDSTATUS_STATUS_BPSW_Pos)
648 #define PICOP_OCDSTATUS_STATUS_BPSLEEP_Pos 8            /**< \brief (PICOP_OCDSTATUS_STATUS) Sleep Breakpoint */
649 #define PICOP_OCDSTATUS_STATUS_BPSLEEP (0x1ul << PICOP_OCDSTATUS_STATUS_BPSLEEP_Pos)
650 #define PICOP_OCDSTATUS_STATUS_BPWDT_Pos 9            /**< \brief (PICOP_OCDSTATUS_STATUS) Watchdog Timer Breakpoint */
651 #define PICOP_OCDSTATUS_STATUS_BPWDT (0x1ul << PICOP_OCDSTATUS_STATUS_BPWDT_Pos)
652 #define PICOP_OCDSTATUS_STATUS_BPISA_Pos 10           /**< \brief (PICOP_OCDSTATUS_STATUS) ISA Breakpoint */
653 #define PICOP_OCDSTATUS_STATUS_BPISA (0x1ul << PICOP_OCDSTATUS_STATUS_BPISA_Pos)
654 #define PICOP_OCDSTATUS_STATUS_BPCOMP_Pos 12           /**< \brief (PICOP_OCDSTATUS_STATUS) Comparator Breakpoint */
655 #define PICOP_OCDSTATUS_STATUS_BPCOMP_Msk (0xFul << PICOP_OCDSTATUS_STATUS_BPCOMP_Pos)
656 #define PICOP_OCDSTATUS_STATUS_BPCOMP(value) (PICOP_OCDSTATUS_STATUS_BPCOMP_Msk & ((value) << PICOP_OCDSTATUS_STATUS_BPCOMP_Pos))
657 #define PICOP_OCDSTATUS_STATUS_MASK 0x0000F7FEul /**< \brief (PICOP_OCDSTATUS_STATUS) MASK Register */
658 
659 /* -------- PICOP_OCDPC : (PICOP Offset: 0x05C) (R/W 32) ODC Program Counter -------- */
660 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
661 typedef union {
662   struct {
663     uint32_t PC:16;            /*!< bit:  0..15  Program Counter                    */
664     uint32_t :16;              /*!< bit: 16..31  Reserved                           */
665   } bit;                       /*!< Structure used for bit  access                  */
666   uint32_t reg;                /*!< Type      used for register access              */
667 } PICOP_OCDPC_Type;
668 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
669 
670 #define PICOP_OCDPC_OFFSET          0x05C        /**< \brief (PICOP_OCDPC offset) ODC Program Counter */
671 
672 #define PICOP_OCDPC_PC_Pos          0            /**< \brief (PICOP_OCDPC) Program Counter */
673 #define PICOP_OCDPC_PC_Msk          (0xFFFFul << PICOP_OCDPC_PC_Pos)
674 #define PICOP_OCDPC_PC(value)       (PICOP_OCDPC_PC_Msk & ((value) << PICOP_OCDPC_PC_Pos))
675 #define PICOP_OCDPC_MASK            0x0000FFFFul /**< \brief (PICOP_OCDPC) MASK Register */
676 
677 /* -------- PICOP_OCDFEAT : (PICOP Offset: 0x060) (R/W 32) OCD Features -------- */
678 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
679 typedef union {
680   struct {
681     uint32_t CCNT:2;           /*!< bit:  0.. 1  Cycle Counter                      */
682     uint32_t BPGEN:2;          /*!< bit:  2.. 3  Breakpoint Generators              */
683     uint32_t :28;              /*!< bit:  4..31  Reserved                           */
684   } bit;                       /*!< Structure used for bit  access                  */
685   uint32_t reg;                /*!< Type      used for register access              */
686 } PICOP_OCDFEAT_Type;
687 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
688 
689 #define PICOP_OCDFEAT_OFFSET        0x060        /**< \brief (PICOP_OCDFEAT offset) OCD Features */
690 #define PICOP_OCDFEAT_RESETVALUE    0x00000000ul /**< \brief (PICOP_OCDFEAT reset_value) OCD Features */
691 
692 #define PICOP_OCDFEAT_CCNT_Pos      0            /**< \brief (PICOP_OCDFEAT) Cycle Counter */
693 #define PICOP_OCDFEAT_CCNT_Msk      (0x3ul << PICOP_OCDFEAT_CCNT_Pos)
694 #define PICOP_OCDFEAT_CCNT(value)   (PICOP_OCDFEAT_CCNT_Msk & ((value) << PICOP_OCDFEAT_CCNT_Pos))
695 #define PICOP_OCDFEAT_BPGEN_Pos     2            /**< \brief (PICOP_OCDFEAT) Breakpoint Generators */
696 #define PICOP_OCDFEAT_BPGEN_Msk     (0x3ul << PICOP_OCDFEAT_BPGEN_Pos)
697 #define PICOP_OCDFEAT_BPGEN(value)  (PICOP_OCDFEAT_BPGEN_Msk & ((value) << PICOP_OCDFEAT_BPGEN_Pos))
698 #define PICOP_OCDFEAT_MASK          0x0000000Ful /**< \brief (PICOP_OCDFEAT) MASK Register */
699 
700 /* -------- PICOP_OCDCCNT : (PICOP Offset: 0x068) (R/W 32) OCD Cycle Counter -------- */
701 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
702 typedef union {
703   struct {
704     uint32_t CCNT:32;          /*!< bit:  0..31  Cycle Count                        */
705   } bit;                       /*!< Structure used for bit  access                  */
706   uint32_t reg;                /*!< Type      used for register access              */
707 } PICOP_OCDCCNT_Type;
708 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
709 
710 #define PICOP_OCDCCNT_OFFSET        0x068        /**< \brief (PICOP_OCDCCNT offset) OCD Cycle Counter */
711 #define PICOP_OCDCCNT_RESETVALUE    0x00000000ul /**< \brief (PICOP_OCDCCNT reset_value) OCD Cycle Counter */
712 
713 #define PICOP_OCDCCNT_CCNT_Pos      0            /**< \brief (PICOP_OCDCCNT) Cycle Count */
714 #define PICOP_OCDCCNT_CCNT_Msk      (0xFFFFFFFFul << PICOP_OCDCCNT_CCNT_Pos)
715 #define PICOP_OCDCCNT_CCNT(value)   (PICOP_OCDCCNT_CCNT_Msk & ((value) << PICOP_OCDCCNT_CCNT_Pos))
716 #define PICOP_OCDCCNT_MASK          0xFFFFFFFFul /**< \brief (PICOP_OCDCCNT) MASK Register */
717 
718 /* -------- PICOP_OCDBPGEN : (PICOP Offset: 0x070) (R/W 32) OCD Breakpoint Generator n -------- */
719 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
720 typedef union {
721   struct {
722     uint32_t BPGEN:16;         /*!< bit:  0..15  Breakpoint Generator               */
723     uint32_t :16;              /*!< bit: 16..31  Reserved                           */
724   } bit;                       /*!< Structure used for bit  access                  */
725   uint32_t reg;                /*!< Type      used for register access              */
726 } PICOP_OCDBPGEN_Type;
727 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
728 
729 #define PICOP_OCDBPGEN_OFFSET       0x070        /**< \brief (PICOP_OCDBPGEN offset) OCD Breakpoint Generator n */
730 #define PICOP_OCDBPGEN_RESETVALUE   0x00000000ul /**< \brief (PICOP_OCDBPGEN reset_value) OCD Breakpoint Generator n */
731 
732 #define PICOP_OCDBPGEN_BPGEN_Pos    0            /**< \brief (PICOP_OCDBPGEN) Breakpoint Generator */
733 #define PICOP_OCDBPGEN_BPGEN_Msk    (0xFFFFul << PICOP_OCDBPGEN_BPGEN_Pos)
734 #define PICOP_OCDBPGEN_BPGEN(value) (PICOP_OCDBPGEN_BPGEN_Msk & ((value) << PICOP_OCDBPGEN_BPGEN_Pos))
735 #define PICOP_OCDBPGEN_MASK         0x0000FFFFul /**< \brief (PICOP_OCDBPGEN) MASK Register */
736 
737 /* -------- PICOP_R3R0 : (PICOP Offset: 0x080) (R/W 32) R3 to 0 -------- */
738 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
739 typedef union {
740   struct {
741     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
742     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
743     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
744     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
745   } bit;                       /*!< Structure used for bit  access                  */
746   uint32_t reg;                /*!< Type      used for register access              */
747 } PICOP_R3R0_Type;
748 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
749 
750 #define PICOP_R3R0_OFFSET           0x080        /**< \brief (PICOP_R3R0 offset) R3 to 0 */
751 
752 #define PICOP_R3R0_R0_Pos           0            /**< \brief (PICOP_R3R0) Register 0 */
753 #define PICOP_R3R0_R0_Msk           (0xFFul << PICOP_R3R0_R0_Pos)
754 #define PICOP_R3R0_R0(value)        (PICOP_R3R0_R0_Msk & ((value) << PICOP_R3R0_R0_Pos))
755 #define PICOP_R3R0_R1_Pos           8            /**< \brief (PICOP_R3R0) Register 1 */
756 #define PICOP_R3R0_R1_Msk           (0xFFul << PICOP_R3R0_R1_Pos)
757 #define PICOP_R3R0_R1(value)        (PICOP_R3R0_R1_Msk & ((value) << PICOP_R3R0_R1_Pos))
758 #define PICOP_R3R0_R2_Pos           16           /**< \brief (PICOP_R3R0) Register 2 */
759 #define PICOP_R3R0_R2_Msk           (0xFFul << PICOP_R3R0_R2_Pos)
760 #define PICOP_R3R0_R2(value)        (PICOP_R3R0_R2_Msk & ((value) << PICOP_R3R0_R2_Pos))
761 #define PICOP_R3R0_R3_Pos           24           /**< \brief (PICOP_R3R0) Register 3 */
762 #define PICOP_R3R0_R3_Msk           (0xFFul << PICOP_R3R0_R3_Pos)
763 #define PICOP_R3R0_R3(value)        (PICOP_R3R0_R3_Msk & ((value) << PICOP_R3R0_R3_Pos))
764 #define PICOP_R3R0_MASK             0xFFFFFFFFul /**< \brief (PICOP_R3R0) MASK Register */
765 
766 /* -------- PICOP_R7R4 : (PICOP Offset: 0x084) (R/W 32) R7 to 4 -------- */
767 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
768 typedef union {
769   struct {
770     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
771     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
772     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
773     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
774   } bit;                       /*!< Structure used for bit  access                  */
775   uint32_t reg;                /*!< Type      used for register access              */
776 } PICOP_R7R4_Type;
777 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
778 
779 #define PICOP_R7R4_OFFSET           0x084        /**< \brief (PICOP_R7R4 offset) R7 to 4 */
780 
781 #define PICOP_R7R4_R0_Pos           0            /**< \brief (PICOP_R7R4) Register 0 */
782 #define PICOP_R7R4_R0_Msk           (0xFFul << PICOP_R7R4_R0_Pos)
783 #define PICOP_R7R4_R0(value)        (PICOP_R7R4_R0_Msk & ((value) << PICOP_R7R4_R0_Pos))
784 #define PICOP_R7R4_R1_Pos           8            /**< \brief (PICOP_R7R4) Register 1 */
785 #define PICOP_R7R4_R1_Msk           (0xFFul << PICOP_R7R4_R1_Pos)
786 #define PICOP_R7R4_R1(value)        (PICOP_R7R4_R1_Msk & ((value) << PICOP_R7R4_R1_Pos))
787 #define PICOP_R7R4_R2_Pos           16           /**< \brief (PICOP_R7R4) Register 2 */
788 #define PICOP_R7R4_R2_Msk           (0xFFul << PICOP_R7R4_R2_Pos)
789 #define PICOP_R7R4_R2(value)        (PICOP_R7R4_R2_Msk & ((value) << PICOP_R7R4_R2_Pos))
790 #define PICOP_R7R4_R3_Pos           24           /**< \brief (PICOP_R7R4) Register 3 */
791 #define PICOP_R7R4_R3_Msk           (0xFFul << PICOP_R7R4_R3_Pos)
792 #define PICOP_R7R4_R3(value)        (PICOP_R7R4_R3_Msk & ((value) << PICOP_R7R4_R3_Pos))
793 #define PICOP_R7R4_MASK             0xFFFFFFFFul /**< \brief (PICOP_R7R4) MASK Register */
794 
795 /* -------- PICOP_R11R8 : (PICOP Offset: 0x088) (R/W 32) R11 to 8 -------- */
796 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
797 typedef union {
798   struct {
799     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
800     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
801     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
802     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
803   } bit;                       /*!< Structure used for bit  access                  */
804   uint32_t reg;                /*!< Type      used for register access              */
805 } PICOP_R11R8_Type;
806 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
807 
808 #define PICOP_R11R8_OFFSET          0x088        /**< \brief (PICOP_R11R8 offset) R11 to 8 */
809 
810 #define PICOP_R11R8_R0_Pos          0            /**< \brief (PICOP_R11R8) Register 0 */
811 #define PICOP_R11R8_R0_Msk          (0xFFul << PICOP_R11R8_R0_Pos)
812 #define PICOP_R11R8_R0(value)       (PICOP_R11R8_R0_Msk & ((value) << PICOP_R11R8_R0_Pos))
813 #define PICOP_R11R8_R1_Pos          8            /**< \brief (PICOP_R11R8) Register 1 */
814 #define PICOP_R11R8_R1_Msk          (0xFFul << PICOP_R11R8_R1_Pos)
815 #define PICOP_R11R8_R1(value)       (PICOP_R11R8_R1_Msk & ((value) << PICOP_R11R8_R1_Pos))
816 #define PICOP_R11R8_R2_Pos          16           /**< \brief (PICOP_R11R8) Register 2 */
817 #define PICOP_R11R8_R2_Msk          (0xFFul << PICOP_R11R8_R2_Pos)
818 #define PICOP_R11R8_R2(value)       (PICOP_R11R8_R2_Msk & ((value) << PICOP_R11R8_R2_Pos))
819 #define PICOP_R11R8_R3_Pos          24           /**< \brief (PICOP_R11R8) Register 3 */
820 #define PICOP_R11R8_R3_Msk          (0xFFul << PICOP_R11R8_R3_Pos)
821 #define PICOP_R11R8_R3(value)       (PICOP_R11R8_R3_Msk & ((value) << PICOP_R11R8_R3_Pos))
822 #define PICOP_R11R8_MASK            0xFFFFFFFFul /**< \brief (PICOP_R11R8) MASK Register */
823 
824 /* -------- PICOP_R15R12 : (PICOP Offset: 0x08C) (R/W 32) R15 to 12 -------- */
825 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
826 typedef union {
827   struct {
828     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
829     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
830     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
831     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
832   } bit;                       /*!< Structure used for bit  access                  */
833   uint32_t reg;                /*!< Type      used for register access              */
834 } PICOP_R15R12_Type;
835 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
836 
837 #define PICOP_R15R12_OFFSET         0x08C        /**< \brief (PICOP_R15R12 offset) R15 to 12 */
838 
839 #define PICOP_R15R12_R0_Pos         0            /**< \brief (PICOP_R15R12) Register 0 */
840 #define PICOP_R15R12_R0_Msk         (0xFFul << PICOP_R15R12_R0_Pos)
841 #define PICOP_R15R12_R0(value)      (PICOP_R15R12_R0_Msk & ((value) << PICOP_R15R12_R0_Pos))
842 #define PICOP_R15R12_R1_Pos         8            /**< \brief (PICOP_R15R12) Register 1 */
843 #define PICOP_R15R12_R1_Msk         (0xFFul << PICOP_R15R12_R1_Pos)
844 #define PICOP_R15R12_R1(value)      (PICOP_R15R12_R1_Msk & ((value) << PICOP_R15R12_R1_Pos))
845 #define PICOP_R15R12_R2_Pos         16           /**< \brief (PICOP_R15R12) Register 2 */
846 #define PICOP_R15R12_R2_Msk         (0xFFul << PICOP_R15R12_R2_Pos)
847 #define PICOP_R15R12_R2(value)      (PICOP_R15R12_R2_Msk & ((value) << PICOP_R15R12_R2_Pos))
848 #define PICOP_R15R12_R3_Pos         24           /**< \brief (PICOP_R15R12) Register 3 */
849 #define PICOP_R15R12_R3_Msk         (0xFFul << PICOP_R15R12_R3_Pos)
850 #define PICOP_R15R12_R3(value)      (PICOP_R15R12_R3_Msk & ((value) << PICOP_R15R12_R3_Pos))
851 #define PICOP_R15R12_MASK           0xFFFFFFFFul /**< \brief (PICOP_R15R12) MASK Register */
852 
853 /* -------- PICOP_R19R16 : (PICOP Offset: 0x090) (R/W 32) R19 to 16 -------- */
854 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
855 typedef union {
856   struct {
857     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
858     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
859     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
860     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
861   } bit;                       /*!< Structure used for bit  access                  */
862   uint32_t reg;                /*!< Type      used for register access              */
863 } PICOP_R19R16_Type;
864 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
865 
866 #define PICOP_R19R16_OFFSET         0x090        /**< \brief (PICOP_R19R16 offset) R19 to 16 */
867 
868 #define PICOP_R19R16_R0_Pos         0            /**< \brief (PICOP_R19R16) Register 0 */
869 #define PICOP_R19R16_R0_Msk         (0xFFul << PICOP_R19R16_R0_Pos)
870 #define PICOP_R19R16_R0(value)      (PICOP_R19R16_R0_Msk & ((value) << PICOP_R19R16_R0_Pos))
871 #define PICOP_R19R16_R1_Pos         8            /**< \brief (PICOP_R19R16) Register 1 */
872 #define PICOP_R19R16_R1_Msk         (0xFFul << PICOP_R19R16_R1_Pos)
873 #define PICOP_R19R16_R1(value)      (PICOP_R19R16_R1_Msk & ((value) << PICOP_R19R16_R1_Pos))
874 #define PICOP_R19R16_R2_Pos         16           /**< \brief (PICOP_R19R16) Register 2 */
875 #define PICOP_R19R16_R2_Msk         (0xFFul << PICOP_R19R16_R2_Pos)
876 #define PICOP_R19R16_R2(value)      (PICOP_R19R16_R2_Msk & ((value) << PICOP_R19R16_R2_Pos))
877 #define PICOP_R19R16_R3_Pos         24           /**< \brief (PICOP_R19R16) Register 3 */
878 #define PICOP_R19R16_R3_Msk         (0xFFul << PICOP_R19R16_R3_Pos)
879 #define PICOP_R19R16_R3(value)      (PICOP_R19R16_R3_Msk & ((value) << PICOP_R19R16_R3_Pos))
880 #define PICOP_R19R16_MASK           0xFFFFFFFFul /**< \brief (PICOP_R19R16) MASK Register */
881 
882 /* -------- PICOP_R23R20 : (PICOP Offset: 0x094) (R/W 32) R23 to 20 -------- */
883 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
884 typedef union {
885   struct {
886     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
887     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
888     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
889     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
890   } bit;                       /*!< Structure used for bit  access                  */
891   uint32_t reg;                /*!< Type      used for register access              */
892 } PICOP_R23R20_Type;
893 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
894 
895 #define PICOP_R23R20_OFFSET         0x094        /**< \brief (PICOP_R23R20 offset) R23 to 20 */
896 
897 #define PICOP_R23R20_R0_Pos         0            /**< \brief (PICOP_R23R20) Register 0 */
898 #define PICOP_R23R20_R0_Msk         (0xFFul << PICOP_R23R20_R0_Pos)
899 #define PICOP_R23R20_R0(value)      (PICOP_R23R20_R0_Msk & ((value) << PICOP_R23R20_R0_Pos))
900 #define PICOP_R23R20_R1_Pos         8            /**< \brief (PICOP_R23R20) Register 1 */
901 #define PICOP_R23R20_R1_Msk         (0xFFul << PICOP_R23R20_R1_Pos)
902 #define PICOP_R23R20_R1(value)      (PICOP_R23R20_R1_Msk & ((value) << PICOP_R23R20_R1_Pos))
903 #define PICOP_R23R20_R2_Pos         16           /**< \brief (PICOP_R23R20) Register 2 */
904 #define PICOP_R23R20_R2_Msk         (0xFFul << PICOP_R23R20_R2_Pos)
905 #define PICOP_R23R20_R2(value)      (PICOP_R23R20_R2_Msk & ((value) << PICOP_R23R20_R2_Pos))
906 #define PICOP_R23R20_R3_Pos         24           /**< \brief (PICOP_R23R20) Register 3 */
907 #define PICOP_R23R20_R3_Msk         (0xFFul << PICOP_R23R20_R3_Pos)
908 #define PICOP_R23R20_R3(value)      (PICOP_R23R20_R3_Msk & ((value) << PICOP_R23R20_R3_Pos))
909 #define PICOP_R23R20_MASK           0xFFFFFFFFul /**< \brief (PICOP_R23R20) MASK Register */
910 
911 /* -------- PICOP_R27R24 : (PICOP Offset: 0x098) (R/W 32) R27 to 24: XH, XL, R25, R24 -------- */
912 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
913 typedef union {
914   struct {
915     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
916     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
917     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
918     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
919   } bit;                       /*!< Structure used for bit  access                  */
920   uint32_t reg;                /*!< Type      used for register access              */
921 } PICOP_R27R24_Type;
922 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
923 
924 #define PICOP_R27R24_OFFSET         0x098        /**< \brief (PICOP_R27R24 offset) R27 to 24: XH, XL, R25, R24 */
925 
926 #define PICOP_R27R24_R0_Pos         0            /**< \brief (PICOP_R27R24) Register 0 */
927 #define PICOP_R27R24_R0_Msk         (0xFFul << PICOP_R27R24_R0_Pos)
928 #define PICOP_R27R24_R0(value)      (PICOP_R27R24_R0_Msk & ((value) << PICOP_R27R24_R0_Pos))
929 #define PICOP_R27R24_R1_Pos         8            /**< \brief (PICOP_R27R24) Register 1 */
930 #define PICOP_R27R24_R1_Msk         (0xFFul << PICOP_R27R24_R1_Pos)
931 #define PICOP_R27R24_R1(value)      (PICOP_R27R24_R1_Msk & ((value) << PICOP_R27R24_R1_Pos))
932 #define PICOP_R27R24_R2_Pos         16           /**< \brief (PICOP_R27R24) Register 2 */
933 #define PICOP_R27R24_R2_Msk         (0xFFul << PICOP_R27R24_R2_Pos)
934 #define PICOP_R27R24_R2(value)      (PICOP_R27R24_R2_Msk & ((value) << PICOP_R27R24_R2_Pos))
935 #define PICOP_R27R24_R3_Pos         24           /**< \brief (PICOP_R27R24) Register 3 */
936 #define PICOP_R27R24_R3_Msk         (0xFFul << PICOP_R27R24_R3_Pos)
937 #define PICOP_R27R24_R3(value)      (PICOP_R27R24_R3_Msk & ((value) << PICOP_R27R24_R3_Pos))
938 #define PICOP_R27R24_MASK           0xFFFFFFFFul /**< \brief (PICOP_R27R24) MASK Register */
939 
940 /* -------- PICOP_R31R28 : (PICOP Offset: 0x09C) (R/W 32) R31 to 28: ZH, ZL, YH, YL -------- */
941 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
942 typedef union {
943   struct {
944     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
945     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
946     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
947     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
948   } bit;                       /*!< Structure used for bit  access                  */
949   uint32_t reg;                /*!< Type      used for register access              */
950 } PICOP_R31R28_Type;
951 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
952 
953 #define PICOP_R31R28_OFFSET         0x09C        /**< \brief (PICOP_R31R28 offset) R31 to 28: ZH, ZL, YH, YL */
954 
955 #define PICOP_R31R28_R0_Pos         0            /**< \brief (PICOP_R31R28) Register 0 */
956 #define PICOP_R31R28_R0_Msk         (0xFFul << PICOP_R31R28_R0_Pos)
957 #define PICOP_R31R28_R0(value)      (PICOP_R31R28_R0_Msk & ((value) << PICOP_R31R28_R0_Pos))
958 #define PICOP_R31R28_R1_Pos         8            /**< \brief (PICOP_R31R28) Register 1 */
959 #define PICOP_R31R28_R1_Msk         (0xFFul << PICOP_R31R28_R1_Pos)
960 #define PICOP_R31R28_R1(value)      (PICOP_R31R28_R1_Msk & ((value) << PICOP_R31R28_R1_Pos))
961 #define PICOP_R31R28_R2_Pos         16           /**< \brief (PICOP_R31R28) Register 2 */
962 #define PICOP_R31R28_R2_Msk         (0xFFul << PICOP_R31R28_R2_Pos)
963 #define PICOP_R31R28_R2(value)      (PICOP_R31R28_R2_Msk & ((value) << PICOP_R31R28_R2_Pos))
964 #define PICOP_R31R28_R3_Pos         24           /**< \brief (PICOP_R31R28) Register 3 */
965 #define PICOP_R31R28_R3_Msk         (0xFFul << PICOP_R31R28_R3_Pos)
966 #define PICOP_R31R28_R3(value)      (PICOP_R31R28_R3_Msk & ((value) << PICOP_R31R28_R3_Pos))
967 #define PICOP_R31R28_MASK           0xFFFFFFFFul /**< \brief (PICOP_R31R28) MASK Register */
968 
969 /* -------- PICOP_S1S0 : (PICOP Offset: 0x0A0) (R/W 32) System Regs 1 to 0: SR -------- */
970 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
971 typedef union {
972   struct {
973     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
974     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
975     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
976     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
977   } bit;                       /*!< Structure used for bit  access                  */
978   uint32_t reg;                /*!< Type      used for register access              */
979 } PICOP_S1S0_Type;
980 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
981 
982 #define PICOP_S1S0_OFFSET           0x0A0        /**< \brief (PICOP_S1S0 offset) System Regs 1 to 0: SR */
983 
984 #define PICOP_S1S0_R0_Pos           0            /**< \brief (PICOP_S1S0) Register 0 */
985 #define PICOP_S1S0_R0_Msk           (0xFFul << PICOP_S1S0_R0_Pos)
986 #define PICOP_S1S0_R0(value)        (PICOP_S1S0_R0_Msk & ((value) << PICOP_S1S0_R0_Pos))
987 #define PICOP_S1S0_R1_Pos           8            /**< \brief (PICOP_S1S0) Register 1 */
988 #define PICOP_S1S0_R1_Msk           (0xFFul << PICOP_S1S0_R1_Pos)
989 #define PICOP_S1S0_R1(value)        (PICOP_S1S0_R1_Msk & ((value) << PICOP_S1S0_R1_Pos))
990 #define PICOP_S1S0_R2_Pos           16           /**< \brief (PICOP_S1S0) Register 2 */
991 #define PICOP_S1S0_R2_Msk           (0xFFul << PICOP_S1S0_R2_Pos)
992 #define PICOP_S1S0_R2(value)        (PICOP_S1S0_R2_Msk & ((value) << PICOP_S1S0_R2_Pos))
993 #define PICOP_S1S0_R3_Pos           24           /**< \brief (PICOP_S1S0) Register 3 */
994 #define PICOP_S1S0_R3_Msk           (0xFFul << PICOP_S1S0_R3_Pos)
995 #define PICOP_S1S0_R3(value)        (PICOP_S1S0_R3_Msk & ((value) << PICOP_S1S0_R3_Pos))
996 #define PICOP_S1S0_MASK             0xFFFFFFFFul /**< \brief (PICOP_S1S0) MASK Register */
997 
998 /* -------- PICOP_S3S2 : (PICOP Offset: 0x0A4) (R/W 32) System Regs 3 to 2: CTRL -------- */
999 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1000 typedef union {
1001   struct {
1002     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
1003     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
1004     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
1005     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
1006   } bit;                       /*!< Structure used for bit  access                  */
1007   uint32_t reg;                /*!< Type      used for register access              */
1008 } PICOP_S3S2_Type;
1009 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1010 
1011 #define PICOP_S3S2_OFFSET           0x0A4        /**< \brief (PICOP_S3S2 offset) System Regs 3 to 2: CTRL */
1012 
1013 #define PICOP_S3S2_R0_Pos           0            /**< \brief (PICOP_S3S2) Register 0 */
1014 #define PICOP_S3S2_R0_Msk           (0xFFul << PICOP_S3S2_R0_Pos)
1015 #define PICOP_S3S2_R0(value)        (PICOP_S3S2_R0_Msk & ((value) << PICOP_S3S2_R0_Pos))
1016 #define PICOP_S3S2_R1_Pos           8            /**< \brief (PICOP_S3S2) Register 1 */
1017 #define PICOP_S3S2_R1_Msk           (0xFFul << PICOP_S3S2_R1_Pos)
1018 #define PICOP_S3S2_R1(value)        (PICOP_S3S2_R1_Msk & ((value) << PICOP_S3S2_R1_Pos))
1019 #define PICOP_S3S2_R2_Pos           16           /**< \brief (PICOP_S3S2) Register 2 */
1020 #define PICOP_S3S2_R2_Msk           (0xFFul << PICOP_S3S2_R2_Pos)
1021 #define PICOP_S3S2_R2(value)        (PICOP_S3S2_R2_Msk & ((value) << PICOP_S3S2_R2_Pos))
1022 #define PICOP_S3S2_R3_Pos           24           /**< \brief (PICOP_S3S2) Register 3 */
1023 #define PICOP_S3S2_R3_Msk           (0xFFul << PICOP_S3S2_R3_Pos)
1024 #define PICOP_S3S2_R3(value)        (PICOP_S3S2_R3_Msk & ((value) << PICOP_S3S2_R3_Pos))
1025 #define PICOP_S3S2_MASK             0xFFFFFFFFul /**< \brief (PICOP_S3S2) MASK Register */
1026 
1027 /* -------- PICOP_S5S4 : (PICOP Offset: 0x0A8) (R/W 32) System Regs 5 to 4: SREG, CCR -------- */
1028 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1029 typedef union {
1030   struct {
1031     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
1032     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
1033     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
1034     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
1035   } bit;                       /*!< Structure used for bit  access                  */
1036   uint32_t reg;                /*!< Type      used for register access              */
1037 } PICOP_S5S4_Type;
1038 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1039 
1040 #define PICOP_S5S4_OFFSET           0x0A8        /**< \brief (PICOP_S5S4 offset) System Regs 5 to 4: SREG, CCR */
1041 
1042 #define PICOP_S5S4_R0_Pos           0            /**< \brief (PICOP_S5S4) Register 0 */
1043 #define PICOP_S5S4_R0_Msk           (0xFFul << PICOP_S5S4_R0_Pos)
1044 #define PICOP_S5S4_R0(value)        (PICOP_S5S4_R0_Msk & ((value) << PICOP_S5S4_R0_Pos))
1045 #define PICOP_S5S4_R1_Pos           8            /**< \brief (PICOP_S5S4) Register 1 */
1046 #define PICOP_S5S4_R1_Msk           (0xFFul << PICOP_S5S4_R1_Pos)
1047 #define PICOP_S5S4_R1(value)        (PICOP_S5S4_R1_Msk & ((value) << PICOP_S5S4_R1_Pos))
1048 #define PICOP_S5S4_R2_Pos           16           /**< \brief (PICOP_S5S4) Register 2 */
1049 #define PICOP_S5S4_R2_Msk           (0xFFul << PICOP_S5S4_R2_Pos)
1050 #define PICOP_S5S4_R2(value)        (PICOP_S5S4_R2_Msk & ((value) << PICOP_S5S4_R2_Pos))
1051 #define PICOP_S5S4_R3_Pos           24           /**< \brief (PICOP_S5S4) Register 3 */
1052 #define PICOP_S5S4_R3_Msk           (0xFFul << PICOP_S5S4_R3_Pos)
1053 #define PICOP_S5S4_R3(value)        (PICOP_S5S4_R3_Msk & ((value) << PICOP_S5S4_R3_Pos))
1054 #define PICOP_S5S4_MASK             0xFFFFFFFFul /**< \brief (PICOP_S5S4) MASK Register */
1055 
1056 /* -------- PICOP_S11S10 : (PICOP Offset: 0x0B4) (R/W 32) System Regs 11 to 10: Immediate -------- */
1057 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1058 typedef union {
1059   struct {
1060     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
1061     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
1062     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
1063     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
1064   } bit;                       /*!< Structure used for bit  access                  */
1065   uint32_t reg;                /*!< Type      used for register access              */
1066 } PICOP_S11S10_Type;
1067 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1068 
1069 #define PICOP_S11S10_OFFSET         0x0B4        /**< \brief (PICOP_S11S10 offset) System Regs 11 to 10: Immediate */
1070 
1071 #define PICOP_S11S10_R0_Pos         0            /**< \brief (PICOP_S11S10) Register 0 */
1072 #define PICOP_S11S10_R0_Msk         (0xFFul << PICOP_S11S10_R0_Pos)
1073 #define PICOP_S11S10_R0(value)      (PICOP_S11S10_R0_Msk & ((value) << PICOP_S11S10_R0_Pos))
1074 #define PICOP_S11S10_R1_Pos         8            /**< \brief (PICOP_S11S10) Register 1 */
1075 #define PICOP_S11S10_R1_Msk         (0xFFul << PICOP_S11S10_R1_Pos)
1076 #define PICOP_S11S10_R1(value)      (PICOP_S11S10_R1_Msk & ((value) << PICOP_S11S10_R1_Pos))
1077 #define PICOP_S11S10_R2_Pos         16           /**< \brief (PICOP_S11S10) Register 2 */
1078 #define PICOP_S11S10_R2_Msk         (0xFFul << PICOP_S11S10_R2_Pos)
1079 #define PICOP_S11S10_R2(value)      (PICOP_S11S10_R2_Msk & ((value) << PICOP_S11S10_R2_Pos))
1080 #define PICOP_S11S10_R3_Pos         24           /**< \brief (PICOP_S11S10) Register 3 */
1081 #define PICOP_S11S10_R3_Msk         (0xFFul << PICOP_S11S10_R3_Pos)
1082 #define PICOP_S11S10_R3(value)      (PICOP_S11S10_R3_Msk & ((value) << PICOP_S11S10_R3_Pos))
1083 #define PICOP_S11S10_MASK           0xFFFFFFFFul /**< \brief (PICOP_S11S10) MASK Register */
1084 
1085 /* -------- PICOP_LINK : (PICOP Offset: 0x0B8) (R/W 32) Link -------- */
1086 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1087 typedef union {
1088   uint32_t reg;                /*!< Type      used for register access              */
1089 } PICOP_LINK_Type;
1090 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1091 
1092 #define PICOP_LINK_OFFSET           0x0B8        /**< \brief (PICOP_LINK offset) Link */
1093 #define PICOP_LINK_MASK             0xFFFFFFFFul /**< \brief (PICOP_LINK) MASK Register */
1094 
1095 /* -------- PICOP_SP : (PICOP Offset: 0x0BC) (R/W 32) Stack Pointer -------- */
1096 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1097 typedef union {
1098   struct {
1099     uint32_t R0:8;             /*!< bit:  0.. 7  Register 0                         */
1100     uint32_t R1:8;             /*!< bit:  8..15  Register 1                         */
1101     uint32_t R2:8;             /*!< bit: 16..23  Register 2                         */
1102     uint32_t R3:8;             /*!< bit: 24..31  Register 3                         */
1103   } bit;                       /*!< Structure used for bit  access                  */
1104   uint32_t reg;                /*!< Type      used for register access              */
1105 } PICOP_SP_Type;
1106 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1107 
1108 #define PICOP_SP_OFFSET             0x0BC        /**< \brief (PICOP_SP offset) Stack Pointer */
1109 
1110 #define PICOP_SP_R0_Pos             0            /**< \brief (PICOP_SP) Register 0 */
1111 #define PICOP_SP_R0_Msk             (0xFFul << PICOP_SP_R0_Pos)
1112 #define PICOP_SP_R0(value)          (PICOP_SP_R0_Msk & ((value) << PICOP_SP_R0_Pos))
1113 #define PICOP_SP_R1_Pos             8            /**< \brief (PICOP_SP) Register 1 */
1114 #define PICOP_SP_R1_Msk             (0xFFul << PICOP_SP_R1_Pos)
1115 #define PICOP_SP_R1(value)          (PICOP_SP_R1_Msk & ((value) << PICOP_SP_R1_Pos))
1116 #define PICOP_SP_R2_Pos             16           /**< \brief (PICOP_SP) Register 2 */
1117 #define PICOP_SP_R2_Msk             (0xFFul << PICOP_SP_R2_Pos)
1118 #define PICOP_SP_R2(value)          (PICOP_SP_R2_Msk & ((value) << PICOP_SP_R2_Pos))
1119 #define PICOP_SP_R3_Pos             24           /**< \brief (PICOP_SP) Register 3 */
1120 #define PICOP_SP_R3_Msk             (0xFFul << PICOP_SP_R3_Pos)
1121 #define PICOP_SP_R3(value)          (PICOP_SP_R3_Msk & ((value) << PICOP_SP_R3_Pos))
1122 #define PICOP_SP_MASK               0xFFFFFFFFul /**< \brief (PICOP_SP) MASK Register */
1123 
1124 /* -------- PICOP_MMUFLASH : (PICOP Offset: 0x100) (R/W 32) MMU mapping for flash -------- */
1125 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1126 typedef union {
1127   struct {
1128     uint32_t ADDRESS:4;        /*!< bit:  0.. 3  MMU Flash Address                  */
1129     uint32_t :28;              /*!< bit:  4..31  Reserved                           */
1130   } bit;                       /*!< Structure used for bit  access                  */
1131   uint32_t reg;                /*!< Type      used for register access              */
1132 } PICOP_MMUFLASH_Type;
1133 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1134 
1135 #define PICOP_MMUFLASH_OFFSET       0x100        /**< \brief (PICOP_MMUFLASH offset) MMU mapping for flash */
1136 #define PICOP_MMUFLASH_RESETVALUE   0x00000000ul /**< \brief (PICOP_MMUFLASH reset_value) MMU mapping for flash */
1137 
1138 #define PICOP_MMUFLASH_ADDRESS_Pos  0            /**< \brief (PICOP_MMUFLASH) MMU Flash Address */
1139 #define PICOP_MMUFLASH_ADDRESS_Msk  (0xFul << PICOP_MMUFLASH_ADDRESS_Pos)
1140 #define PICOP_MMUFLASH_ADDRESS(value) (PICOP_MMUFLASH_ADDRESS_Msk & ((value) << PICOP_MMUFLASH_ADDRESS_Pos))
1141 #define PICOP_MMUFLASH_MASK         0x0000000Ful /**< \brief (PICOP_MMUFLASH) MASK Register */
1142 
1143 /* -------- PICOP_MMU0 : (PICOP Offset: 0x118) (R/W 32) MMU mapping user 0 -------- */
1144 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1145 typedef union {
1146   struct {
1147     uint32_t ADDRESS:32;       /*!< bit:  0..31  MMU User 0 Address                 */
1148   } bit;                       /*!< Structure used for bit  access                  */
1149   uint32_t reg;                /*!< Type      used for register access              */
1150 } PICOP_MMU0_Type;
1151 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1152 
1153 #define PICOP_MMU0_OFFSET           0x118        /**< \brief (PICOP_MMU0 offset) MMU mapping user 0 */
1154 #define PICOP_MMU0_RESETVALUE       0x00000000ul /**< \brief (PICOP_MMU0 reset_value) MMU mapping user 0 */
1155 
1156 #define PICOP_MMU0_ADDRESS_Pos      0            /**< \brief (PICOP_MMU0) MMU User 0 Address */
1157 #define PICOP_MMU0_ADDRESS_Msk      (0xFFFFFFFFul << PICOP_MMU0_ADDRESS_Pos)
1158 #define PICOP_MMU0_ADDRESS(value)   (PICOP_MMU0_ADDRESS_Msk & ((value) << PICOP_MMU0_ADDRESS_Pos))
1159 #define PICOP_MMU0_MASK             0xFFFFFFFFul /**< \brief (PICOP_MMU0) MASK Register */
1160 
1161 /* -------- PICOP_MMU1 : (PICOP Offset: 0x11C) (R/W 32) MMU mapping user 1 -------- */
1162 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1163 typedef union {
1164   struct {
1165     uint32_t ADDRESS:32;       /*!< bit:  0..31  MMU User 1 Address                 */
1166   } bit;                       /*!< Structure used for bit  access                  */
1167   uint32_t reg;                /*!< Type      used for register access              */
1168 } PICOP_MMU1_Type;
1169 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1170 
1171 #define PICOP_MMU1_OFFSET           0x11C        /**< \brief (PICOP_MMU1 offset) MMU mapping user 1 */
1172 #define PICOP_MMU1_RESETVALUE       0x00000000ul /**< \brief (PICOP_MMU1 reset_value) MMU mapping user 1 */
1173 
1174 #define PICOP_MMU1_ADDRESS_Pos      0            /**< \brief (PICOP_MMU1) MMU User 1 Address */
1175 #define PICOP_MMU1_ADDRESS_Msk      (0xFFFFFFFFul << PICOP_MMU1_ADDRESS_Pos)
1176 #define PICOP_MMU1_ADDRESS(value)   (PICOP_MMU1_ADDRESS_Msk & ((value) << PICOP_MMU1_ADDRESS_Pos))
1177 #define PICOP_MMU1_MASK             0xFFFFFFFFul /**< \brief (PICOP_MMU1) MASK Register */
1178 
1179 /* -------- PICOP_MMUCTRL : (PICOP Offset: 0x120) (R/W 32) MMU Control -------- */
1180 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1181 typedef union {
1182   struct {
1183     uint32_t IODIS:1;          /*!< bit:      0  Peripheral MMU Disable             */
1184     uint32_t MEMDIS:1;         /*!< bit:      1  Memory MMU Disable                 */
1185     uint32_t :30;              /*!< bit:  2..31  Reserved                           */
1186   } bit;                       /*!< Structure used for bit  access                  */
1187   uint32_t reg;                /*!< Type      used for register access              */
1188 } PICOP_MMUCTRL_Type;
1189 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1190 
1191 #define PICOP_MMUCTRL_OFFSET        0x120        /**< \brief (PICOP_MMUCTRL offset) MMU Control */
1192 #define PICOP_MMUCTRL_RESETVALUE    0x00000000ul /**< \brief (PICOP_MMUCTRL reset_value) MMU Control */
1193 
1194 #define PICOP_MMUCTRL_IODIS_Pos     0            /**< \brief (PICOP_MMUCTRL) Peripheral MMU Disable */
1195 #define PICOP_MMUCTRL_IODIS         (0x1ul << PICOP_MMUCTRL_IODIS_Pos)
1196 #define PICOP_MMUCTRL_MEMDIS_Pos    1            /**< \brief (PICOP_MMUCTRL) Memory MMU Disable */
1197 #define PICOP_MMUCTRL_MEMDIS        (0x1ul << PICOP_MMUCTRL_MEMDIS_Pos)
1198 #define PICOP_MMUCTRL_MASK          0x00000003ul /**< \brief (PICOP_MMUCTRL) MASK Register */
1199 
1200 /* -------- PICOP_ICACHE : (PICOP Offset: 0x180) (R/W 32) Instruction Cache Control -------- */
1201 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1202 typedef union {
1203   struct {
1204     uint32_t CTRL:2;           /*!< bit:  0.. 1  Instruction Cache Control          */
1205     uint32_t :30;              /*!< bit:  2..31  Reserved                           */
1206   } bit;                       /*!< Structure used for bit  access                  */
1207   uint32_t reg;                /*!< Type      used for register access              */
1208 } PICOP_ICACHE_Type;
1209 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1210 
1211 #define PICOP_ICACHE_OFFSET         0x180        /**< \brief (PICOP_ICACHE offset) Instruction Cache Control */
1212 #define PICOP_ICACHE_RESETVALUE     0x00000000ul /**< \brief (PICOP_ICACHE reset_value) Instruction Cache Control */
1213 
1214 #define PICOP_ICACHE_CTRL_Pos       0            /**< \brief (PICOP_ICACHE) Instruction Cache Control */
1215 #define PICOP_ICACHE_CTRL_Msk       (0x3ul << PICOP_ICACHE_CTRL_Pos)
1216 #define PICOP_ICACHE_CTRL(value)    (PICOP_ICACHE_CTRL_Msk & ((value) << PICOP_ICACHE_CTRL_Pos))
1217 #define PICOP_ICACHE_MASK           0x00000003ul /**< \brief (PICOP_ICACHE) MASK Register */
1218 
1219 /* -------- PICOP_ICACHELRU : (PICOP Offset: 0x184) (R/W 32) Instruction Cache LRU -------- */
1220 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1221 typedef union {
1222   struct {
1223     uint32_t LRU0:2;           /*!< bit:  0.. 1  Instruction Cache LRU 0            */
1224     uint32_t LRU1:2;           /*!< bit:  2.. 3  Instruction Cache LRU 1            */
1225     uint32_t LRU2:2;           /*!< bit:  4.. 5  Instruction Cache LRU 2            */
1226     uint32_t LRU3:2;           /*!< bit:  6.. 7  Instruction Cache LRU 3            */
1227     uint32_t :24;              /*!< bit:  8..31  Reserved                           */
1228   } bit;                       /*!< Structure used for bit  access                  */
1229   uint32_t reg;                /*!< Type      used for register access              */
1230 } PICOP_ICACHELRU_Type;
1231 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1232 
1233 #define PICOP_ICACHELRU_OFFSET      0x184        /**< \brief (PICOP_ICACHELRU offset) Instruction Cache LRU */
1234 #define PICOP_ICACHELRU_RESETVALUE  0x00000000ul /**< \brief (PICOP_ICACHELRU reset_value) Instruction Cache LRU */
1235 
1236 #define PICOP_ICACHELRU_LRU0_Pos    0            /**< \brief (PICOP_ICACHELRU) Instruction Cache LRU 0 */
1237 #define PICOP_ICACHELRU_LRU0_Msk    (0x3ul << PICOP_ICACHELRU_LRU0_Pos)
1238 #define PICOP_ICACHELRU_LRU0(value) (PICOP_ICACHELRU_LRU0_Msk & ((value) << PICOP_ICACHELRU_LRU0_Pos))
1239 #define PICOP_ICACHELRU_LRU1_Pos    2            /**< \brief (PICOP_ICACHELRU) Instruction Cache LRU 1 */
1240 #define PICOP_ICACHELRU_LRU1_Msk    (0x3ul << PICOP_ICACHELRU_LRU1_Pos)
1241 #define PICOP_ICACHELRU_LRU1(value) (PICOP_ICACHELRU_LRU1_Msk & ((value) << PICOP_ICACHELRU_LRU1_Pos))
1242 #define PICOP_ICACHELRU_LRU2_Pos    4            /**< \brief (PICOP_ICACHELRU) Instruction Cache LRU 2 */
1243 #define PICOP_ICACHELRU_LRU2_Msk    (0x3ul << PICOP_ICACHELRU_LRU2_Pos)
1244 #define PICOP_ICACHELRU_LRU2(value) (PICOP_ICACHELRU_LRU2_Msk & ((value) << PICOP_ICACHELRU_LRU2_Pos))
1245 #define PICOP_ICACHELRU_LRU3_Pos    6            /**< \brief (PICOP_ICACHELRU) Instruction Cache LRU 3 */
1246 #define PICOP_ICACHELRU_LRU3_Msk    (0x3ul << PICOP_ICACHELRU_LRU3_Pos)
1247 #define PICOP_ICACHELRU_LRU3(value) (PICOP_ICACHELRU_LRU3_Msk & ((value) << PICOP_ICACHELRU_LRU3_Pos))
1248 #define PICOP_ICACHELRU_MASK        0x000000FFul /**< \brief (PICOP_ICACHELRU) MASK Register */
1249 
1250 /* -------- PICOP_QOSCTRL : (PICOP Offset: 0x200) (R/W 32) QOS Control -------- */
1251 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1252 typedef union {
1253   struct {
1254     uint32_t QOS:2;            /*!< bit:  0.. 1  Quality of Service                 */
1255     uint32_t :30;              /*!< bit:  2..31  Reserved                           */
1256   } bit;                       /*!< Structure used for bit  access                  */
1257   uint32_t reg;                /*!< Type      used for register access              */
1258 } PICOP_QOSCTRL_Type;
1259 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1260 
1261 #define PICOP_QOSCTRL_OFFSET        0x200        /**< \brief (PICOP_QOSCTRL offset) QOS Control */
1262 
1263 #define PICOP_QOSCTRL_QOS_Pos       0            /**< \brief (PICOP_QOSCTRL) Quality of Service */
1264 #define PICOP_QOSCTRL_QOS_Msk       (0x3ul << PICOP_QOSCTRL_QOS_Pos)
1265 #define PICOP_QOSCTRL_QOS(value)    (PICOP_QOSCTRL_QOS_Msk & ((value) << PICOP_QOSCTRL_QOS_Pos))
1266 #define PICOP_QOSCTRL_MASK          0x00000003ul /**< \brief (PICOP_QOSCTRL) MASK Register */
1267 
1268 /** \brief PICOP hardware registers */
1269 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1270 typedef struct {
1271   __IO PICOP_ID_Type             ID[8];       /**< \brief Offset: 0x000 (R/W 32) ID n */
1272   __IO PICOP_CONFIG_Type         CONFIG;      /**< \brief Offset: 0x020 (R/W 32) Configuration */
1273   __IO PICOP_CTRL_Type           CTRL;        /**< \brief Offset: 0x024 (R/W 32) Control */
1274   __IO PICOP_CMD_Type            CMD;         /**< \brief Offset: 0x028 (R/W 32) Command */
1275   __IO PICOP_PC_Type             PC;          /**< \brief Offset: 0x02C (R/W 32) Program Counter */
1276   __IO PICOP_HF_Type             HF;          /**< \brief Offset: 0x030 (R/W 32) Host Flags */
1277   __IO PICOP_HFCTRL_Type         HFCTRL;      /**< \brief Offset: 0x034 (R/W 32) Host Flag Control */
1278   __IO PICOP_HFSETCLR0_Type      HFSETCLR0;   /**< \brief Offset: 0x038 (R/W 32) Host Flags Set/Clr */
1279   __IO PICOP_HFSETCLR1_Type      HFSETCLR1;   /**< \brief Offset: 0x03C (R/W 32) Host Flags Set/Clr */
1280        RoReg8                    Reserved1[0x10];
1281   __IO PICOP_OCDCONFIG_Type      OCDCONFIG;   /**< \brief Offset: 0x050 (R/W 32) OCD Configuration */
1282   __IO PICOP_OCDCONTROL_Type     OCDCONTROL;  /**< \brief Offset: 0x054 (R/W 32) OCD Control */
1283   __IO PICOP_OCDSTATUS_Type      OCDSTATUS;   /**< \brief Offset: 0x058 (R/W 32) OCD Status and Command */
1284   __IO PICOP_OCDPC_Type          OCDPC;       /**< \brief Offset: 0x05C (R/W 32) ODC Program Counter */
1285   __IO PICOP_OCDFEAT_Type        OCDFEAT;     /**< \brief Offset: 0x060 (R/W 32) OCD Features */
1286        RoReg8                    Reserved2[0x4];
1287   __IO PICOP_OCDCCNT_Type        OCDCCNT;     /**< \brief Offset: 0x068 (R/W 32) OCD Cycle Counter */
1288        RoReg8                    Reserved3[0x4];
1289   __IO PICOP_OCDBPGEN_Type       OCDBPGEN[4]; /**< \brief Offset: 0x070 (R/W 32) OCD Breakpoint Generator n */
1290   __IO PICOP_R3R0_Type           R3R0;        /**< \brief Offset: 0x080 (R/W 32) R3 to 0 */
1291   __IO PICOP_R7R4_Type           R7R4;        /**< \brief Offset: 0x084 (R/W 32) R7 to 4 */
1292   __IO PICOP_R11R8_Type          R11R8;       /**< \brief Offset: 0x088 (R/W 32) R11 to 8 */
1293   __IO PICOP_R15R12_Type         R15R12;      /**< \brief Offset: 0x08C (R/W 32) R15 to 12 */
1294   __IO PICOP_R19R16_Type         R19R16;      /**< \brief Offset: 0x090 (R/W 32) R19 to 16 */
1295   __IO PICOP_R23R20_Type         R23R20;      /**< \brief Offset: 0x094 (R/W 32) R23 to 20 */
1296   __IO PICOP_R27R24_Type         R27R24;      /**< \brief Offset: 0x098 (R/W 32) R27 to 24: XH, XL, R25, R24 */
1297   __IO PICOP_R31R28_Type         R31R28;      /**< \brief Offset: 0x09C (R/W 32) R31 to 28: ZH, ZL, YH, YL */
1298   __IO PICOP_S1S0_Type           S1S0;        /**< \brief Offset: 0x0A0 (R/W 32) System Regs 1 to 0: SR */
1299   __IO PICOP_S3S2_Type           S3S2;        /**< \brief Offset: 0x0A4 (R/W 32) System Regs 3 to 2: CTRL */
1300   __IO PICOP_S5S4_Type           S5S4;        /**< \brief Offset: 0x0A8 (R/W 32) System Regs 5 to 4: SREG, CCR */
1301        RoReg8                    Reserved4[0x8];
1302   __IO PICOP_S11S10_Type         S11S10;      /**< \brief Offset: 0x0B4 (R/W 32) System Regs 11 to 10: Immediate */
1303   __IO PICOP_LINK_Type           LINK;        /**< \brief Offset: 0x0B8 (R/W 32) Link */
1304   __IO PICOP_SP_Type             SP;          /**< \brief Offset: 0x0BC (R/W 32) Stack Pointer */
1305        RoReg8                    Reserved5[0x40];
1306   __IO PICOP_MMUFLASH_Type       MMUFLASH;    /**< \brief Offset: 0x100 (R/W 32) MMU mapping for flash */
1307        RoReg8                    Reserved6[0x14];
1308   __IO PICOP_MMU0_Type           MMU0;        /**< \brief Offset: 0x118 (R/W 32) MMU mapping user 0 */
1309   __IO PICOP_MMU1_Type           MMU1;        /**< \brief Offset: 0x11C (R/W 32) MMU mapping user 1 */
1310   __IO PICOP_MMUCTRL_Type        MMUCTRL;     /**< \brief Offset: 0x120 (R/W 32) MMU Control */
1311        RoReg8                    Reserved7[0x5C];
1312   __IO PICOP_ICACHE_Type         ICACHE;      /**< \brief Offset: 0x180 (R/W 32) Instruction Cache Control */
1313   __IO PICOP_ICACHELRU_Type      ICACHELRU;   /**< \brief Offset: 0x184 (R/W 32) Instruction Cache LRU */
1314        RoReg8                    Reserved8[0x78];
1315   __IO PICOP_QOSCTRL_Type        QOSCTRL;     /**< \brief Offset: 0x200 (R/W 32) QOS Control */
1316 } Picop;
1317 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1318 
1319 /*@}*/
1320 
1321 #endif /* _SAME54_PICOP_COMPONENT_ */
1322