File tree Expand file tree Collapse file tree 1 file changed +10
-2
lines changed Expand file tree Collapse file tree 1 file changed +10
-2
lines changed Original file line number Diff line number Diff line change @@ -42,11 +42,19 @@ impl fmt::Display for Iort {
42
42
43
43
impl Iort {
44
44
pub fn nodes ( & self ) -> IortNodeIter {
45
- let pointer = unsafe { ( self as * const Iort ) . add ( 1 ) as * const u8 } ;
46
- let remaining_length = self . header . length as u32 - core:: mem:: size_of :: < Iort > ( ) as u32 ;
45
+ let node_offset = self . node_array_offset as usize ;
46
+ let pointer = unsafe { ( self as * const Iort as * const u8 ) . add ( node_offset) } ;
47
+ let remaining_length = self . header . length as u32 - node_offset as u32 ;
47
48
48
49
IortNodeIter { pointer, remaining_length, _phantom : PhantomData }
49
50
}
51
+
52
+ pub fn smmuv3_bases ( & self ) -> impl Iterator < Item = u64 > + ' _ {
53
+ self . nodes ( ) . filter_map ( |node| match node {
54
+ IortNode :: SmmuV3 ( smmu_v3) => Some ( smmu_v3. base_address ) ,
55
+ _ => None ,
56
+ } )
57
+ }
50
58
}
51
59
52
60
#[ derive( Debug , Clone , Copy ) ]
You can’t perform that action at this time.
0 commit comments