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