@@ -475,19 +475,21 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
475475 // offset from the base address, in bytes
476476 let mut offset = 0 ;
477477 let mut registers_expanded = vec ! [ ] ;
478-
478+
479479 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+
480486 match * register {
481487 Register :: Single ( ref info) => registers_expanded. push (
482488 RegisterBlockField {
483489 field : util:: convert_svd_register ( register) ,
484490 description : Ident :: from ( info. description . clone ( ) ) ,
485491 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,
491493 }
492494 ) ,
493495 Register :: Array ( ref info, ref array_info) => {
@@ -536,12 +538,7 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
536538 field : util:: convert_svd_register ( & register) ,
537539 description : Ident :: from ( info. description . clone ( ) ) ,
538540 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 ,
545542 } ) ;
546543 } else {
547544 let mut field_num = 0 ;
@@ -551,11 +548,7 @@ fn register_block(registers: &[Register], defs: &Defaults) -> Result<Tokens> {
551548 field : field. clone ( ) ,
552549 description : Ident :: from ( info. description . clone ( ) ) ,
553550 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,
559552 } ) ;
560553 field_num += 1 ;
561554 }
0 commit comments