From fe68f644464b8182f6e04c1c75db23861ac3e034 Mon Sep 17 00:00:00 2001 From: Sean Cross Date: Sun, 27 Sep 2020 11:51:17 +0800 Subject: [PATCH] lib: fix accessors so they actually work We were taking an address of the address, rather than transmuting the address itself. Signed-off-by: Sean Cross --- src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 306ac5d..9fc025b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -85,14 +85,14 @@ where CSR { base } } pub fn r(&mut self, field: Field) -> T { - let usize_base: *mut usize = unsafe { core::mem::transmute(&self.base) }; + let usize_base: *mut usize = unsafe { core::mem::transmute(self.base) }; ((unsafe { usize_base.add(field.register.offset).read_volatile() } >> field.offset) & field.mask) .try_into() .unwrap_or_default() } pub fn rw(&mut self, field: Field, value: T) { - let usize_base: *mut usize = unsafe { core::mem::transmute(&self.base) }; + let usize_base: *mut usize = unsafe { core::mem::transmute(self.base) }; let value_as_usize: usize = value.try_into().unwrap_or_default() << field.offset; let previous = unsafe { usize_base.add(field.register.offset).read_volatile() } & !field.mask; @@ -103,7 +103,7 @@ where }; } pub fn ow(&mut self, field: Field, value: T) { - let usize_base: *mut usize = unsafe { core::mem::transmute(&self.base) }; + let usize_base: *mut usize = unsafe { core::mem::transmute(self.base) }; let value_as_usize: usize = value.try_into().unwrap_or_default() << field.offset; unsafe { usize_base