From c16a43cdd37df11c8f3076bb2745e65a34fe2e9d Mon Sep 17 00:00:00 2001 From: Levi Pearson Date: Wed, 27 Mar 2019 04:52:31 -0600 Subject: [PATCH] Fix bit-band access --- src/bitband.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bitband.rs b/src/bitband.rs index bed03da..79f5d7d 100644 --- a/src/bitband.rs +++ b/src/bitband.rs @@ -23,7 +23,7 @@ const PERIPHERAL_LIMIT: usize = 0x4010_0000; const ALIAS_OFFSET: usize = 0x0200_0000; const REGION_MASK: usize = 0xF000_0000; -const WORD_MASK: usize = 0x0FFF_0000; +const WORD_MASK: usize = 0x0FFF_FFFF; /// Atomically sets (via read/modify/write) a single bit at the given address /// without affecting other bits in that memory location. @@ -31,7 +31,7 @@ const WORD_MASK: usize = 0x0FFF_0000; pub unsafe fn set_bit(address: *const T, bit: u8) { let address = address as usize; let bit_address = bitband_alias_of(address, bit); - write_volatile(bit_address as *mut _, 0x01); + write_volatile(bit_address as *mut u16, 0x01); } /// Atomically clears (via read/modify/write) a single bit at the given address @@ -40,7 +40,7 @@ pub unsafe fn set_bit(address: *const T, bit: u8) { pub unsafe fn clear_bit(address: *const T, bit: u8) { let address = address as usize; let bit_address = bitband_alias_of(address, bit); - write_volatile(bit_address as *mut _, 0x00); + write_volatile(bit_address as *mut u16, 0x00); } /// Reads a single bit at the given address without affecting other @@ -49,7 +49,7 @@ pub unsafe fn clear_bit(address: *const T, bit: u8) { pub unsafe fn read_bit(address: *const T, bit: u8) -> T { let address = address as usize; let bit_address = bitband_alias_of(address, bit); - read_volatile(bit_address as *const _) + read_volatile(bit_address as *const T) } /// Calculate the address in the bitband region of the given bit