@@ -201,7 +201,7 @@ pub fn render(p_original: &Peripheral, index: &Index, config: &Config) -> Result
201
201
"Pushing {} register or cluster blocks into output" ,
202
202
ercs. len( )
203
203
) ;
204
- let reg_block = register_or_cluster_block ( & ercs, None , config) ?;
204
+ let reg_block = register_or_cluster_block ( & ercs, None , None , config) ?;
205
205
206
206
let open = Punct :: new ( '{' , Spacing :: Alone ) ;
207
207
let close = Punct :: new ( '}' , Spacing :: Alone ) ;
@@ -485,6 +485,7 @@ fn make_comment(size: u32, offset: u32, description: &str) -> String {
485
485
fn register_or_cluster_block (
486
486
ercs : & [ RegisterCluster ] ,
487
487
name : Option < & str > ,
488
+ size : Option < u32 > ,
488
489
config : & Config ,
489
490
) -> Result < TokenStream > {
490
491
let mut rbfs = TokenStream :: new ( ) ;
@@ -588,6 +589,19 @@ fn register_or_cluster_block(
588
589
last_end = region. end ;
589
590
}
590
591
592
+ if let Some ( size) = size {
593
+ let pad = size
594
+ . checked_sub ( last_end)
595
+ . ok_or_else ( || anyhow ! ( "Incorrect block size" ) ) ?;
596
+ if pad > 0 {
597
+ let name = Ident :: new ( "_reserved_end" , span) ;
598
+ let pad = util:: hex ( pad as u64 ) ;
599
+ rbfs. extend ( quote ! {
600
+ #name : [ u8 ; #pad] ,
601
+ } ) ;
602
+ }
603
+ }
604
+
591
605
let name = if let Some ( name) = name {
592
606
name. to_constant_case_ident ( span)
593
607
} else {
@@ -1022,7 +1036,14 @@ fn cluster_block(
1022
1036
let mod_items = render_ercs ( & mut c. children , & cpath, index, config) ?;
1023
1037
1024
1038
// Generate the register block.
1025
- let reg_block = register_or_cluster_block ( & c. children , Some ( & mod_name) , config) ?;
1039
+ let cluster_size = match c {
1040
+ Cluster :: Array ( _, array_info) if config. max_cluster_size => {
1041
+ Some ( array_info. dim_increment )
1042
+ }
1043
+ _ => None ,
1044
+ } ;
1045
+ let reg_block =
1046
+ register_or_cluster_block ( & c. children , Some ( & mod_name) , cluster_size, config) ?;
1026
1047
1027
1048
let mod_items = quote ! {
1028
1049
#reg_block
0 commit comments