Skip to content

Commit 97cfdd8

Browse files
authored
Merge pull request #203 from ejpcmac/array-registers-in-make-cluster
patch: properly handle register arrays in _add
2 parents cc456bc + 9ce868d commit 97cfdd8

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

src/patch/mod.rs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -528,12 +528,17 @@ fn make_cluster(cadd: &Hash) -> Result<ClusterInfoBuilder> {
528528
Some(h) => {
529529
let mut ch = Vec::new();
530530
for (rname, val) in h {
531-
ch.push(RegisterCluster::Register(
532-
make_register(val.hash()?)?
531+
ch.push(RegisterCluster::Register({
532+
let radd = val.hash()?;
533+
let reg = make_register(radd)?
533534
.name(rname.str()?.into())
534-
.build(VAL_LVL)?
535-
.single(),
536-
));
535+
.build(VAL_LVL)?;
536+
if let Some(dim) = make_dim_element(radd)? {
537+
reg.array(dim.build(VAL_LVL)?)
538+
} else {
539+
reg.single()
540+
}
541+
}));
537542
}
538543
ch
539544
}
@@ -612,12 +617,17 @@ fn make_peripheral(padd: &Hash, modify: bool) -> Result<PeripheralInfoBuilder> {
612617
Some(h) => {
613618
let mut regs = Vec::new();
614619
for (rname, val) in h.iter() {
615-
regs.push(RegisterCluster::Register(
616-
make_register(val.hash()?)?
620+
regs.push(RegisterCluster::Register({
621+
let radd = val.hash()?;
622+
let reg = make_register(radd)?
617623
.name(rname.str()?.into())
618-
.build(VAL_LVL)?
619-
.single(),
620-
))
624+
.build(VAL_LVL)?;
625+
if let Some(dim) = make_dim_element(radd)? {
626+
reg.array(dim.build(VAL_LVL)?)
627+
} else {
628+
reg.single()
629+
}
630+
}));
621631
}
622632
Some(regs)
623633
}

0 commit comments

Comments
 (0)