@@ -61,10 +61,11 @@ pub struct IoMem<const SIZE: usize> {
61
61
}
62
62
63
63
macro_rules! define_read {
64
- ( $name: ident, $try_name: ident, $type_name: ty) => {
64
+ ( $( # [ $attr : meta ] ) * $ name: ident, $try_name: ident, $type_name: ty) => {
65
65
/// Reads IO data from the given offset known, at compile time.
66
66
///
67
67
/// If the offset is not known at compile time, the build will fail.
68
+ $( #[ $attr] ) *
68
69
pub fn $name( & self , offset: usize ) -> $type_name {
69
70
Self :: check_offset:: <$type_name>( offset) ;
70
71
let ptr = self . ptr. wrapping_add( offset) ;
@@ -77,6 +78,7 @@ macro_rules! define_read {
77
78
/// Reads IO data from the given offset.
78
79
///
79
80
/// It fails if/when the offset (plus the type size) is out of bounds.
81
+ $( #[ $attr] ) *
80
82
pub fn $try_name( & self , offset: usize ) -> Result <$type_name> {
81
83
if !Self :: offset_ok:: <$type_name>( offset) {
82
84
return Err ( Error :: EINVAL ) ;
@@ -91,10 +93,11 @@ macro_rules! define_read {
91
93
}
92
94
93
95
macro_rules! define_write {
94
- ( $name: ident, $try_name: ident, $type_name: ty) => {
96
+ ( $( # [ $attr : meta ] ) * $ name: ident, $try_name: ident, $type_name: ty) => {
95
97
/// Writes IO data to the given offset, known at compile time.
96
98
///
97
99
/// If the offset is not known at compile time, the build will fail.
100
+ $( #[ $attr] ) *
98
101
pub fn $name( & self , value: $type_name, offset: usize ) {
99
102
Self :: check_offset:: <$type_name>( offset) ;
100
103
let ptr = self . ptr. wrapping_add( offset) ;
@@ -107,6 +110,7 @@ macro_rules! define_write {
107
110
/// Writes IO data to the given offset.
108
111
///
109
112
/// It fails if/when the offset (plus the type size) is out of bounds.
113
+ $( #[ $attr] ) *
110
114
pub fn $try_name( & self , value: $type_name, offset: usize ) -> Result {
111
115
if !Self :: offset_ok:: <$type_name>( offset) {
112
116
return Err ( Error :: EINVAL ) ;
@@ -174,12 +178,22 @@ impl<const SIZE: usize> IoMem<SIZE> {
174
178
define_read ! ( readb, try_readb, u8 ) ;
175
179
define_read ! ( readw, try_readw, u16 ) ;
176
180
define_read ! ( readl, try_readl, u32 ) ;
177
- define_read ! ( readq, try_readq, u64 ) ;
181
+ define_read ! (
182
+ #[ cfg( CONFIG_64BIT ) ]
183
+ readq,
184
+ try_readq,
185
+ u64
186
+ ) ;
178
187
179
188
define_write ! ( writeb, try_writeb, u8 ) ;
180
189
define_write ! ( writew, try_writew, u16 ) ;
181
190
define_write ! ( writel, try_writel, u32 ) ;
182
- define_write ! ( writeq, try_writeq, u64 ) ;
191
+ define_write ! (
192
+ #[ cfg( CONFIG_64BIT ) ]
193
+ writeq,
194
+ try_writeq,
195
+ u64
196
+ ) ;
183
197
}
184
198
185
199
impl < const SIZE : usize > Drop for IoMem < SIZE > {
0 commit comments