Document unsafe blocks
Add safety documentation for each unsafe block and enable related clippy
warnings.
Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: I411ed121160f3c71eb0ae0c336314a964eb18719
diff --git a/src/lib.rs b/src/lib.rs
index b23e7d1..a5cbea0 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -80,6 +80,7 @@
const UNLOCK: u32 = 0x1ACCE551;
pub fn new(regs: &'a mut R) -> Self {
+ // SAFETY: regs can be dereferenced as a valid SP805 register block
unsafe {
addr_of_mut!(regs.wdog_lock).write_volatile(Self::UNLOCK);
}
@@ -112,6 +113,7 @@
R: DerefMut<Target = SP805Registers>,
{
fn drop(&mut self) {
+ // SAFETY: self.regs can be dereferenced as a valid SP805 register block
unsafe {
addr_of_mut!(self.regs.wdog_lock).write_volatile(Self::LOCK);
}
@@ -141,6 +143,7 @@
let load_value = self.load_value;
let mut regs = self.unlock();
+ // SAFETY: self.regs can be dereferenced as a valid SP805 register block
unsafe {
addr_of_mut!(regs.wdog_load).write_volatile(load_value);
addr_of_mut!(regs.wdog_intclr).write_volatile(1);
@@ -151,6 +154,7 @@
/// Disable watchdog
pub fn disable(&mut self) {
+ // SAFETY: self.regs can be dereferenced as a valid SP805 register block
unsafe {
addr_of_mut!(self.unlock().wdog_control)
.write_volatile(ControlRegister::empty().bits());
@@ -161,6 +165,7 @@
pub fn update(&mut self) {
let load_value = self.load_value;
+ // SAFETY: self.regs can be dereferenced as a valid SP805 register block
unsafe {
addr_of_mut!(self.unlock().wdog_load).write_volatile(load_value);
}