|
@@ -2,15 +2,15 @@
|
|
|
|
|
|
use core::ptr;
|
|
|
|
|
|
-pub fn clear<T>(register: *const T, bit: u8) {
|
|
|
+pub unsafe fn clear<T>(register: *const T, bit: u8) {
|
|
|
write(register, bit, false);
|
|
|
}
|
|
|
|
|
|
-pub fn set<T>(register: *const T, bit: u8) {
|
|
|
+pub unsafe fn set<T>(register: *const T, bit: u8) {
|
|
|
write(register, bit, true);
|
|
|
}
|
|
|
|
|
|
-pub fn write<T>(register: *const T, bit: u8, set: bool) {
|
|
|
+pub unsafe fn write<T>(register: *const T, bit: u8, set: bool) {
|
|
|
let addr = register as usize;
|
|
|
|
|
|
assert!(addr >= 0x4000_0000 && addr <= 0x4010_0000);
|
|
@@ -18,5 +18,5 @@ pub fn write<T>(register: *const T, bit: u8, set: bool) {
|
|
|
|
|
|
let bit = bit as usize;
|
|
|
let bb_addr = (0x4200_0000 + (addr - 0x4000_0000) * 32) + 4 * bit;
|
|
|
- unsafe { ptr::write_volatile(bb_addr as *mut u32, if set { 1 } else { 0 }) }
|
|
|
+ ptr::write_volatile(bb_addr as *mut u32, if set { 1 } else { 0 })
|
|
|
}
|