File tree Expand file tree Collapse file tree 1 file changed +17
-9
lines changed Expand file tree Collapse file tree 1 file changed +17
-9
lines changed Original file line number Diff line number Diff line change @@ -1343,15 +1343,23 @@ pub fn fields(
1343
1343
}
1344
1344
1345
1345
// Update register modify bit masks
1346
- let bitmask = ( u64:: MAX >> ( 64 - width) ) << offset;
1347
- use ModifiedWriteValues :: * ;
1348
- match mwv {
1349
- Modify | Set | Clear => { }
1350
- OneToSet | OneToClear | OneToToggle => {
1351
- one_to_modify_fields_bitmap |= bitmask;
1352
- }
1353
- ZeroToClear | ZeroToSet | ZeroToToggle => {
1354
- zero_to_modify_fields_bitmap |= bitmask;
1346
+ let offsets = match f {
1347
+ MaybeArray :: Array ( info, dim) => ( 0 ..dim. dim )
1348
+ . map ( |i| i * dim. dim_increment + info. bit_offset ( ) )
1349
+ . collect ( ) ,
1350
+ MaybeArray :: Single ( info) => vec ! [ info. bit_offset( ) ] ,
1351
+ } ;
1352
+ for o in offsets {
1353
+ let bitmask = ( u64:: MAX >> ( 64 - width) ) << o;
1354
+ use ModifiedWriteValues :: * ;
1355
+ match mwv {
1356
+ Modify | Set | Clear => { }
1357
+ OneToSet | OneToClear | OneToToggle => {
1358
+ one_to_modify_fields_bitmap |= bitmask;
1359
+ }
1360
+ ZeroToClear | ZeroToSet | ZeroToToggle => {
1361
+ zero_to_modify_fields_bitmap |= bitmask;
1362
+ }
1355
1363
}
1356
1364
}
1357
1365
}
You can’t perform that action at this time.
0 commit comments