| 1 | //! Implementation Control Block |
| 2 | |
| 3 | #[cfg (any(armv7m, armv8m, native))] |
| 4 | use volatile_register::RO; |
| 5 | use volatile_register::RW; |
| 6 | |
| 7 | /// Register block |
| 8 | #[repr (C)] |
| 9 | pub struct RegisterBlock { |
| 10 | /// Interrupt Controller Type Register |
| 11 | /// |
| 12 | /// The bottom four bits of this register give the number of implemented |
| 13 | /// interrupt lines, divided by 32. So a value of `0b0010` indicates 64 |
| 14 | /// interrupts. |
| 15 | #[cfg (any(armv7m, armv8m, native))] |
| 16 | pub ictr: RO<u32>, |
| 17 | |
| 18 | /// The ICTR is not defined in the ARMv6-M Architecture Reference manual, so |
| 19 | /// we replace it with this. |
| 20 | #[cfg (not(any(armv7m, armv8m, native)))] |
| 21 | _reserved: u32, |
| 22 | |
| 23 | /// Auxiliary Control Register |
| 24 | /// |
| 25 | /// This register is entirely implementation defined -- the standard gives |
| 26 | /// it an address, but does not define its role or contents. |
| 27 | pub actlr: RW<u32>, |
| 28 | |
| 29 | /// Coprocessor Power Control Register |
| 30 | #[cfg (armv8m)] |
| 31 | pub cppwr: RW<u32>, |
| 32 | } |
| 33 | |