Last active
October 21, 2021 12:22
-
-
Save mygnu/ed30b0fd8c22ccfb034dcf8512eca96d to your computer and use it in GitHub Desktop.
CONFIGFRS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub const B0: u32 = 1 << 0; | |
pub const B1: u32 = 1 << 1; | |
pub const B2: u32 = 1 << 2; | |
pub const B3: u32 = 1 << 3; | |
pub const B4: u32 = 1 << 4; | |
pub const B5: u32 = 1 << 5; | |
pub const B6: u32 = 1 << 6; | |
pub const B7: u32 = 1 << 7; | |
pub const B8: u32 = 1 << 8; | |
pub const B9: u32 = 1 << 9; | |
pub const B10: u32 = 1 << 10; | |
pub const B11: u32 = 1 << 11; | |
pub const B12: u32 = 1 << 12; | |
pub const B13: u32 = 1 << 13; | |
pub const B14: u32 = 1 << 14; | |
pub const B15: u32 = 1 << 15; | |
pub const B16: u32 = 1 << 16; | |
pub const B17: u32 = 1 << 17; | |
pub const B18: u32 = 1 << 18; | |
pub const B19: u32 = 1 << 19; | |
pub const B20: u32 = 1 << 20; | |
pub const B21: u32 = 1 << 21; | |
pub const B22: u32 = 1 << 22; | |
pub const B23: u32 = 1 << 23; | |
pub const B24: u32 = 1 << 24; | |
pub const B25: u32 = 1 << 25; | |
pub const B26: u32 = 1 << 26; | |
pub const B27: u32 = 1 << 27; | |
pub const B28: u32 = 1 << 28; | |
pub const B29: u32 = 1 << 29; | |
pub const B30: u32 = 1 << 30; | |
pub const B31: u32 = 1 << 31; | |
const fn reset(mut val: u32, rhs: u32) -> u32 { | |
val &= !rhs; | |
val | |
} | |
const fn set(mut val: u32, rhs: u32) -> u32 { | |
val |= rhs; | |
val | |
} | |
/// example usage | |
/// #[link_section = ".configsfrs"] | |
/// #[no_mangle] | |
/// pub static CONFIGSFRS: [u32; 4] = ConfigsfrsBuilder::default().set_code_protection().build(); | |
pub struct ConfigsfrsBuilder { | |
r3: u32, | |
r2: u32, | |
r1: u32, | |
r0: u32, | |
} | |
impl ConfigsfrsBuilder { | |
pub const fn default() -> Self { | |
Self { | |
r3: 0x0fffffff, // DEVCFG3 | |
r2: 0xfff9ffd9, // DEVCFG2 | |
r1: 0xff7fcfd9, // DEVCFG1 | |
r0: 0x7ffffffb, // DEVCFG0 | |
} | |
} | |
pub const fn set_code_protection(mut self) -> Self { | |
self.r0 = reset(self.r0, B28); | |
self | |
} | |
pub const fn build(self) -> [u32; 4] { | |
[self.r3, self.r2, self.r1, self.r0] | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment