Skip to content

Commit 79bf39b

Browse files
authored
Implement Default for registers without RsvdP bits (#147)
* Implement Default for registers without RsvdP bits For these registers it is fine (and even correct[1]) to perform a write without a read. This allows code to be a bit more efficient. [1] RsvdZ bits are reserved for future RW1C bits. Software should write 0 to them by default. * Update changelog
1 parent e4f3764 commit 79bf39b

File tree

4 files changed

+6
-4
lines changed

4 files changed

+6
-4
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Changelog
22

33
## Unreleased - ReleaseDate
4+
### Added
5+
- `Default` implementations for registers without RsvdP bits, which allows avoiding a redundant read.
46

57
## 0.9.0 - 2022-08-23
68
### Changed

src/registers/doorbell.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use core::{convert::TryFrom, fmt};
77

88
/// The element of the Doorbell Array.
99
#[repr(transparent)]
10-
#[derive(Copy, Clone)]
10+
#[derive(Copy, Clone, Default)]
1111
pub struct Register(u32);
1212
impl Register {
1313
/// Creates a new accessor to the Doorbell Array.

src/registers/operational.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ impl_debug_from_methods! {
240240

241241
/// Device Context Base Address Array Pointer Register
242242
#[repr(transparent)]
243-
#[derive(Copy, Clone, Debug)]
243+
#[derive(Copy, Clone, Debug, Default)]
244244
pub struct DeviceContextBaseAddressArrayPointerRegister(u64);
245245
impl DeviceContextBaseAddressArrayPointerRegister {
246246
/// Returns the value of the Device Context Base Address Array Pointer.

src/registers/runtime.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ impl_debug_from_methods! {
178178

179179
/// Interrupter Moderation Register.
180180
#[repr(transparent)]
181-
#[derive(Copy, Clone)]
181+
#[derive(Copy, Clone, Default)]
182182
pub struct InterrupterModerationRegister(u32);
183183
impl InterrupterModerationRegister {
184184
rw_field!(
@@ -245,7 +245,7 @@ impl EventRingSegmentTableBaseAddressRegister {
245245

246246
/// Event Ring Dequeue Pointer Register.
247247
#[repr(transparent)]
248-
#[derive(Copy, Clone)]
248+
#[derive(Copy, Clone, Default)]
249249
pub struct EventRingDequeuePointerRegister(u64);
250250
impl EventRingDequeuePointerRegister {
251251
rw_field!(

0 commit comments

Comments
 (0)