@@ -475,19 +475,21 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
475
475
// offset from the base address, in bytes
476
476
let mut offset = 0 ;
477
477
let mut registers_expanded = vec ! [ ] ;
478
-
478
+
479
479
for register in registers {
480
+ let register_size = register. size . or ( defs. size )
481
+ . ok_or_else (
482
+ || {
483
+ format ! ( "Register {} has no `size` field" , register. name)
484
+ } , ) ?;
485
+
480
486
match * register {
481
487
Register :: Single ( ref info) => registers_expanded. push (
482
488
RegisterBlockField {
483
489
field : util:: convert_svd_register ( register) ,
484
490
description : Ident :: from ( info. description . clone ( ) ) ,
485
491
offset : info. address_offset ,
486
- size : info. size . or ( defs. size )
487
- . ok_or_else (
488
- || {
489
- format ! ( "Register {} has no `size` field" , register. name)
490
- } , ) ?,
492
+ size : register_size,
491
493
}
492
494
) ,
493
495
Register :: Array ( ref info, ref array_info) => {
@@ -536,12 +538,7 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
536
538
field : util:: convert_svd_register ( & register) ,
537
539
description : Ident :: from ( info. description . clone ( ) ) ,
538
540
offset : info. address_offset ,
539
- size : info. size . or ( defs. size )
540
- . ok_or_else (
541
- || {
542
- format ! ( "Register {} has no `size` field" , register. name)
543
- } , ) ?
544
- * array_info. dim ,
541
+ size : register_size * array_info. dim ,
545
542
} ) ;
546
543
} else {
547
544
let mut field_num = 0 ;
@@ -551,11 +548,7 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
551
548
field : field. clone ( ) ,
552
549
description : Ident :: from ( info. description . clone ( ) ) ,
553
550
offset : info. address_offset + field_num * array_info. dim_increment ,
554
- size : info. size . or ( defs. size )
555
- . ok_or_else (
556
- || {
557
- format ! ( "Register {} has no `size` field" , register. name)
558
- } , ) ?
551
+ size : register_size,
559
552
} ) ;
560
553
field_num += 1 ;
561
554
}
0 commit comments