1 // THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT
2 
3 /**
4  * Copyright (c) 2024 Raspberry Pi Ltd.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  */
8 // =============================================================================
9 // Register block : SIO
10 // Version        : 1
11 // Bus type       : apb
12 // Description    : Single-cycle IO block
13 //                  Provides core-local and inter-core hardware for the two
14 //                  processors, with single-cycle access.
15 // =============================================================================
16 #ifndef _HARDWARE_REGS_SIO_H
17 #define _HARDWARE_REGS_SIO_H
18 // =============================================================================
19 // Register    : SIO_CPUID
20 // Description : Processor core identifier
21 //               Value is 0 when read from processor core 0, and 1 when read
22 //               from processor core 1.
23 #define SIO_CPUID_OFFSET _u(0x00000000)
24 #define SIO_CPUID_BITS   _u(0xffffffff)
25 #define SIO_CPUID_RESET  "-"
26 #define SIO_CPUID_MSB    _u(31)
27 #define SIO_CPUID_LSB    _u(0)
28 #define SIO_CPUID_ACCESS "RO"
29 // =============================================================================
30 // Register    : SIO_GPIO_IN
31 // Description : Input value for GPIO pins
32 //               Input value for GPIO0...29
33 #define SIO_GPIO_IN_OFFSET _u(0x00000004)
34 #define SIO_GPIO_IN_BITS   _u(0x3fffffff)
35 #define SIO_GPIO_IN_RESET  _u(0x00000000)
36 #define SIO_GPIO_IN_MSB    _u(29)
37 #define SIO_GPIO_IN_LSB    _u(0)
38 #define SIO_GPIO_IN_ACCESS "RO"
39 // =============================================================================
40 // Register    : SIO_GPIO_HI_IN
41 // Description : Input value for QSPI pins
42 //               Input value on QSPI IO in order 0..5: SCLK, SSn, SD0, SD1, SD2,
43 //               SD3
44 #define SIO_GPIO_HI_IN_OFFSET _u(0x00000008)
45 #define SIO_GPIO_HI_IN_BITS   _u(0x0000003f)
46 #define SIO_GPIO_HI_IN_RESET  _u(0x00000000)
47 #define SIO_GPIO_HI_IN_MSB    _u(5)
48 #define SIO_GPIO_HI_IN_LSB    _u(0)
49 #define SIO_GPIO_HI_IN_ACCESS "RO"
50 // =============================================================================
51 // Register    : SIO_GPIO_OUT
52 // Description : GPIO output value
53 //               Set output level (1/0 -> high/low) for GPIO0...29.
54 //               Reading back gives the last value written, NOT the input value
55 //               from the pins.
56 //               If core 0 and core 1 both write to GPIO_OUT simultaneously (or
57 //               to a SET/CLR/XOR alias),
58 //               the result is as though the write from core 0 took place first,
59 //               and the write from core 1 was then applied to that intermediate
60 //               result.
61 #define SIO_GPIO_OUT_OFFSET _u(0x00000010)
62 #define SIO_GPIO_OUT_BITS   _u(0x3fffffff)
63 #define SIO_GPIO_OUT_RESET  _u(0x00000000)
64 #define SIO_GPIO_OUT_MSB    _u(29)
65 #define SIO_GPIO_OUT_LSB    _u(0)
66 #define SIO_GPIO_OUT_ACCESS "RW"
67 // =============================================================================
68 // Register    : SIO_GPIO_OUT_SET
69 // Description : GPIO output value set
70 //               Perform an atomic bit-set on GPIO_OUT, i.e. `GPIO_OUT |= wdata`
71 #define SIO_GPIO_OUT_SET_OFFSET _u(0x00000014)
72 #define SIO_GPIO_OUT_SET_BITS   _u(0x3fffffff)
73 #define SIO_GPIO_OUT_SET_RESET  _u(0x00000000)
74 #define SIO_GPIO_OUT_SET_MSB    _u(29)
75 #define SIO_GPIO_OUT_SET_LSB    _u(0)
76 #define SIO_GPIO_OUT_SET_ACCESS "WO"
77 // =============================================================================
78 // Register    : SIO_GPIO_OUT_CLR
79 // Description : GPIO output value clear
80 //               Perform an atomic bit-clear on GPIO_OUT, i.e. `GPIO_OUT &=
81 //               ~wdata`
82 #define SIO_GPIO_OUT_CLR_OFFSET _u(0x00000018)
83 #define SIO_GPIO_OUT_CLR_BITS   _u(0x3fffffff)
84 #define SIO_GPIO_OUT_CLR_RESET  _u(0x00000000)
85 #define SIO_GPIO_OUT_CLR_MSB    _u(29)
86 #define SIO_GPIO_OUT_CLR_LSB    _u(0)
87 #define SIO_GPIO_OUT_CLR_ACCESS "WO"
88 // =============================================================================
89 // Register    : SIO_GPIO_OUT_XOR
90 // Description : GPIO output value XOR
91 //               Perform an atomic bitwise XOR on GPIO_OUT, i.e. `GPIO_OUT ^=
92 //               wdata`
93 #define SIO_GPIO_OUT_XOR_OFFSET _u(0x0000001c)
94 #define SIO_GPIO_OUT_XOR_BITS   _u(0x3fffffff)
95 #define SIO_GPIO_OUT_XOR_RESET  _u(0x00000000)
96 #define SIO_GPIO_OUT_XOR_MSB    _u(29)
97 #define SIO_GPIO_OUT_XOR_LSB    _u(0)
98 #define SIO_GPIO_OUT_XOR_ACCESS "WO"
99 // =============================================================================
100 // Register    : SIO_GPIO_OE
101 // Description : GPIO output enable
102 //               Set output enable (1/0 -> output/input) for GPIO0...29.
103 //               Reading back gives the last value written.
104 //               If core 0 and core 1 both write to GPIO_OE simultaneously (or
105 //               to a SET/CLR/XOR alias),
106 //               the result is as though the write from core 0 took place first,
107 //               and the write from core 1 was then applied to that intermediate
108 //               result.
109 #define SIO_GPIO_OE_OFFSET _u(0x00000020)
110 #define SIO_GPIO_OE_BITS   _u(0x3fffffff)
111 #define SIO_GPIO_OE_RESET  _u(0x00000000)
112 #define SIO_GPIO_OE_MSB    _u(29)
113 #define SIO_GPIO_OE_LSB    _u(0)
114 #define SIO_GPIO_OE_ACCESS "RW"
115 // =============================================================================
116 // Register    : SIO_GPIO_OE_SET
117 // Description : GPIO output enable set
118 //               Perform an atomic bit-set on GPIO_OE, i.e. `GPIO_OE |= wdata`
119 #define SIO_GPIO_OE_SET_OFFSET _u(0x00000024)
120 #define SIO_GPIO_OE_SET_BITS   _u(0x3fffffff)
121 #define SIO_GPIO_OE_SET_RESET  _u(0x00000000)
122 #define SIO_GPIO_OE_SET_MSB    _u(29)
123 #define SIO_GPIO_OE_SET_LSB    _u(0)
124 #define SIO_GPIO_OE_SET_ACCESS "WO"
125 // =============================================================================
126 // Register    : SIO_GPIO_OE_CLR
127 // Description : GPIO output enable clear
128 //               Perform an atomic bit-clear on GPIO_OE, i.e. `GPIO_OE &=
129 //               ~wdata`
130 #define SIO_GPIO_OE_CLR_OFFSET _u(0x00000028)
131 #define SIO_GPIO_OE_CLR_BITS   _u(0x3fffffff)
132 #define SIO_GPIO_OE_CLR_RESET  _u(0x00000000)
133 #define SIO_GPIO_OE_CLR_MSB    _u(29)
134 #define SIO_GPIO_OE_CLR_LSB    _u(0)
135 #define SIO_GPIO_OE_CLR_ACCESS "WO"
136 // =============================================================================
137 // Register    : SIO_GPIO_OE_XOR
138 // Description : GPIO output enable XOR
139 //               Perform an atomic bitwise XOR on GPIO_OE, i.e. `GPIO_OE ^=
140 //               wdata`
141 #define SIO_GPIO_OE_XOR_OFFSET _u(0x0000002c)
142 #define SIO_GPIO_OE_XOR_BITS   _u(0x3fffffff)
143 #define SIO_GPIO_OE_XOR_RESET  _u(0x00000000)
144 #define SIO_GPIO_OE_XOR_MSB    _u(29)
145 #define SIO_GPIO_OE_XOR_LSB    _u(0)
146 #define SIO_GPIO_OE_XOR_ACCESS "WO"
147 // =============================================================================
148 // Register    : SIO_GPIO_HI_OUT
149 // Description : QSPI output value
150 //               Set output level (1/0 -> high/low) for QSPI IO0...5.
151 //               Reading back gives the last value written, NOT the input value
152 //               from the pins.
153 //               If core 0 and core 1 both write to GPIO_HI_OUT simultaneously
154 //               (or to a SET/CLR/XOR alias),
155 //               the result is as though the write from core 0 took place first,
156 //               and the write from core 1 was then applied to that intermediate
157 //               result.
158 #define SIO_GPIO_HI_OUT_OFFSET _u(0x00000030)
159 #define SIO_GPIO_HI_OUT_BITS   _u(0x0000003f)
160 #define SIO_GPIO_HI_OUT_RESET  _u(0x00000000)
161 #define SIO_GPIO_HI_OUT_MSB    _u(5)
162 #define SIO_GPIO_HI_OUT_LSB    _u(0)
163 #define SIO_GPIO_HI_OUT_ACCESS "RW"
164 // =============================================================================
165 // Register    : SIO_GPIO_HI_OUT_SET
166 // Description : QSPI output value set
167 //               Perform an atomic bit-set on GPIO_HI_OUT, i.e. `GPIO_HI_OUT |=
168 //               wdata`
169 #define SIO_GPIO_HI_OUT_SET_OFFSET _u(0x00000034)
170 #define SIO_GPIO_HI_OUT_SET_BITS   _u(0x0000003f)
171 #define SIO_GPIO_HI_OUT_SET_RESET  _u(0x00000000)
172 #define SIO_GPIO_HI_OUT_SET_MSB    _u(5)
173 #define SIO_GPIO_HI_OUT_SET_LSB    _u(0)
174 #define SIO_GPIO_HI_OUT_SET_ACCESS "WO"
175 // =============================================================================
176 // Register    : SIO_GPIO_HI_OUT_CLR
177 // Description : QSPI output value clear
178 //               Perform an atomic bit-clear on GPIO_HI_OUT, i.e. `GPIO_HI_OUT
179 //               &= ~wdata`
180 #define SIO_GPIO_HI_OUT_CLR_OFFSET _u(0x00000038)
181 #define SIO_GPIO_HI_OUT_CLR_BITS   _u(0x0000003f)
182 #define SIO_GPIO_HI_OUT_CLR_RESET  _u(0x00000000)
183 #define SIO_GPIO_HI_OUT_CLR_MSB    _u(5)
184 #define SIO_GPIO_HI_OUT_CLR_LSB    _u(0)
185 #define SIO_GPIO_HI_OUT_CLR_ACCESS "WO"
186 // =============================================================================
187 // Register    : SIO_GPIO_HI_OUT_XOR
188 // Description : QSPI output value XOR
189 //               Perform an atomic bitwise XOR on GPIO_HI_OUT, i.e. `GPIO_HI_OUT
190 //               ^= wdata`
191 #define SIO_GPIO_HI_OUT_XOR_OFFSET _u(0x0000003c)
192 #define SIO_GPIO_HI_OUT_XOR_BITS   _u(0x0000003f)
193 #define SIO_GPIO_HI_OUT_XOR_RESET  _u(0x00000000)
194 #define SIO_GPIO_HI_OUT_XOR_MSB    _u(5)
195 #define SIO_GPIO_HI_OUT_XOR_LSB    _u(0)
196 #define SIO_GPIO_HI_OUT_XOR_ACCESS "WO"
197 // =============================================================================
198 // Register    : SIO_GPIO_HI_OE
199 // Description : QSPI output enable
200 //               Set output enable (1/0 -> output/input) for QSPI IO0...5.
201 //               Reading back gives the last value written.
202 //               If core 0 and core 1 both write to GPIO_HI_OE simultaneously
203 //               (or to a SET/CLR/XOR alias),
204 //               the result is as though the write from core 0 took place first,
205 //               and the write from core 1 was then applied to that intermediate
206 //               result.
207 #define SIO_GPIO_HI_OE_OFFSET _u(0x00000040)
208 #define SIO_GPIO_HI_OE_BITS   _u(0x0000003f)
209 #define SIO_GPIO_HI_OE_RESET  _u(0x00000000)
210 #define SIO_GPIO_HI_OE_MSB    _u(5)
211 #define SIO_GPIO_HI_OE_LSB    _u(0)
212 #define SIO_GPIO_HI_OE_ACCESS "RW"
213 // =============================================================================
214 // Register    : SIO_GPIO_HI_OE_SET
215 // Description : QSPI output enable set
216 //               Perform an atomic bit-set on GPIO_HI_OE, i.e. `GPIO_HI_OE |=
217 //               wdata`
218 #define SIO_GPIO_HI_OE_SET_OFFSET _u(0x00000044)
219 #define SIO_GPIO_HI_OE_SET_BITS   _u(0x0000003f)
220 #define SIO_GPIO_HI_OE_SET_RESET  _u(0x00000000)
221 #define SIO_GPIO_HI_OE_SET_MSB    _u(5)
222 #define SIO_GPIO_HI_OE_SET_LSB    _u(0)
223 #define SIO_GPIO_HI_OE_SET_ACCESS "WO"
224 // =============================================================================
225 // Register    : SIO_GPIO_HI_OE_CLR
226 // Description : QSPI output enable clear
227 //               Perform an atomic bit-clear on GPIO_HI_OE, i.e. `GPIO_HI_OE &=
228 //               ~wdata`
229 #define SIO_GPIO_HI_OE_CLR_OFFSET _u(0x00000048)
230 #define SIO_GPIO_HI_OE_CLR_BITS   _u(0x0000003f)
231 #define SIO_GPIO_HI_OE_CLR_RESET  _u(0x00000000)
232 #define SIO_GPIO_HI_OE_CLR_MSB    _u(5)
233 #define SIO_GPIO_HI_OE_CLR_LSB    _u(0)
234 #define SIO_GPIO_HI_OE_CLR_ACCESS "WO"
235 // =============================================================================
236 // Register    : SIO_GPIO_HI_OE_XOR
237 // Description : QSPI output enable XOR
238 //               Perform an atomic bitwise XOR on GPIO_HI_OE, i.e. `GPIO_HI_OE
239 //               ^= wdata`
240 #define SIO_GPIO_HI_OE_XOR_OFFSET _u(0x0000004c)
241 #define SIO_GPIO_HI_OE_XOR_BITS   _u(0x0000003f)
242 #define SIO_GPIO_HI_OE_XOR_RESET  _u(0x00000000)
243 #define SIO_GPIO_HI_OE_XOR_MSB    _u(5)
244 #define SIO_GPIO_HI_OE_XOR_LSB    _u(0)
245 #define SIO_GPIO_HI_OE_XOR_ACCESS "WO"
246 // =============================================================================
247 // Register    : SIO_FIFO_ST
248 // Description : Status register for inter-core FIFOs (mailboxes).
249 //               There is one FIFO in the core 0 -> core 1 direction, and one
250 //               core 1 -> core 0. Both are 32 bits wide and 8 words deep.
251 //               Core 0 can see the read side of the 1->0 FIFO (RX), and the
252 //               write side of 0->1 FIFO (TX).
253 //               Core 1 can see the read side of the 0->1 FIFO (RX), and the
254 //               write side of 1->0 FIFO (TX).
255 //               The SIO IRQ for each core is the logical OR of the VLD, WOF and
256 //               ROE fields of its FIFO_ST register.
257 #define SIO_FIFO_ST_OFFSET _u(0x00000050)
258 #define SIO_FIFO_ST_BITS   _u(0x0000000f)
259 #define SIO_FIFO_ST_RESET  _u(0x00000002)
260 // -----------------------------------------------------------------------------
261 // Field       : SIO_FIFO_ST_ROE
262 // Description : Sticky flag indicating the RX FIFO was read when empty. This
263 //               read was ignored by the FIFO.
264 #define SIO_FIFO_ST_ROE_RESET  _u(0x0)
265 #define SIO_FIFO_ST_ROE_BITS   _u(0x00000008)
266 #define SIO_FIFO_ST_ROE_MSB    _u(3)
267 #define SIO_FIFO_ST_ROE_LSB    _u(3)
268 #define SIO_FIFO_ST_ROE_ACCESS "WC"
269 // -----------------------------------------------------------------------------
270 // Field       : SIO_FIFO_ST_WOF
271 // Description : Sticky flag indicating the TX FIFO was written when full. This
272 //               write was ignored by the FIFO.
273 #define SIO_FIFO_ST_WOF_RESET  _u(0x0)
274 #define SIO_FIFO_ST_WOF_BITS   _u(0x00000004)
275 #define SIO_FIFO_ST_WOF_MSB    _u(2)
276 #define SIO_FIFO_ST_WOF_LSB    _u(2)
277 #define SIO_FIFO_ST_WOF_ACCESS "WC"
278 // -----------------------------------------------------------------------------
279 // Field       : SIO_FIFO_ST_RDY
280 // Description : Value is 1 if this core's TX FIFO is not full (i.e. if FIFO_WR
281 //               is ready for more data)
282 #define SIO_FIFO_ST_RDY_RESET  _u(0x1)
283 #define SIO_FIFO_ST_RDY_BITS   _u(0x00000002)
284 #define SIO_FIFO_ST_RDY_MSB    _u(1)
285 #define SIO_FIFO_ST_RDY_LSB    _u(1)
286 #define SIO_FIFO_ST_RDY_ACCESS "RO"
287 // -----------------------------------------------------------------------------
288 // Field       : SIO_FIFO_ST_VLD
289 // Description : Value is 1 if this core's RX FIFO is not empty (i.e. if FIFO_RD
290 //               is valid)
291 #define SIO_FIFO_ST_VLD_RESET  _u(0x0)
292 #define SIO_FIFO_ST_VLD_BITS   _u(0x00000001)
293 #define SIO_FIFO_ST_VLD_MSB    _u(0)
294 #define SIO_FIFO_ST_VLD_LSB    _u(0)
295 #define SIO_FIFO_ST_VLD_ACCESS "RO"
296 // =============================================================================
297 // Register    : SIO_FIFO_WR
298 // Description : Write access to this core's TX FIFO
299 #define SIO_FIFO_WR_OFFSET _u(0x00000054)
300 #define SIO_FIFO_WR_BITS   _u(0xffffffff)
301 #define SIO_FIFO_WR_RESET  _u(0x00000000)
302 #define SIO_FIFO_WR_MSB    _u(31)
303 #define SIO_FIFO_WR_LSB    _u(0)
304 #define SIO_FIFO_WR_ACCESS "WF"
305 // =============================================================================
306 // Register    : SIO_FIFO_RD
307 // Description : Read access to this core's RX FIFO
308 #define SIO_FIFO_RD_OFFSET _u(0x00000058)
309 #define SIO_FIFO_RD_BITS   _u(0xffffffff)
310 #define SIO_FIFO_RD_RESET  "-"
311 #define SIO_FIFO_RD_MSB    _u(31)
312 #define SIO_FIFO_RD_LSB    _u(0)
313 #define SIO_FIFO_RD_ACCESS "RF"
314 // =============================================================================
315 // Register    : SIO_SPINLOCK_ST
316 // Description : Spinlock state
317 //               A bitmap containing the state of all 32 spinlocks (1=locked).
318 //               Mainly intended for debugging.
319 #define SIO_SPINLOCK_ST_OFFSET _u(0x0000005c)
320 #define SIO_SPINLOCK_ST_BITS   _u(0xffffffff)
321 #define SIO_SPINLOCK_ST_RESET  _u(0x00000000)
322 #define SIO_SPINLOCK_ST_MSB    _u(31)
323 #define SIO_SPINLOCK_ST_LSB    _u(0)
324 #define SIO_SPINLOCK_ST_ACCESS "RO"
325 // =============================================================================
326 // Register    : SIO_DIV_UDIVIDEND
327 // Description : Divider unsigned dividend
328 //               Write to the DIVIDEND operand of the divider, i.e. the p in `p
329 //               / q`.
330 //               Any operand write starts a new calculation. The results appear
331 //               in QUOTIENT, REMAINDER.
332 //               UDIVIDEND/SDIVIDEND are aliases of the same internal register.
333 //               The U alias starts an
334 //               unsigned calculation, and the S alias starts a signed
335 //               calculation.
336 #define SIO_DIV_UDIVIDEND_OFFSET _u(0x00000060)
337 #define SIO_DIV_UDIVIDEND_BITS   _u(0xffffffff)
338 #define SIO_DIV_UDIVIDEND_RESET  _u(0x00000000)
339 #define SIO_DIV_UDIVIDEND_MSB    _u(31)
340 #define SIO_DIV_UDIVIDEND_LSB    _u(0)
341 #define SIO_DIV_UDIVIDEND_ACCESS "RW"
342 // =============================================================================
343 // Register    : SIO_DIV_UDIVISOR
344 // Description : Divider unsigned divisor
345 //               Write to the DIVISOR operand of the divider, i.e. the q in `p /
346 //               q`.
347 //               Any operand write starts a new calculation. The results appear
348 //               in QUOTIENT, REMAINDER.
349 //               UDIVISOR/SDIVISOR are aliases of the same internal register.
350 //               The U alias starts an
351 //               unsigned calculation, and the S alias starts a signed
352 //               calculation.
353 #define SIO_DIV_UDIVISOR_OFFSET _u(0x00000064)
354 #define SIO_DIV_UDIVISOR_BITS   _u(0xffffffff)
355 #define SIO_DIV_UDIVISOR_RESET  _u(0x00000000)
356 #define SIO_DIV_UDIVISOR_MSB    _u(31)
357 #define SIO_DIV_UDIVISOR_LSB    _u(0)
358 #define SIO_DIV_UDIVISOR_ACCESS "RW"
359 // =============================================================================
360 // Register    : SIO_DIV_SDIVIDEND
361 // Description : Divider signed dividend
362 //               The same as UDIVIDEND, but starts a signed calculation, rather
363 //               than unsigned.
364 #define SIO_DIV_SDIVIDEND_OFFSET _u(0x00000068)
365 #define SIO_DIV_SDIVIDEND_BITS   _u(0xffffffff)
366 #define SIO_DIV_SDIVIDEND_RESET  _u(0x00000000)
367 #define SIO_DIV_SDIVIDEND_MSB    _u(31)
368 #define SIO_DIV_SDIVIDEND_LSB    _u(0)
369 #define SIO_DIV_SDIVIDEND_ACCESS "RW"
370 // =============================================================================
371 // Register    : SIO_DIV_SDIVISOR
372 // Description : Divider signed divisor
373 //               The same as UDIVISOR, but starts a signed calculation, rather
374 //               than unsigned.
375 #define SIO_DIV_SDIVISOR_OFFSET _u(0x0000006c)
376 #define SIO_DIV_SDIVISOR_BITS   _u(0xffffffff)
377 #define SIO_DIV_SDIVISOR_RESET  _u(0x00000000)
378 #define SIO_DIV_SDIVISOR_MSB    _u(31)
379 #define SIO_DIV_SDIVISOR_LSB    _u(0)
380 #define SIO_DIV_SDIVISOR_ACCESS "RW"
381 // =============================================================================
382 // Register    : SIO_DIV_QUOTIENT
383 // Description : Divider result quotient
384 //               The result of `DIVIDEND / DIVISOR` (division). Contents
385 //               undefined while CSR_READY is low.
386 //               For signed calculations, QUOTIENT is negative when the signs of
387 //               DIVIDEND and DIVISOR differ.
388 //               This register can be written to directly, for context
389 //               save/restore purposes. This halts any
390 //               in-progress calculation and sets the CSR_READY and CSR_DIRTY
391 //               flags.
392 //               Reading from QUOTIENT clears the CSR_DIRTY flag, so should read
393 //               results in the order
394 //               REMAINDER, QUOTIENT if CSR_DIRTY is used.
395 #define SIO_DIV_QUOTIENT_OFFSET _u(0x00000070)
396 #define SIO_DIV_QUOTIENT_BITS   _u(0xffffffff)
397 #define SIO_DIV_QUOTIENT_RESET  _u(0x00000000)
398 #define SIO_DIV_QUOTIENT_MSB    _u(31)
399 #define SIO_DIV_QUOTIENT_LSB    _u(0)
400 #define SIO_DIV_QUOTIENT_ACCESS "RW"
401 // =============================================================================
402 // Register    : SIO_DIV_REMAINDER
403 // Description : Divider result remainder
404 //               The result of `DIVIDEND % DIVISOR` (modulo). Contents undefined
405 //               while CSR_READY is low.
406 //               For signed calculations, REMAINDER is negative only when
407 //               DIVIDEND is negative.
408 //               This register can be written to directly, for context
409 //               save/restore purposes. This halts any
410 //               in-progress calculation and sets the CSR_READY and CSR_DIRTY
411 //               flags.
412 #define SIO_DIV_REMAINDER_OFFSET _u(0x00000074)
413 #define SIO_DIV_REMAINDER_BITS   _u(0xffffffff)
414 #define SIO_DIV_REMAINDER_RESET  _u(0x00000000)
415 #define SIO_DIV_REMAINDER_MSB    _u(31)
416 #define SIO_DIV_REMAINDER_LSB    _u(0)
417 #define SIO_DIV_REMAINDER_ACCESS "RW"
418 // =============================================================================
419 // Register    : SIO_DIV_CSR
420 // Description : Control and status register for divider.
421 #define SIO_DIV_CSR_OFFSET _u(0x00000078)
422 #define SIO_DIV_CSR_BITS   _u(0x00000003)
423 #define SIO_DIV_CSR_RESET  _u(0x00000001)
424 // -----------------------------------------------------------------------------
425 // Field       : SIO_DIV_CSR_DIRTY
426 // Description : Changes to 1 when any register is written, and back to 0 when
427 //               QUOTIENT is read.
428 //               Software can use this flag to make save/restore more efficient
429 //               (skip if not DIRTY).
430 //               If the flag is used in this way, it's recommended to either
431 //               read QUOTIENT only,
432 //               or REMAINDER and then QUOTIENT, to prevent data loss on context
433 //               switch.
434 #define SIO_DIV_CSR_DIRTY_RESET  _u(0x0)
435 #define SIO_DIV_CSR_DIRTY_BITS   _u(0x00000002)
436 #define SIO_DIV_CSR_DIRTY_MSB    _u(1)
437 #define SIO_DIV_CSR_DIRTY_LSB    _u(1)
438 #define SIO_DIV_CSR_DIRTY_ACCESS "RO"
439 // -----------------------------------------------------------------------------
440 // Field       : SIO_DIV_CSR_READY
441 // Description : Reads as 0 when a calculation is in progress, 1 otherwise.
442 //               Writing an operand (xDIVIDEND, xDIVISOR) will immediately start
443 //               a new calculation, no
444 //               matter if one is already in progress.
445 //               Writing to a result register will immediately terminate any in-
446 //               progress calculation
447 //               and set the READY and DIRTY flags.
448 #define SIO_DIV_CSR_READY_RESET  _u(0x1)
449 #define SIO_DIV_CSR_READY_BITS   _u(0x00000001)
450 #define SIO_DIV_CSR_READY_MSB    _u(0)
451 #define SIO_DIV_CSR_READY_LSB    _u(0)
452 #define SIO_DIV_CSR_READY_ACCESS "RO"
453 // =============================================================================
454 // Register    : SIO_INTERP0_ACCUM0
455 // Description : Read/write access to accumulator 0
456 #define SIO_INTERP0_ACCUM0_OFFSET _u(0x00000080)
457 #define SIO_INTERP0_ACCUM0_BITS   _u(0xffffffff)
458 #define SIO_INTERP0_ACCUM0_RESET  _u(0x00000000)
459 #define SIO_INTERP0_ACCUM0_MSB    _u(31)
460 #define SIO_INTERP0_ACCUM0_LSB    _u(0)
461 #define SIO_INTERP0_ACCUM0_ACCESS "RW"
462 // =============================================================================
463 // Register    : SIO_INTERP0_ACCUM1
464 // Description : Read/write access to accumulator 1
465 #define SIO_INTERP0_ACCUM1_OFFSET _u(0x00000084)
466 #define SIO_INTERP0_ACCUM1_BITS   _u(0xffffffff)
467 #define SIO_INTERP0_ACCUM1_RESET  _u(0x00000000)
468 #define SIO_INTERP0_ACCUM1_MSB    _u(31)
469 #define SIO_INTERP0_ACCUM1_LSB    _u(0)
470 #define SIO_INTERP0_ACCUM1_ACCESS "RW"
471 // =============================================================================
472 // Register    : SIO_INTERP0_BASE0
473 // Description : Read/write access to BASE0 register.
474 #define SIO_INTERP0_BASE0_OFFSET _u(0x00000088)
475 #define SIO_INTERP0_BASE0_BITS   _u(0xffffffff)
476 #define SIO_INTERP0_BASE0_RESET  _u(0x00000000)
477 #define SIO_INTERP0_BASE0_MSB    _u(31)
478 #define SIO_INTERP0_BASE0_LSB    _u(0)
479 #define SIO_INTERP0_BASE0_ACCESS "RW"
480 // =============================================================================
481 // Register    : SIO_INTERP0_BASE1
482 // Description : Read/write access to BASE1 register.
483 #define SIO_INTERP0_BASE1_OFFSET _u(0x0000008c)
484 #define SIO_INTERP0_BASE1_BITS   _u(0xffffffff)
485 #define SIO_INTERP0_BASE1_RESET  _u(0x00000000)
486 #define SIO_INTERP0_BASE1_MSB    _u(31)
487 #define SIO_INTERP0_BASE1_LSB    _u(0)
488 #define SIO_INTERP0_BASE1_ACCESS "RW"
489 // =============================================================================
490 // Register    : SIO_INTERP0_BASE2
491 // Description : Read/write access to BASE2 register.
492 #define SIO_INTERP0_BASE2_OFFSET _u(0x00000090)
493 #define SIO_INTERP0_BASE2_BITS   _u(0xffffffff)
494 #define SIO_INTERP0_BASE2_RESET  _u(0x00000000)
495 #define SIO_INTERP0_BASE2_MSB    _u(31)
496 #define SIO_INTERP0_BASE2_LSB    _u(0)
497 #define SIO_INTERP0_BASE2_ACCESS "RW"
498 // =============================================================================
499 // Register    : SIO_INTERP0_POP_LANE0
500 // Description : Read LANE0 result, and simultaneously write lane results to
501 //               both accumulators (POP).
502 #define SIO_INTERP0_POP_LANE0_OFFSET _u(0x00000094)
503 #define SIO_INTERP0_POP_LANE0_BITS   _u(0xffffffff)
504 #define SIO_INTERP0_POP_LANE0_RESET  _u(0x00000000)
505 #define SIO_INTERP0_POP_LANE0_MSB    _u(31)
506 #define SIO_INTERP0_POP_LANE0_LSB    _u(0)
507 #define SIO_INTERP0_POP_LANE0_ACCESS "RO"
508 // =============================================================================
509 // Register    : SIO_INTERP0_POP_LANE1
510 // Description : Read LANE1 result, and simultaneously write lane results to
511 //               both accumulators (POP).
512 #define SIO_INTERP0_POP_LANE1_OFFSET _u(0x00000098)
513 #define SIO_INTERP0_POP_LANE1_BITS   _u(0xffffffff)
514 #define SIO_INTERP0_POP_LANE1_RESET  _u(0x00000000)
515 #define SIO_INTERP0_POP_LANE1_MSB    _u(31)
516 #define SIO_INTERP0_POP_LANE1_LSB    _u(0)
517 #define SIO_INTERP0_POP_LANE1_ACCESS "RO"
518 // =============================================================================
519 // Register    : SIO_INTERP0_POP_FULL
520 // Description : Read FULL result, and simultaneously write lane results to both
521 //               accumulators (POP).
522 #define SIO_INTERP0_POP_FULL_OFFSET _u(0x0000009c)
523 #define SIO_INTERP0_POP_FULL_BITS   _u(0xffffffff)
524 #define SIO_INTERP0_POP_FULL_RESET  _u(0x00000000)
525 #define SIO_INTERP0_POP_FULL_MSB    _u(31)
526 #define SIO_INTERP0_POP_FULL_LSB    _u(0)
527 #define SIO_INTERP0_POP_FULL_ACCESS "RO"
528 // =============================================================================
529 // Register    : SIO_INTERP0_PEEK_LANE0
530 // Description : Read LANE0 result, without altering any internal state (PEEK).
531 #define SIO_INTERP0_PEEK_LANE0_OFFSET _u(0x000000a0)
532 #define SIO_INTERP0_PEEK_LANE0_BITS   _u(0xffffffff)
533 #define SIO_INTERP0_PEEK_LANE0_RESET  _u(0x00000000)
534 #define SIO_INTERP0_PEEK_LANE0_MSB    _u(31)
535 #define SIO_INTERP0_PEEK_LANE0_LSB    _u(0)
536 #define SIO_INTERP0_PEEK_LANE0_ACCESS "RO"
537 // =============================================================================
538 // Register    : SIO_INTERP0_PEEK_LANE1
539 // Description : Read LANE1 result, without altering any internal state (PEEK).
540 #define SIO_INTERP0_PEEK_LANE1_OFFSET _u(0x000000a4)
541 #define SIO_INTERP0_PEEK_LANE1_BITS   _u(0xffffffff)
542 #define SIO_INTERP0_PEEK_LANE1_RESET  _u(0x00000000)
543 #define SIO_INTERP0_PEEK_LANE1_MSB    _u(31)
544 #define SIO_INTERP0_PEEK_LANE1_LSB    _u(0)
545 #define SIO_INTERP0_PEEK_LANE1_ACCESS "RO"
546 // =============================================================================
547 // Register    : SIO_INTERP0_PEEK_FULL
548 // Description : Read FULL result, without altering any internal state (PEEK).
549 #define SIO_INTERP0_PEEK_FULL_OFFSET _u(0x000000a8)
550 #define SIO_INTERP0_PEEK_FULL_BITS   _u(0xffffffff)
551 #define SIO_INTERP0_PEEK_FULL_RESET  _u(0x00000000)
552 #define SIO_INTERP0_PEEK_FULL_MSB    _u(31)
553 #define SIO_INTERP0_PEEK_FULL_LSB    _u(0)
554 #define SIO_INTERP0_PEEK_FULL_ACCESS "RO"
555 // =============================================================================
556 // Register    : SIO_INTERP0_CTRL_LANE0
557 // Description : Control register for lane 0
558 #define SIO_INTERP0_CTRL_LANE0_OFFSET _u(0x000000ac)
559 #define SIO_INTERP0_CTRL_LANE0_BITS   _u(0x03bfffff)
560 #define SIO_INTERP0_CTRL_LANE0_RESET  _u(0x00000000)
561 // -----------------------------------------------------------------------------
562 // Field       : SIO_INTERP0_CTRL_LANE0_OVERF
563 // Description : Set if either OVERF0 or OVERF1 is set.
564 #define SIO_INTERP0_CTRL_LANE0_OVERF_RESET  _u(0x0)
565 #define SIO_INTERP0_CTRL_LANE0_OVERF_BITS   _u(0x02000000)
566 #define SIO_INTERP0_CTRL_LANE0_OVERF_MSB    _u(25)
567 #define SIO_INTERP0_CTRL_LANE0_OVERF_LSB    _u(25)
568 #define SIO_INTERP0_CTRL_LANE0_OVERF_ACCESS "RO"
569 // -----------------------------------------------------------------------------
570 // Field       : SIO_INTERP0_CTRL_LANE0_OVERF1
571 // Description : Indicates if any masked-off MSBs in ACCUM1 are set.
572 #define SIO_INTERP0_CTRL_LANE0_OVERF1_RESET  _u(0x0)
573 #define SIO_INTERP0_CTRL_LANE0_OVERF1_BITS   _u(0x01000000)
574 #define SIO_INTERP0_CTRL_LANE0_OVERF1_MSB    _u(24)
575 #define SIO_INTERP0_CTRL_LANE0_OVERF1_LSB    _u(24)
576 #define SIO_INTERP0_CTRL_LANE0_OVERF1_ACCESS "RO"
577 // -----------------------------------------------------------------------------
578 // Field       : SIO_INTERP0_CTRL_LANE0_OVERF0
579 // Description : Indicates if any masked-off MSBs in ACCUM0 are set.
580 #define SIO_INTERP0_CTRL_LANE0_OVERF0_RESET  _u(0x0)
581 #define SIO_INTERP0_CTRL_LANE0_OVERF0_BITS   _u(0x00800000)
582 #define SIO_INTERP0_CTRL_LANE0_OVERF0_MSB    _u(23)
583 #define SIO_INTERP0_CTRL_LANE0_OVERF0_LSB    _u(23)
584 #define SIO_INTERP0_CTRL_LANE0_OVERF0_ACCESS "RO"
585 // -----------------------------------------------------------------------------
586 // Field       : SIO_INTERP0_CTRL_LANE0_BLEND
587 // Description : Only present on INTERP0 on each core. If BLEND mode is enabled:
588 //               - LANE1 result is a linear interpolation between BASE0 and
589 //               BASE1, controlled
590 //               by the 8 LSBs of lane 1 shift and mask value (a fractional
591 //               number between
592 //               0 and 255/256ths)
593 //               - LANE0 result does not have BASE0 added (yields only the 8
594 //               LSBs of lane 1 shift+mask value)
595 //               - FULL result does not have lane 1 shift+mask value added
596 //               (BASE2 + lane 0 shift+mask)
597 //               LANE1 SIGNED flag controls whether the interpolation is signed
598 //               or unsigned.
599 #define SIO_INTERP0_CTRL_LANE0_BLEND_RESET  _u(0x0)
600 #define SIO_INTERP0_CTRL_LANE0_BLEND_BITS   _u(0x00200000)
601 #define SIO_INTERP0_CTRL_LANE0_BLEND_MSB    _u(21)
602 #define SIO_INTERP0_CTRL_LANE0_BLEND_LSB    _u(21)
603 #define SIO_INTERP0_CTRL_LANE0_BLEND_ACCESS "RW"
604 // -----------------------------------------------------------------------------
605 // Field       : SIO_INTERP0_CTRL_LANE0_FORCE_MSB
606 // Description : ORed into bits 29:28 of the lane result presented to the
607 //               processor on the bus.
608 //               No effect on the internal 32-bit datapath. Handy for using a
609 //               lane to generate sequence
610 //               of pointers into flash or SRAM.
611 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_RESET  _u(0x0)
612 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_BITS   _u(0x00180000)
613 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_MSB    _u(20)
614 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_LSB    _u(19)
615 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_ACCESS "RW"
616 // -----------------------------------------------------------------------------
617 // Field       : SIO_INTERP0_CTRL_LANE0_ADD_RAW
618 // Description : If 1, mask + shift is bypassed for LANE0 result. This does not
619 //               affect FULL result.
620 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_RESET  _u(0x0)
621 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_BITS   _u(0x00040000)
622 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_MSB    _u(18)
623 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_LSB    _u(18)
624 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_ACCESS "RW"
625 // -----------------------------------------------------------------------------
626 // Field       : SIO_INTERP0_CTRL_LANE0_CROSS_RESULT
627 // Description : If 1, feed the opposite lane's result into this lane's
628 //               accumulator on POP.
629 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_RESET  _u(0x0)
630 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_BITS   _u(0x00020000)
631 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_MSB    _u(17)
632 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_LSB    _u(17)
633 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_ACCESS "RW"
634 // -----------------------------------------------------------------------------
635 // Field       : SIO_INTERP0_CTRL_LANE0_CROSS_INPUT
636 // Description : If 1, feed the opposite lane's accumulator into this lane's
637 //               shift + mask hardware.
638 //               Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is
639 //               before the shift+mask bypass)
640 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_RESET  _u(0x0)
641 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_BITS   _u(0x00010000)
642 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_MSB    _u(16)
643 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_LSB    _u(16)
644 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_ACCESS "RW"
645 // -----------------------------------------------------------------------------
646 // Field       : SIO_INTERP0_CTRL_LANE0_SIGNED
647 // Description : If SIGNED is set, the shifted and masked accumulator value is
648 //               sign-extended to 32 bits
649 //               before adding to BASE0, and LANE0 PEEK/POP appear extended to
650 //               32 bits when read by processor.
651 #define SIO_INTERP0_CTRL_LANE0_SIGNED_RESET  _u(0x0)
652 #define SIO_INTERP0_CTRL_LANE0_SIGNED_BITS   _u(0x00008000)
653 #define SIO_INTERP0_CTRL_LANE0_SIGNED_MSB    _u(15)
654 #define SIO_INTERP0_CTRL_LANE0_SIGNED_LSB    _u(15)
655 #define SIO_INTERP0_CTRL_LANE0_SIGNED_ACCESS "RW"
656 // -----------------------------------------------------------------------------
657 // Field       : SIO_INTERP0_CTRL_LANE0_MASK_MSB
658 // Description : The most-significant bit allowed to pass by the mask
659 //               (inclusive)
660 //               Setting MSB < LSB may cause chip to turn inside-out
661 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_RESET  _u(0x00)
662 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_BITS   _u(0x00007c00)
663 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_MSB    _u(14)
664 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_LSB    _u(10)
665 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_ACCESS "RW"
666 // -----------------------------------------------------------------------------
667 // Field       : SIO_INTERP0_CTRL_LANE0_MASK_LSB
668 // Description : The least-significant bit allowed to pass by the mask
669 //               (inclusive)
670 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_RESET  _u(0x00)
671 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_BITS   _u(0x000003e0)
672 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_MSB    _u(9)
673 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_LSB    _u(5)
674 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_ACCESS "RW"
675 // -----------------------------------------------------------------------------
676 // Field       : SIO_INTERP0_CTRL_LANE0_SHIFT
677 // Description : Logical right-shift applied to accumulator before masking
678 #define SIO_INTERP0_CTRL_LANE0_SHIFT_RESET  _u(0x00)
679 #define SIO_INTERP0_CTRL_LANE0_SHIFT_BITS   _u(0x0000001f)
680 #define SIO_INTERP0_CTRL_LANE0_SHIFT_MSB    _u(4)
681 #define SIO_INTERP0_CTRL_LANE0_SHIFT_LSB    _u(0)
682 #define SIO_INTERP0_CTRL_LANE0_SHIFT_ACCESS "RW"
683 // =============================================================================
684 // Register    : SIO_INTERP0_CTRL_LANE1
685 // Description : Control register for lane 1
686 #define SIO_INTERP0_CTRL_LANE1_OFFSET _u(0x000000b0)
687 #define SIO_INTERP0_CTRL_LANE1_BITS   _u(0x001fffff)
688 #define SIO_INTERP0_CTRL_LANE1_RESET  _u(0x00000000)
689 // -----------------------------------------------------------------------------
690 // Field       : SIO_INTERP0_CTRL_LANE1_FORCE_MSB
691 // Description : ORed into bits 29:28 of the lane result presented to the
692 //               processor on the bus.
693 //               No effect on the internal 32-bit datapath. Handy for using a
694 //               lane to generate sequence
695 //               of pointers into flash or SRAM.
696 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_RESET  _u(0x0)
697 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_BITS   _u(0x00180000)
698 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_MSB    _u(20)
699 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_LSB    _u(19)
700 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_ACCESS "RW"
701 // -----------------------------------------------------------------------------
702 // Field       : SIO_INTERP0_CTRL_LANE1_ADD_RAW
703 // Description : If 1, mask + shift is bypassed for LANE1 result. This does not
704 //               affect FULL result.
705 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_RESET  _u(0x0)
706 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_BITS   _u(0x00040000)
707 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_MSB    _u(18)
708 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_LSB    _u(18)
709 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_ACCESS "RW"
710 // -----------------------------------------------------------------------------
711 // Field       : SIO_INTERP0_CTRL_LANE1_CROSS_RESULT
712 // Description : If 1, feed the opposite lane's result into this lane's
713 //               accumulator on POP.
714 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_RESET  _u(0x0)
715 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_BITS   _u(0x00020000)
716 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_MSB    _u(17)
717 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_LSB    _u(17)
718 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_ACCESS "RW"
719 // -----------------------------------------------------------------------------
720 // Field       : SIO_INTERP0_CTRL_LANE1_CROSS_INPUT
721 // Description : If 1, feed the opposite lane's accumulator into this lane's
722 //               shift + mask hardware.
723 //               Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is
724 //               before the shift+mask bypass)
725 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_RESET  _u(0x0)
726 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_BITS   _u(0x00010000)
727 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_MSB    _u(16)
728 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_LSB    _u(16)
729 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_ACCESS "RW"
730 // -----------------------------------------------------------------------------
731 // Field       : SIO_INTERP0_CTRL_LANE1_SIGNED
732 // Description : If SIGNED is set, the shifted and masked accumulator value is
733 //               sign-extended to 32 bits
734 //               before adding to BASE1, and LANE1 PEEK/POP appear extended to
735 //               32 bits when read by processor.
736 #define SIO_INTERP0_CTRL_LANE1_SIGNED_RESET  _u(0x0)
737 #define SIO_INTERP0_CTRL_LANE1_SIGNED_BITS   _u(0x00008000)
738 #define SIO_INTERP0_CTRL_LANE1_SIGNED_MSB    _u(15)
739 #define SIO_INTERP0_CTRL_LANE1_SIGNED_LSB    _u(15)
740 #define SIO_INTERP0_CTRL_LANE1_SIGNED_ACCESS "RW"
741 // -----------------------------------------------------------------------------
742 // Field       : SIO_INTERP0_CTRL_LANE1_MASK_MSB
743 // Description : The most-significant bit allowed to pass by the mask
744 //               (inclusive)
745 //               Setting MSB < LSB may cause chip to turn inside-out
746 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_RESET  _u(0x00)
747 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_BITS   _u(0x00007c00)
748 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_MSB    _u(14)
749 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_LSB    _u(10)
750 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_ACCESS "RW"
751 // -----------------------------------------------------------------------------
752 // Field       : SIO_INTERP0_CTRL_LANE1_MASK_LSB
753 // Description : The least-significant bit allowed to pass by the mask
754 //               (inclusive)
755 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_RESET  _u(0x00)
756 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_BITS   _u(0x000003e0)
757 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_MSB    _u(9)
758 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_LSB    _u(5)
759 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_ACCESS "RW"
760 // -----------------------------------------------------------------------------
761 // Field       : SIO_INTERP0_CTRL_LANE1_SHIFT
762 // Description : Logical right-shift applied to accumulator before masking
763 #define SIO_INTERP0_CTRL_LANE1_SHIFT_RESET  _u(0x00)
764 #define SIO_INTERP0_CTRL_LANE1_SHIFT_BITS   _u(0x0000001f)
765 #define SIO_INTERP0_CTRL_LANE1_SHIFT_MSB    _u(4)
766 #define SIO_INTERP0_CTRL_LANE1_SHIFT_LSB    _u(0)
767 #define SIO_INTERP0_CTRL_LANE1_SHIFT_ACCESS "RW"
768 // =============================================================================
769 // Register    : SIO_INTERP0_ACCUM0_ADD
770 // Description : Values written here are atomically added to ACCUM0
771 //               Reading yields lane 0's raw shift and mask value (BASE0 not
772 //               added).
773 #define SIO_INTERP0_ACCUM0_ADD_OFFSET _u(0x000000b4)
774 #define SIO_INTERP0_ACCUM0_ADD_BITS   _u(0x00ffffff)
775 #define SIO_INTERP0_ACCUM0_ADD_RESET  _u(0x00000000)
776 #define SIO_INTERP0_ACCUM0_ADD_MSB    _u(23)
777 #define SIO_INTERP0_ACCUM0_ADD_LSB    _u(0)
778 #define SIO_INTERP0_ACCUM0_ADD_ACCESS "RW"
779 // =============================================================================
780 // Register    : SIO_INTERP0_ACCUM1_ADD
781 // Description : Values written here are atomically added to ACCUM1
782 //               Reading yields lane 1's raw shift and mask value (BASE1 not
783 //               added).
784 #define SIO_INTERP0_ACCUM1_ADD_OFFSET _u(0x000000b8)
785 #define SIO_INTERP0_ACCUM1_ADD_BITS   _u(0x00ffffff)
786 #define SIO_INTERP0_ACCUM1_ADD_RESET  _u(0x00000000)
787 #define SIO_INTERP0_ACCUM1_ADD_MSB    _u(23)
788 #define SIO_INTERP0_ACCUM1_ADD_LSB    _u(0)
789 #define SIO_INTERP0_ACCUM1_ADD_ACCESS "RW"
790 // =============================================================================
791 // Register    : SIO_INTERP0_BASE_1AND0
792 // Description : On write, the lower 16 bits go to BASE0, upper bits to BASE1
793 //               simultaneously.
794 //               Each half is sign-extended to 32 bits if that lane's SIGNED
795 //               flag is set.
796 #define SIO_INTERP0_BASE_1AND0_OFFSET _u(0x000000bc)
797 #define SIO_INTERP0_BASE_1AND0_BITS   _u(0xffffffff)
798 #define SIO_INTERP0_BASE_1AND0_RESET  _u(0x00000000)
799 #define SIO_INTERP0_BASE_1AND0_MSB    _u(31)
800 #define SIO_INTERP0_BASE_1AND0_LSB    _u(0)
801 #define SIO_INTERP0_BASE_1AND0_ACCESS "WO"
802 // =============================================================================
803 // Register    : SIO_INTERP1_ACCUM0
804 // Description : Read/write access to accumulator 0
805 #define SIO_INTERP1_ACCUM0_OFFSET _u(0x000000c0)
806 #define SIO_INTERP1_ACCUM0_BITS   _u(0xffffffff)
807 #define SIO_INTERP1_ACCUM0_RESET  _u(0x00000000)
808 #define SIO_INTERP1_ACCUM0_MSB    _u(31)
809 #define SIO_INTERP1_ACCUM0_LSB    _u(0)
810 #define SIO_INTERP1_ACCUM0_ACCESS "RW"
811 // =============================================================================
812 // Register    : SIO_INTERP1_ACCUM1
813 // Description : Read/write access to accumulator 1
814 #define SIO_INTERP1_ACCUM1_OFFSET _u(0x000000c4)
815 #define SIO_INTERP1_ACCUM1_BITS   _u(0xffffffff)
816 #define SIO_INTERP1_ACCUM1_RESET  _u(0x00000000)
817 #define SIO_INTERP1_ACCUM1_MSB    _u(31)
818 #define SIO_INTERP1_ACCUM1_LSB    _u(0)
819 #define SIO_INTERP1_ACCUM1_ACCESS "RW"
820 // =============================================================================
821 // Register    : SIO_INTERP1_BASE0
822 // Description : Read/write access to BASE0 register.
823 #define SIO_INTERP1_BASE0_OFFSET _u(0x000000c8)
824 #define SIO_INTERP1_BASE0_BITS   _u(0xffffffff)
825 #define SIO_INTERP1_BASE0_RESET  _u(0x00000000)
826 #define SIO_INTERP1_BASE0_MSB    _u(31)
827 #define SIO_INTERP1_BASE0_LSB    _u(0)
828 #define SIO_INTERP1_BASE0_ACCESS "RW"
829 // =============================================================================
830 // Register    : SIO_INTERP1_BASE1
831 // Description : Read/write access to BASE1 register.
832 #define SIO_INTERP1_BASE1_OFFSET _u(0x000000cc)
833 #define SIO_INTERP1_BASE1_BITS   _u(0xffffffff)
834 #define SIO_INTERP1_BASE1_RESET  _u(0x00000000)
835 #define SIO_INTERP1_BASE1_MSB    _u(31)
836 #define SIO_INTERP1_BASE1_LSB    _u(0)
837 #define SIO_INTERP1_BASE1_ACCESS "RW"
838 // =============================================================================
839 // Register    : SIO_INTERP1_BASE2
840 // Description : Read/write access to BASE2 register.
841 #define SIO_INTERP1_BASE2_OFFSET _u(0x000000d0)
842 #define SIO_INTERP1_BASE2_BITS   _u(0xffffffff)
843 #define SIO_INTERP1_BASE2_RESET  _u(0x00000000)
844 #define SIO_INTERP1_BASE2_MSB    _u(31)
845 #define SIO_INTERP1_BASE2_LSB    _u(0)
846 #define SIO_INTERP1_BASE2_ACCESS "RW"
847 // =============================================================================
848 // Register    : SIO_INTERP1_POP_LANE0
849 // Description : Read LANE0 result, and simultaneously write lane results to
850 //               both accumulators (POP).
851 #define SIO_INTERP1_POP_LANE0_OFFSET _u(0x000000d4)
852 #define SIO_INTERP1_POP_LANE0_BITS   _u(0xffffffff)
853 #define SIO_INTERP1_POP_LANE0_RESET  _u(0x00000000)
854 #define SIO_INTERP1_POP_LANE0_MSB    _u(31)
855 #define SIO_INTERP1_POP_LANE0_LSB    _u(0)
856 #define SIO_INTERP1_POP_LANE0_ACCESS "RO"
857 // =============================================================================
858 // Register    : SIO_INTERP1_POP_LANE1
859 // Description : Read LANE1 result, and simultaneously write lane results to
860 //               both accumulators (POP).
861 #define SIO_INTERP1_POP_LANE1_OFFSET _u(0x000000d8)
862 #define SIO_INTERP1_POP_LANE1_BITS   _u(0xffffffff)
863 #define SIO_INTERP1_POP_LANE1_RESET  _u(0x00000000)
864 #define SIO_INTERP1_POP_LANE1_MSB    _u(31)
865 #define SIO_INTERP1_POP_LANE1_LSB    _u(0)
866 #define SIO_INTERP1_POP_LANE1_ACCESS "RO"
867 // =============================================================================
868 // Register    : SIO_INTERP1_POP_FULL
869 // Description : Read FULL result, and simultaneously write lane results to both
870 //               accumulators (POP).
871 #define SIO_INTERP1_POP_FULL_OFFSET _u(0x000000dc)
872 #define SIO_INTERP1_POP_FULL_BITS   _u(0xffffffff)
873 #define SIO_INTERP1_POP_FULL_RESET  _u(0x00000000)
874 #define SIO_INTERP1_POP_FULL_MSB    _u(31)
875 #define SIO_INTERP1_POP_FULL_LSB    _u(0)
876 #define SIO_INTERP1_POP_FULL_ACCESS "RO"
877 // =============================================================================
878 // Register    : SIO_INTERP1_PEEK_LANE0
879 // Description : Read LANE0 result, without altering any internal state (PEEK).
880 #define SIO_INTERP1_PEEK_LANE0_OFFSET _u(0x000000e0)
881 #define SIO_INTERP1_PEEK_LANE0_BITS   _u(0xffffffff)
882 #define SIO_INTERP1_PEEK_LANE0_RESET  _u(0x00000000)
883 #define SIO_INTERP1_PEEK_LANE0_MSB    _u(31)
884 #define SIO_INTERP1_PEEK_LANE0_LSB    _u(0)
885 #define SIO_INTERP1_PEEK_LANE0_ACCESS "RO"
886 // =============================================================================
887 // Register    : SIO_INTERP1_PEEK_LANE1
888 // Description : Read LANE1 result, without altering any internal state (PEEK).
889 #define SIO_INTERP1_PEEK_LANE1_OFFSET _u(0x000000e4)
890 #define SIO_INTERP1_PEEK_LANE1_BITS   _u(0xffffffff)
891 #define SIO_INTERP1_PEEK_LANE1_RESET  _u(0x00000000)
892 #define SIO_INTERP1_PEEK_LANE1_MSB    _u(31)
893 #define SIO_INTERP1_PEEK_LANE1_LSB    _u(0)
894 #define SIO_INTERP1_PEEK_LANE1_ACCESS "RO"
895 // =============================================================================
896 // Register    : SIO_INTERP1_PEEK_FULL
897 // Description : Read FULL result, without altering any internal state (PEEK).
898 #define SIO_INTERP1_PEEK_FULL_OFFSET _u(0x000000e8)
899 #define SIO_INTERP1_PEEK_FULL_BITS   _u(0xffffffff)
900 #define SIO_INTERP1_PEEK_FULL_RESET  _u(0x00000000)
901 #define SIO_INTERP1_PEEK_FULL_MSB    _u(31)
902 #define SIO_INTERP1_PEEK_FULL_LSB    _u(0)
903 #define SIO_INTERP1_PEEK_FULL_ACCESS "RO"
904 // =============================================================================
905 // Register    : SIO_INTERP1_CTRL_LANE0
906 // Description : Control register for lane 0
907 #define SIO_INTERP1_CTRL_LANE0_OFFSET _u(0x000000ec)
908 #define SIO_INTERP1_CTRL_LANE0_BITS   _u(0x03dfffff)
909 #define SIO_INTERP1_CTRL_LANE0_RESET  _u(0x00000000)
910 // -----------------------------------------------------------------------------
911 // Field       : SIO_INTERP1_CTRL_LANE0_OVERF
912 // Description : Set if either OVERF0 or OVERF1 is set.
913 #define SIO_INTERP1_CTRL_LANE0_OVERF_RESET  _u(0x0)
914 #define SIO_INTERP1_CTRL_LANE0_OVERF_BITS   _u(0x02000000)
915 #define SIO_INTERP1_CTRL_LANE0_OVERF_MSB    _u(25)
916 #define SIO_INTERP1_CTRL_LANE0_OVERF_LSB    _u(25)
917 #define SIO_INTERP1_CTRL_LANE0_OVERF_ACCESS "RO"
918 // -----------------------------------------------------------------------------
919 // Field       : SIO_INTERP1_CTRL_LANE0_OVERF1
920 // Description : Indicates if any masked-off MSBs in ACCUM1 are set.
921 #define SIO_INTERP1_CTRL_LANE0_OVERF1_RESET  _u(0x0)
922 #define SIO_INTERP1_CTRL_LANE0_OVERF1_BITS   _u(0x01000000)
923 #define SIO_INTERP1_CTRL_LANE0_OVERF1_MSB    _u(24)
924 #define SIO_INTERP1_CTRL_LANE0_OVERF1_LSB    _u(24)
925 #define SIO_INTERP1_CTRL_LANE0_OVERF1_ACCESS "RO"
926 // -----------------------------------------------------------------------------
927 // Field       : SIO_INTERP1_CTRL_LANE0_OVERF0
928 // Description : Indicates if any masked-off MSBs in ACCUM0 are set.
929 #define SIO_INTERP1_CTRL_LANE0_OVERF0_RESET  _u(0x0)
930 #define SIO_INTERP1_CTRL_LANE0_OVERF0_BITS   _u(0x00800000)
931 #define SIO_INTERP1_CTRL_LANE0_OVERF0_MSB    _u(23)
932 #define SIO_INTERP1_CTRL_LANE0_OVERF0_LSB    _u(23)
933 #define SIO_INTERP1_CTRL_LANE0_OVERF0_ACCESS "RO"
934 // -----------------------------------------------------------------------------
935 // Field       : SIO_INTERP1_CTRL_LANE0_CLAMP
936 // Description : Only present on INTERP1 on each core. If CLAMP mode is enabled:
937 //               - LANE0 result is shifted and masked ACCUM0, clamped by a lower
938 //               bound of
939 //               BASE0 and an upper bound of BASE1.
940 //               - Signedness of these comparisons is determined by
941 //               LANE0_CTRL_SIGNED
942 #define SIO_INTERP1_CTRL_LANE0_CLAMP_RESET  _u(0x0)
943 #define SIO_INTERP1_CTRL_LANE0_CLAMP_BITS   _u(0x00400000)
944 #define SIO_INTERP1_CTRL_LANE0_CLAMP_MSB    _u(22)
945 #define SIO_INTERP1_CTRL_LANE0_CLAMP_LSB    _u(22)
946 #define SIO_INTERP1_CTRL_LANE0_CLAMP_ACCESS "RW"
947 // -----------------------------------------------------------------------------
948 // Field       : SIO_INTERP1_CTRL_LANE0_FORCE_MSB
949 // Description : ORed into bits 29:28 of the lane result presented to the
950 //               processor on the bus.
951 //               No effect on the internal 32-bit datapath. Handy for using a
952 //               lane to generate sequence
953 //               of pointers into flash or SRAM.
954 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_RESET  _u(0x0)
955 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_BITS   _u(0x00180000)
956 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_MSB    _u(20)
957 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_LSB    _u(19)
958 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_ACCESS "RW"
959 // -----------------------------------------------------------------------------
960 // Field       : SIO_INTERP1_CTRL_LANE0_ADD_RAW
961 // Description : If 1, mask + shift is bypassed for LANE0 result. This does not
962 //               affect FULL result.
963 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_RESET  _u(0x0)
964 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_BITS   _u(0x00040000)
965 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_MSB    _u(18)
966 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_LSB    _u(18)
967 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_ACCESS "RW"
968 // -----------------------------------------------------------------------------
969 // Field       : SIO_INTERP1_CTRL_LANE0_CROSS_RESULT
970 // Description : If 1, feed the opposite lane's result into this lane's
971 //               accumulator on POP.
972 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_RESET  _u(0x0)
973 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_BITS   _u(0x00020000)
974 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_MSB    _u(17)
975 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_LSB    _u(17)
976 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_ACCESS "RW"
977 // -----------------------------------------------------------------------------
978 // Field       : SIO_INTERP1_CTRL_LANE0_CROSS_INPUT
979 // Description : If 1, feed the opposite lane's accumulator into this lane's
980 //               shift + mask hardware.
981 //               Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is
982 //               before the shift+mask bypass)
983 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_RESET  _u(0x0)
984 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_BITS   _u(0x00010000)
985 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_MSB    _u(16)
986 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_LSB    _u(16)
987 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_ACCESS "RW"
988 // -----------------------------------------------------------------------------
989 // Field       : SIO_INTERP1_CTRL_LANE0_SIGNED
990 // Description : If SIGNED is set, the shifted and masked accumulator value is
991 //               sign-extended to 32 bits
992 //               before adding to BASE0, and LANE0 PEEK/POP appear extended to
993 //               32 bits when read by processor.
994 #define SIO_INTERP1_CTRL_LANE0_SIGNED_RESET  _u(0x0)
995 #define SIO_INTERP1_CTRL_LANE0_SIGNED_BITS   _u(0x00008000)
996 #define SIO_INTERP1_CTRL_LANE0_SIGNED_MSB    _u(15)
997 #define SIO_INTERP1_CTRL_LANE0_SIGNED_LSB    _u(15)
998 #define SIO_INTERP1_CTRL_LANE0_SIGNED_ACCESS "RW"
999 // -----------------------------------------------------------------------------
1000 // Field       : SIO_INTERP1_CTRL_LANE0_MASK_MSB
1001 // Description : The most-significant bit allowed to pass by the mask
1002 //               (inclusive)
1003 //               Setting MSB < LSB may cause chip to turn inside-out
1004 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_RESET  _u(0x00)
1005 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_BITS   _u(0x00007c00)
1006 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_MSB    _u(14)
1007 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_LSB    _u(10)
1008 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_ACCESS "RW"
1009 // -----------------------------------------------------------------------------
1010 // Field       : SIO_INTERP1_CTRL_LANE0_MASK_LSB
1011 // Description : The least-significant bit allowed to pass by the mask
1012 //               (inclusive)
1013 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_RESET  _u(0x00)
1014 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_BITS   _u(0x000003e0)
1015 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_MSB    _u(9)
1016 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_LSB    _u(5)
1017 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_ACCESS "RW"
1018 // -----------------------------------------------------------------------------
1019 // Field       : SIO_INTERP1_CTRL_LANE0_SHIFT
1020 // Description : Logical right-shift applied to accumulator before masking
1021 #define SIO_INTERP1_CTRL_LANE0_SHIFT_RESET  _u(0x00)
1022 #define SIO_INTERP1_CTRL_LANE0_SHIFT_BITS   _u(0x0000001f)
1023 #define SIO_INTERP1_CTRL_LANE0_SHIFT_MSB    _u(4)
1024 #define SIO_INTERP1_CTRL_LANE0_SHIFT_LSB    _u(0)
1025 #define SIO_INTERP1_CTRL_LANE0_SHIFT_ACCESS "RW"
1026 // =============================================================================
1027 // Register    : SIO_INTERP1_CTRL_LANE1
1028 // Description : Control register for lane 1
1029 #define SIO_INTERP1_CTRL_LANE1_OFFSET _u(0x000000f0)
1030 #define SIO_INTERP1_CTRL_LANE1_BITS   _u(0x001fffff)
1031 #define SIO_INTERP1_CTRL_LANE1_RESET  _u(0x00000000)
1032 // -----------------------------------------------------------------------------
1033 // Field       : SIO_INTERP1_CTRL_LANE1_FORCE_MSB
1034 // Description : ORed into bits 29:28 of the lane result presented to the
1035 //               processor on the bus.
1036 //               No effect on the internal 32-bit datapath. Handy for using a
1037 //               lane to generate sequence
1038 //               of pointers into flash or SRAM.
1039 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_RESET  _u(0x0)
1040 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_BITS   _u(0x00180000)
1041 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_MSB    _u(20)
1042 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_LSB    _u(19)
1043 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_ACCESS "RW"
1044 // -----------------------------------------------------------------------------
1045 // Field       : SIO_INTERP1_CTRL_LANE1_ADD_RAW
1046 // Description : If 1, mask + shift is bypassed for LANE1 result. This does not
1047 //               affect FULL result.
1048 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_RESET  _u(0x0)
1049 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_BITS   _u(0x00040000)
1050 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_MSB    _u(18)
1051 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_LSB    _u(18)
1052 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_ACCESS "RW"
1053 // -----------------------------------------------------------------------------
1054 // Field       : SIO_INTERP1_CTRL_LANE1_CROSS_RESULT
1055 // Description : If 1, feed the opposite lane's result into this lane's
1056 //               accumulator on POP.
1057 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_RESET  _u(0x0)
1058 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_BITS   _u(0x00020000)
1059 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_MSB    _u(17)
1060 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_LSB    _u(17)
1061 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_ACCESS "RW"
1062 // -----------------------------------------------------------------------------
1063 // Field       : SIO_INTERP1_CTRL_LANE1_CROSS_INPUT
1064 // Description : If 1, feed the opposite lane's accumulator into this lane's
1065 //               shift + mask hardware.
1066 //               Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is
1067 //               before the shift+mask bypass)
1068 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_RESET  _u(0x0)
1069 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_BITS   _u(0x00010000)
1070 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_MSB    _u(16)
1071 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_LSB    _u(16)
1072 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_ACCESS "RW"
1073 // -----------------------------------------------------------------------------
1074 // Field       : SIO_INTERP1_CTRL_LANE1_SIGNED
1075 // Description : If SIGNED is set, the shifted and masked accumulator value is
1076 //               sign-extended to 32 bits
1077 //               before adding to BASE1, and LANE1 PEEK/POP appear extended to
1078 //               32 bits when read by processor.
1079 #define SIO_INTERP1_CTRL_LANE1_SIGNED_RESET  _u(0x0)
1080 #define SIO_INTERP1_CTRL_LANE1_SIGNED_BITS   _u(0x00008000)
1081 #define SIO_INTERP1_CTRL_LANE1_SIGNED_MSB    _u(15)
1082 #define SIO_INTERP1_CTRL_LANE1_SIGNED_LSB    _u(15)
1083 #define SIO_INTERP1_CTRL_LANE1_SIGNED_ACCESS "RW"
1084 // -----------------------------------------------------------------------------
1085 // Field       : SIO_INTERP1_CTRL_LANE1_MASK_MSB
1086 // Description : The most-significant bit allowed to pass by the mask
1087 //               (inclusive)
1088 //               Setting MSB < LSB may cause chip to turn inside-out
1089 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_RESET  _u(0x00)
1090 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_BITS   _u(0x00007c00)
1091 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_MSB    _u(14)
1092 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_LSB    _u(10)
1093 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_ACCESS "RW"
1094 // -----------------------------------------------------------------------------
1095 // Field       : SIO_INTERP1_CTRL_LANE1_MASK_LSB
1096 // Description : The least-significant bit allowed to pass by the mask
1097 //               (inclusive)
1098 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_RESET  _u(0x00)
1099 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_BITS   _u(0x000003e0)
1100 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_MSB    _u(9)
1101 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_LSB    _u(5)
1102 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_ACCESS "RW"
1103 // -----------------------------------------------------------------------------
1104 // Field       : SIO_INTERP1_CTRL_LANE1_SHIFT
1105 // Description : Logical right-shift applied to accumulator before masking
1106 #define SIO_INTERP1_CTRL_LANE1_SHIFT_RESET  _u(0x00)
1107 #define SIO_INTERP1_CTRL_LANE1_SHIFT_BITS   _u(0x0000001f)
1108 #define SIO_INTERP1_CTRL_LANE1_SHIFT_MSB    _u(4)
1109 #define SIO_INTERP1_CTRL_LANE1_SHIFT_LSB    _u(0)
1110 #define SIO_INTERP1_CTRL_LANE1_SHIFT_ACCESS "RW"
1111 // =============================================================================
1112 // Register    : SIO_INTERP1_ACCUM0_ADD
1113 // Description : Values written here are atomically added to ACCUM0
1114 //               Reading yields lane 0's raw shift and mask value (BASE0 not
1115 //               added).
1116 #define SIO_INTERP1_ACCUM0_ADD_OFFSET _u(0x000000f4)
1117 #define SIO_INTERP1_ACCUM0_ADD_BITS   _u(0x00ffffff)
1118 #define SIO_INTERP1_ACCUM0_ADD_RESET  _u(0x00000000)
1119 #define SIO_INTERP1_ACCUM0_ADD_MSB    _u(23)
1120 #define SIO_INTERP1_ACCUM0_ADD_LSB    _u(0)
1121 #define SIO_INTERP1_ACCUM0_ADD_ACCESS "RW"
1122 // =============================================================================
1123 // Register    : SIO_INTERP1_ACCUM1_ADD
1124 // Description : Values written here are atomically added to ACCUM1
1125 //               Reading yields lane 1's raw shift and mask value (BASE1 not
1126 //               added).
1127 #define SIO_INTERP1_ACCUM1_ADD_OFFSET _u(0x000000f8)
1128 #define SIO_INTERP1_ACCUM1_ADD_BITS   _u(0x00ffffff)
1129 #define SIO_INTERP1_ACCUM1_ADD_RESET  _u(0x00000000)
1130 #define SIO_INTERP1_ACCUM1_ADD_MSB    _u(23)
1131 #define SIO_INTERP1_ACCUM1_ADD_LSB    _u(0)
1132 #define SIO_INTERP1_ACCUM1_ADD_ACCESS "RW"
1133 // =============================================================================
1134 // Register    : SIO_INTERP1_BASE_1AND0
1135 // Description : On write, the lower 16 bits go to BASE0, upper bits to BASE1
1136 //               simultaneously.
1137 //               Each half is sign-extended to 32 bits if that lane's SIGNED
1138 //               flag is set.
1139 #define SIO_INTERP1_BASE_1AND0_OFFSET _u(0x000000fc)
1140 #define SIO_INTERP1_BASE_1AND0_BITS   _u(0xffffffff)
1141 #define SIO_INTERP1_BASE_1AND0_RESET  _u(0x00000000)
1142 #define SIO_INTERP1_BASE_1AND0_MSB    _u(31)
1143 #define SIO_INTERP1_BASE_1AND0_LSB    _u(0)
1144 #define SIO_INTERP1_BASE_1AND0_ACCESS "WO"
1145 // =============================================================================
1146 // Register    : SIO_SPINLOCK0
1147 // Description : Reading from a spinlock address will:
1148 //               - Return 0 if lock is already locked
1149 //               - Otherwise return nonzero, and simultaneously claim the lock
1150 //
1151 //               Writing (any value) releases the lock.
1152 //               If core 0 and core 1 attempt to claim the same lock
1153 //               simultaneously, core 0 wins.
1154 //               The value returned on success is 0x1 << lock number.
1155 #define SIO_SPINLOCK0_OFFSET _u(0x00000100)
1156 #define SIO_SPINLOCK0_BITS   _u(0xffffffff)
1157 #define SIO_SPINLOCK0_RESET  _u(0x00000000)
1158 #define SIO_SPINLOCK0_MSB    _u(31)
1159 #define SIO_SPINLOCK0_LSB    _u(0)
1160 #define SIO_SPINLOCK0_ACCESS "RW"
1161 // =============================================================================
1162 // Register    : SIO_SPINLOCK1
1163 // Description : Reading from a spinlock address will:
1164 //               - Return 0 if lock is already locked
1165 //               - Otherwise return nonzero, and simultaneously claim the lock
1166 //
1167 //               Writing (any value) releases the lock.
1168 //               If core 0 and core 1 attempt to claim the same lock
1169 //               simultaneously, core 0 wins.
1170 //               The value returned on success is 0x1 << lock number.
1171 #define SIO_SPINLOCK1_OFFSET _u(0x00000104)
1172 #define SIO_SPINLOCK1_BITS   _u(0xffffffff)
1173 #define SIO_SPINLOCK1_RESET  _u(0x00000000)
1174 #define SIO_SPINLOCK1_MSB    _u(31)
1175 #define SIO_SPINLOCK1_LSB    _u(0)
1176 #define SIO_SPINLOCK1_ACCESS "RW"
1177 // =============================================================================
1178 // Register    : SIO_SPINLOCK2
1179 // Description : Reading from a spinlock address will:
1180 //               - Return 0 if lock is already locked
1181 //               - Otherwise return nonzero, and simultaneously claim the lock
1182 //
1183 //               Writing (any value) releases the lock.
1184 //               If core 0 and core 1 attempt to claim the same lock
1185 //               simultaneously, core 0 wins.
1186 //               The value returned on success is 0x1 << lock number.
1187 #define SIO_SPINLOCK2_OFFSET _u(0x00000108)
1188 #define SIO_SPINLOCK2_BITS   _u(0xffffffff)
1189 #define SIO_SPINLOCK2_RESET  _u(0x00000000)
1190 #define SIO_SPINLOCK2_MSB    _u(31)
1191 #define SIO_SPINLOCK2_LSB    _u(0)
1192 #define SIO_SPINLOCK2_ACCESS "RW"
1193 // =============================================================================
1194 // Register    : SIO_SPINLOCK3
1195 // Description : Reading from a spinlock address will:
1196 //               - Return 0 if lock is already locked
1197 //               - Otherwise return nonzero, and simultaneously claim the lock
1198 //
1199 //               Writing (any value) releases the lock.
1200 //               If core 0 and core 1 attempt to claim the same lock
1201 //               simultaneously, core 0 wins.
1202 //               The value returned on success is 0x1 << lock number.
1203 #define SIO_SPINLOCK3_OFFSET _u(0x0000010c)
1204 #define SIO_SPINLOCK3_BITS   _u(0xffffffff)
1205 #define SIO_SPINLOCK3_RESET  _u(0x00000000)
1206 #define SIO_SPINLOCK3_MSB    _u(31)
1207 #define SIO_SPINLOCK3_LSB    _u(0)
1208 #define SIO_SPINLOCK3_ACCESS "RW"
1209 // =============================================================================
1210 // Register    : SIO_SPINLOCK4
1211 // Description : Reading from a spinlock address will:
1212 //               - Return 0 if lock is already locked
1213 //               - Otherwise return nonzero, and simultaneously claim the lock
1214 //
1215 //               Writing (any value) releases the lock.
1216 //               If core 0 and core 1 attempt to claim the same lock
1217 //               simultaneously, core 0 wins.
1218 //               The value returned on success is 0x1 << lock number.
1219 #define SIO_SPINLOCK4_OFFSET _u(0x00000110)
1220 #define SIO_SPINLOCK4_BITS   _u(0xffffffff)
1221 #define SIO_SPINLOCK4_RESET  _u(0x00000000)
1222 #define SIO_SPINLOCK4_MSB    _u(31)
1223 #define SIO_SPINLOCK4_LSB    _u(0)
1224 #define SIO_SPINLOCK4_ACCESS "RW"
1225 // =============================================================================
1226 // Register    : SIO_SPINLOCK5
1227 // Description : Reading from a spinlock address will:
1228 //               - Return 0 if lock is already locked
1229 //               - Otherwise return nonzero, and simultaneously claim the lock
1230 //
1231 //               Writing (any value) releases the lock.
1232 //               If core 0 and core 1 attempt to claim the same lock
1233 //               simultaneously, core 0 wins.
1234 //               The value returned on success is 0x1 << lock number.
1235 #define SIO_SPINLOCK5_OFFSET _u(0x00000114)
1236 #define SIO_SPINLOCK5_BITS   _u(0xffffffff)
1237 #define SIO_SPINLOCK5_RESET  _u(0x00000000)
1238 #define SIO_SPINLOCK5_MSB    _u(31)
1239 #define SIO_SPINLOCK5_LSB    _u(0)
1240 #define SIO_SPINLOCK5_ACCESS "RW"
1241 // =============================================================================
1242 // Register    : SIO_SPINLOCK6
1243 // Description : Reading from a spinlock address will:
1244 //               - Return 0 if lock is already locked
1245 //               - Otherwise return nonzero, and simultaneously claim the lock
1246 //
1247 //               Writing (any value) releases the lock.
1248 //               If core 0 and core 1 attempt to claim the same lock
1249 //               simultaneously, core 0 wins.
1250 //               The value returned on success is 0x1 << lock number.
1251 #define SIO_SPINLOCK6_OFFSET _u(0x00000118)
1252 #define SIO_SPINLOCK6_BITS   _u(0xffffffff)
1253 #define SIO_SPINLOCK6_RESET  _u(0x00000000)
1254 #define SIO_SPINLOCK6_MSB    _u(31)
1255 #define SIO_SPINLOCK6_LSB    _u(0)
1256 #define SIO_SPINLOCK6_ACCESS "RW"
1257 // =============================================================================
1258 // Register    : SIO_SPINLOCK7
1259 // Description : Reading from a spinlock address will:
1260 //               - Return 0 if lock is already locked
1261 //               - Otherwise return nonzero, and simultaneously claim the lock
1262 //
1263 //               Writing (any value) releases the lock.
1264 //               If core 0 and core 1 attempt to claim the same lock
1265 //               simultaneously, core 0 wins.
1266 //               The value returned on success is 0x1 << lock number.
1267 #define SIO_SPINLOCK7_OFFSET _u(0x0000011c)
1268 #define SIO_SPINLOCK7_BITS   _u(0xffffffff)
1269 #define SIO_SPINLOCK7_RESET  _u(0x00000000)
1270 #define SIO_SPINLOCK7_MSB    _u(31)
1271 #define SIO_SPINLOCK7_LSB    _u(0)
1272 #define SIO_SPINLOCK7_ACCESS "RW"
1273 // =============================================================================
1274 // Register    : SIO_SPINLOCK8
1275 // Description : Reading from a spinlock address will:
1276 //               - Return 0 if lock is already locked
1277 //               - Otherwise return nonzero, and simultaneously claim the lock
1278 //
1279 //               Writing (any value) releases the lock.
1280 //               If core 0 and core 1 attempt to claim the same lock
1281 //               simultaneously, core 0 wins.
1282 //               The value returned on success is 0x1 << lock number.
1283 #define SIO_SPINLOCK8_OFFSET _u(0x00000120)
1284 #define SIO_SPINLOCK8_BITS   _u(0xffffffff)
1285 #define SIO_SPINLOCK8_RESET  _u(0x00000000)
1286 #define SIO_SPINLOCK8_MSB    _u(31)
1287 #define SIO_SPINLOCK8_LSB    _u(0)
1288 #define SIO_SPINLOCK8_ACCESS "RW"
1289 // =============================================================================
1290 // Register    : SIO_SPINLOCK9
1291 // Description : Reading from a spinlock address will:
1292 //               - Return 0 if lock is already locked
1293 //               - Otherwise return nonzero, and simultaneously claim the lock
1294 //
1295 //               Writing (any value) releases the lock.
1296 //               If core 0 and core 1 attempt to claim the same lock
1297 //               simultaneously, core 0 wins.
1298 //               The value returned on success is 0x1 << lock number.
1299 #define SIO_SPINLOCK9_OFFSET _u(0x00000124)
1300 #define SIO_SPINLOCK9_BITS   _u(0xffffffff)
1301 #define SIO_SPINLOCK9_RESET  _u(0x00000000)
1302 #define SIO_SPINLOCK9_MSB    _u(31)
1303 #define SIO_SPINLOCK9_LSB    _u(0)
1304 #define SIO_SPINLOCK9_ACCESS "RW"
1305 // =============================================================================
1306 // Register    : SIO_SPINLOCK10
1307 // Description : Reading from a spinlock address will:
1308 //               - Return 0 if lock is already locked
1309 //               - Otherwise return nonzero, and simultaneously claim the lock
1310 //
1311 //               Writing (any value) releases the lock.
1312 //               If core 0 and core 1 attempt to claim the same lock
1313 //               simultaneously, core 0 wins.
1314 //               The value returned on success is 0x1 << lock number.
1315 #define SIO_SPINLOCK10_OFFSET _u(0x00000128)
1316 #define SIO_SPINLOCK10_BITS   _u(0xffffffff)
1317 #define SIO_SPINLOCK10_RESET  _u(0x00000000)
1318 #define SIO_SPINLOCK10_MSB    _u(31)
1319 #define SIO_SPINLOCK10_LSB    _u(0)
1320 #define SIO_SPINLOCK10_ACCESS "RW"
1321 // =============================================================================
1322 // Register    : SIO_SPINLOCK11
1323 // Description : Reading from a spinlock address will:
1324 //               - Return 0 if lock is already locked
1325 //               - Otherwise return nonzero, and simultaneously claim the lock
1326 //
1327 //               Writing (any value) releases the lock.
1328 //               If core 0 and core 1 attempt to claim the same lock
1329 //               simultaneously, core 0 wins.
1330 //               The value returned on success is 0x1 << lock number.
1331 #define SIO_SPINLOCK11_OFFSET _u(0x0000012c)
1332 #define SIO_SPINLOCK11_BITS   _u(0xffffffff)
1333 #define SIO_SPINLOCK11_RESET  _u(0x00000000)
1334 #define SIO_SPINLOCK11_MSB    _u(31)
1335 #define SIO_SPINLOCK11_LSB    _u(0)
1336 #define SIO_SPINLOCK11_ACCESS "RW"
1337 // =============================================================================
1338 // Register    : SIO_SPINLOCK12
1339 // Description : Reading from a spinlock address will:
1340 //               - Return 0 if lock is already locked
1341 //               - Otherwise return nonzero, and simultaneously claim the lock
1342 //
1343 //               Writing (any value) releases the lock.
1344 //               If core 0 and core 1 attempt to claim the same lock
1345 //               simultaneously, core 0 wins.
1346 //               The value returned on success is 0x1 << lock number.
1347 #define SIO_SPINLOCK12_OFFSET _u(0x00000130)
1348 #define SIO_SPINLOCK12_BITS   _u(0xffffffff)
1349 #define SIO_SPINLOCK12_RESET  _u(0x00000000)
1350 #define SIO_SPINLOCK12_MSB    _u(31)
1351 #define SIO_SPINLOCK12_LSB    _u(0)
1352 #define SIO_SPINLOCK12_ACCESS "RW"
1353 // =============================================================================
1354 // Register    : SIO_SPINLOCK13
1355 // Description : Reading from a spinlock address will:
1356 //               - Return 0 if lock is already locked
1357 //               - Otherwise return nonzero, and simultaneously claim the lock
1358 //
1359 //               Writing (any value) releases the lock.
1360 //               If core 0 and core 1 attempt to claim the same lock
1361 //               simultaneously, core 0 wins.
1362 //               The value returned on success is 0x1 << lock number.
1363 #define SIO_SPINLOCK13_OFFSET _u(0x00000134)
1364 #define SIO_SPINLOCK13_BITS   _u(0xffffffff)
1365 #define SIO_SPINLOCK13_RESET  _u(0x00000000)
1366 #define SIO_SPINLOCK13_MSB    _u(31)
1367 #define SIO_SPINLOCK13_LSB    _u(0)
1368 #define SIO_SPINLOCK13_ACCESS "RW"
1369 // =============================================================================
1370 // Register    : SIO_SPINLOCK14
1371 // Description : Reading from a spinlock address will:
1372 //               - Return 0 if lock is already locked
1373 //               - Otherwise return nonzero, and simultaneously claim the lock
1374 //
1375 //               Writing (any value) releases the lock.
1376 //               If core 0 and core 1 attempt to claim the same lock
1377 //               simultaneously, core 0 wins.
1378 //               The value returned on success is 0x1 << lock number.
1379 #define SIO_SPINLOCK14_OFFSET _u(0x00000138)
1380 #define SIO_SPINLOCK14_BITS   _u(0xffffffff)
1381 #define SIO_SPINLOCK14_RESET  _u(0x00000000)
1382 #define SIO_SPINLOCK14_MSB    _u(31)
1383 #define SIO_SPINLOCK14_LSB    _u(0)
1384 #define SIO_SPINLOCK14_ACCESS "RW"
1385 // =============================================================================
1386 // Register    : SIO_SPINLOCK15
1387 // Description : Reading from a spinlock address will:
1388 //               - Return 0 if lock is already locked
1389 //               - Otherwise return nonzero, and simultaneously claim the lock
1390 //
1391 //               Writing (any value) releases the lock.
1392 //               If core 0 and core 1 attempt to claim the same lock
1393 //               simultaneously, core 0 wins.
1394 //               The value returned on success is 0x1 << lock number.
1395 #define SIO_SPINLOCK15_OFFSET _u(0x0000013c)
1396 #define SIO_SPINLOCK15_BITS   _u(0xffffffff)
1397 #define SIO_SPINLOCK15_RESET  _u(0x00000000)
1398 #define SIO_SPINLOCK15_MSB    _u(31)
1399 #define SIO_SPINLOCK15_LSB    _u(0)
1400 #define SIO_SPINLOCK15_ACCESS "RW"
1401 // =============================================================================
1402 // Register    : SIO_SPINLOCK16
1403 // Description : Reading from a spinlock address will:
1404 //               - Return 0 if lock is already locked
1405 //               - Otherwise return nonzero, and simultaneously claim the lock
1406 //
1407 //               Writing (any value) releases the lock.
1408 //               If core 0 and core 1 attempt to claim the same lock
1409 //               simultaneously, core 0 wins.
1410 //               The value returned on success is 0x1 << lock number.
1411 #define SIO_SPINLOCK16_OFFSET _u(0x00000140)
1412 #define SIO_SPINLOCK16_BITS   _u(0xffffffff)
1413 #define SIO_SPINLOCK16_RESET  _u(0x00000000)
1414 #define SIO_SPINLOCK16_MSB    _u(31)
1415 #define SIO_SPINLOCK16_LSB    _u(0)
1416 #define SIO_SPINLOCK16_ACCESS "RW"
1417 // =============================================================================
1418 // Register    : SIO_SPINLOCK17
1419 // Description : Reading from a spinlock address will:
1420 //               - Return 0 if lock is already locked
1421 //               - Otherwise return nonzero, and simultaneously claim the lock
1422 //
1423 //               Writing (any value) releases the lock.
1424 //               If core 0 and core 1 attempt to claim the same lock
1425 //               simultaneously, core 0 wins.
1426 //               The value returned on success is 0x1 << lock number.
1427 #define SIO_SPINLOCK17_OFFSET _u(0x00000144)
1428 #define SIO_SPINLOCK17_BITS   _u(0xffffffff)
1429 #define SIO_SPINLOCK17_RESET  _u(0x00000000)
1430 #define SIO_SPINLOCK17_MSB    _u(31)
1431 #define SIO_SPINLOCK17_LSB    _u(0)
1432 #define SIO_SPINLOCK17_ACCESS "RW"
1433 // =============================================================================
1434 // Register    : SIO_SPINLOCK18
1435 // Description : Reading from a spinlock address will:
1436 //               - Return 0 if lock is already locked
1437 //               - Otherwise return nonzero, and simultaneously claim the lock
1438 //
1439 //               Writing (any value) releases the lock.
1440 //               If core 0 and core 1 attempt to claim the same lock
1441 //               simultaneously, core 0 wins.
1442 //               The value returned on success is 0x1 << lock number.
1443 #define SIO_SPINLOCK18_OFFSET _u(0x00000148)
1444 #define SIO_SPINLOCK18_BITS   _u(0xffffffff)
1445 #define SIO_SPINLOCK18_RESET  _u(0x00000000)
1446 #define SIO_SPINLOCK18_MSB    _u(31)
1447 #define SIO_SPINLOCK18_LSB    _u(0)
1448 #define SIO_SPINLOCK18_ACCESS "RW"
1449 // =============================================================================
1450 // Register    : SIO_SPINLOCK19
1451 // Description : Reading from a spinlock address will:
1452 //               - Return 0 if lock is already locked
1453 //               - Otherwise return nonzero, and simultaneously claim the lock
1454 //
1455 //               Writing (any value) releases the lock.
1456 //               If core 0 and core 1 attempt to claim the same lock
1457 //               simultaneously, core 0 wins.
1458 //               The value returned on success is 0x1 << lock number.
1459 #define SIO_SPINLOCK19_OFFSET _u(0x0000014c)
1460 #define SIO_SPINLOCK19_BITS   _u(0xffffffff)
1461 #define SIO_SPINLOCK19_RESET  _u(0x00000000)
1462 #define SIO_SPINLOCK19_MSB    _u(31)
1463 #define SIO_SPINLOCK19_LSB    _u(0)
1464 #define SIO_SPINLOCK19_ACCESS "RW"
1465 // =============================================================================
1466 // Register    : SIO_SPINLOCK20
1467 // Description : Reading from a spinlock address will:
1468 //               - Return 0 if lock is already locked
1469 //               - Otherwise return nonzero, and simultaneously claim the lock
1470 //
1471 //               Writing (any value) releases the lock.
1472 //               If core 0 and core 1 attempt to claim the same lock
1473 //               simultaneously, core 0 wins.
1474 //               The value returned on success is 0x1 << lock number.
1475 #define SIO_SPINLOCK20_OFFSET _u(0x00000150)
1476 #define SIO_SPINLOCK20_BITS   _u(0xffffffff)
1477 #define SIO_SPINLOCK20_RESET  _u(0x00000000)
1478 #define SIO_SPINLOCK20_MSB    _u(31)
1479 #define SIO_SPINLOCK20_LSB    _u(0)
1480 #define SIO_SPINLOCK20_ACCESS "RW"
1481 // =============================================================================
1482 // Register    : SIO_SPINLOCK21
1483 // Description : Reading from a spinlock address will:
1484 //               - Return 0 if lock is already locked
1485 //               - Otherwise return nonzero, and simultaneously claim the lock
1486 //
1487 //               Writing (any value) releases the lock.
1488 //               If core 0 and core 1 attempt to claim the same lock
1489 //               simultaneously, core 0 wins.
1490 //               The value returned on success is 0x1 << lock number.
1491 #define SIO_SPINLOCK21_OFFSET _u(0x00000154)
1492 #define SIO_SPINLOCK21_BITS   _u(0xffffffff)
1493 #define SIO_SPINLOCK21_RESET  _u(0x00000000)
1494 #define SIO_SPINLOCK21_MSB    _u(31)
1495 #define SIO_SPINLOCK21_LSB    _u(0)
1496 #define SIO_SPINLOCK21_ACCESS "RW"
1497 // =============================================================================
1498 // Register    : SIO_SPINLOCK22
1499 // Description : Reading from a spinlock address will:
1500 //               - Return 0 if lock is already locked
1501 //               - Otherwise return nonzero, and simultaneously claim the lock
1502 //
1503 //               Writing (any value) releases the lock.
1504 //               If core 0 and core 1 attempt to claim the same lock
1505 //               simultaneously, core 0 wins.
1506 //               The value returned on success is 0x1 << lock number.
1507 #define SIO_SPINLOCK22_OFFSET _u(0x00000158)
1508 #define SIO_SPINLOCK22_BITS   _u(0xffffffff)
1509 #define SIO_SPINLOCK22_RESET  _u(0x00000000)
1510 #define SIO_SPINLOCK22_MSB    _u(31)
1511 #define SIO_SPINLOCK22_LSB    _u(0)
1512 #define SIO_SPINLOCK22_ACCESS "RW"
1513 // =============================================================================
1514 // Register    : SIO_SPINLOCK23
1515 // Description : Reading from a spinlock address will:
1516 //               - Return 0 if lock is already locked
1517 //               - Otherwise return nonzero, and simultaneously claim the lock
1518 //
1519 //               Writing (any value) releases the lock.
1520 //               If core 0 and core 1 attempt to claim the same lock
1521 //               simultaneously, core 0 wins.
1522 //               The value returned on success is 0x1 << lock number.
1523 #define SIO_SPINLOCK23_OFFSET _u(0x0000015c)
1524 #define SIO_SPINLOCK23_BITS   _u(0xffffffff)
1525 #define SIO_SPINLOCK23_RESET  _u(0x00000000)
1526 #define SIO_SPINLOCK23_MSB    _u(31)
1527 #define SIO_SPINLOCK23_LSB    _u(0)
1528 #define SIO_SPINLOCK23_ACCESS "RW"
1529 // =============================================================================
1530 // Register    : SIO_SPINLOCK24
1531 // Description : Reading from a spinlock address will:
1532 //               - Return 0 if lock is already locked
1533 //               - Otherwise return nonzero, and simultaneously claim the lock
1534 //
1535 //               Writing (any value) releases the lock.
1536 //               If core 0 and core 1 attempt to claim the same lock
1537 //               simultaneously, core 0 wins.
1538 //               The value returned on success is 0x1 << lock number.
1539 #define SIO_SPINLOCK24_OFFSET _u(0x00000160)
1540 #define SIO_SPINLOCK24_BITS   _u(0xffffffff)
1541 #define SIO_SPINLOCK24_RESET  _u(0x00000000)
1542 #define SIO_SPINLOCK24_MSB    _u(31)
1543 #define SIO_SPINLOCK24_LSB    _u(0)
1544 #define SIO_SPINLOCK24_ACCESS "RW"
1545 // =============================================================================
1546 // Register    : SIO_SPINLOCK25
1547 // Description : Reading from a spinlock address will:
1548 //               - Return 0 if lock is already locked
1549 //               - Otherwise return nonzero, and simultaneously claim the lock
1550 //
1551 //               Writing (any value) releases the lock.
1552 //               If core 0 and core 1 attempt to claim the same lock
1553 //               simultaneously, core 0 wins.
1554 //               The value returned on success is 0x1 << lock number.
1555 #define SIO_SPINLOCK25_OFFSET _u(0x00000164)
1556 #define SIO_SPINLOCK25_BITS   _u(0xffffffff)
1557 #define SIO_SPINLOCK25_RESET  _u(0x00000000)
1558 #define SIO_SPINLOCK25_MSB    _u(31)
1559 #define SIO_SPINLOCK25_LSB    _u(0)
1560 #define SIO_SPINLOCK25_ACCESS "RW"
1561 // =============================================================================
1562 // Register    : SIO_SPINLOCK26
1563 // Description : Reading from a spinlock address will:
1564 //               - Return 0 if lock is already locked
1565 //               - Otherwise return nonzero, and simultaneously claim the lock
1566 //
1567 //               Writing (any value) releases the lock.
1568 //               If core 0 and core 1 attempt to claim the same lock
1569 //               simultaneously, core 0 wins.
1570 //               The value returned on success is 0x1 << lock number.
1571 #define SIO_SPINLOCK26_OFFSET _u(0x00000168)
1572 #define SIO_SPINLOCK26_BITS   _u(0xffffffff)
1573 #define SIO_SPINLOCK26_RESET  _u(0x00000000)
1574 #define SIO_SPINLOCK26_MSB    _u(31)
1575 #define SIO_SPINLOCK26_LSB    _u(0)
1576 #define SIO_SPINLOCK26_ACCESS "RW"
1577 // =============================================================================
1578 // Register    : SIO_SPINLOCK27
1579 // Description : Reading from a spinlock address will:
1580 //               - Return 0 if lock is already locked
1581 //               - Otherwise return nonzero, and simultaneously claim the lock
1582 //
1583 //               Writing (any value) releases the lock.
1584 //               If core 0 and core 1 attempt to claim the same lock
1585 //               simultaneously, core 0 wins.
1586 //               The value returned on success is 0x1 << lock number.
1587 #define SIO_SPINLOCK27_OFFSET _u(0x0000016c)
1588 #define SIO_SPINLOCK27_BITS   _u(0xffffffff)
1589 #define SIO_SPINLOCK27_RESET  _u(0x00000000)
1590 #define SIO_SPINLOCK27_MSB    _u(31)
1591 #define SIO_SPINLOCK27_LSB    _u(0)
1592 #define SIO_SPINLOCK27_ACCESS "RW"
1593 // =============================================================================
1594 // Register    : SIO_SPINLOCK28
1595 // Description : Reading from a spinlock address will:
1596 //               - Return 0 if lock is already locked
1597 //               - Otherwise return nonzero, and simultaneously claim the lock
1598 //
1599 //               Writing (any value) releases the lock.
1600 //               If core 0 and core 1 attempt to claim the same lock
1601 //               simultaneously, core 0 wins.
1602 //               The value returned on success is 0x1 << lock number.
1603 #define SIO_SPINLOCK28_OFFSET _u(0x00000170)
1604 #define SIO_SPINLOCK28_BITS   _u(0xffffffff)
1605 #define SIO_SPINLOCK28_RESET  _u(0x00000000)
1606 #define SIO_SPINLOCK28_MSB    _u(31)
1607 #define SIO_SPINLOCK28_LSB    _u(0)
1608 #define SIO_SPINLOCK28_ACCESS "RW"
1609 // =============================================================================
1610 // Register    : SIO_SPINLOCK29
1611 // Description : Reading from a spinlock address will:
1612 //               - Return 0 if lock is already locked
1613 //               - Otherwise return nonzero, and simultaneously claim the lock
1614 //
1615 //               Writing (any value) releases the lock.
1616 //               If core 0 and core 1 attempt to claim the same lock
1617 //               simultaneously, core 0 wins.
1618 //               The value returned on success is 0x1 << lock number.
1619 #define SIO_SPINLOCK29_OFFSET _u(0x00000174)
1620 #define SIO_SPINLOCK29_BITS   _u(0xffffffff)
1621 #define SIO_SPINLOCK29_RESET  _u(0x00000000)
1622 #define SIO_SPINLOCK29_MSB    _u(31)
1623 #define SIO_SPINLOCK29_LSB    _u(0)
1624 #define SIO_SPINLOCK29_ACCESS "RW"
1625 // =============================================================================
1626 // Register    : SIO_SPINLOCK30
1627 // Description : Reading from a spinlock address will:
1628 //               - Return 0 if lock is already locked
1629 //               - Otherwise return nonzero, and simultaneously claim the lock
1630 //
1631 //               Writing (any value) releases the lock.
1632 //               If core 0 and core 1 attempt to claim the same lock
1633 //               simultaneously, core 0 wins.
1634 //               The value returned on success is 0x1 << lock number.
1635 #define SIO_SPINLOCK30_OFFSET _u(0x00000178)
1636 #define SIO_SPINLOCK30_BITS   _u(0xffffffff)
1637 #define SIO_SPINLOCK30_RESET  _u(0x00000000)
1638 #define SIO_SPINLOCK30_MSB    _u(31)
1639 #define SIO_SPINLOCK30_LSB    _u(0)
1640 #define SIO_SPINLOCK30_ACCESS "RW"
1641 // =============================================================================
1642 // Register    : SIO_SPINLOCK31
1643 // Description : Reading from a spinlock address will:
1644 //               - Return 0 if lock is already locked
1645 //               - Otherwise return nonzero, and simultaneously claim the lock
1646 //
1647 //               Writing (any value) releases the lock.
1648 //               If core 0 and core 1 attempt to claim the same lock
1649 //               simultaneously, core 0 wins.
1650 //               The value returned on success is 0x1 << lock number.
1651 #define SIO_SPINLOCK31_OFFSET _u(0x0000017c)
1652 #define SIO_SPINLOCK31_BITS   _u(0xffffffff)
1653 #define SIO_SPINLOCK31_RESET  _u(0x00000000)
1654 #define SIO_SPINLOCK31_MSB    _u(31)
1655 #define SIO_SPINLOCK31_LSB    _u(0)
1656 #define SIO_SPINLOCK31_ACCESS "RW"
1657 // =============================================================================
1658 #endif // _HARDWARE_REGS_SIO_H
1659 
1660