Skip to content

Commit 1724d0d

Browse files
committed
Auto merge of #32 - wesen:bug/sort-register-before-searching-for-overlap, r=japaric
Sort registers by address_offset before checking for overlap. This was a problem for example when generating the map for NVIC on the STM32F303x, where most registers would be discarded because STIR is listed first, before all ISERx fields.
2 parents c5168f2 + 9010fec commit 1724d0d

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/lib.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ pub fn gen_peripheral(p: &Peripheral, d: &Defaults) -> Vec<Tokens> {
4242
let registers = p.registers
4343
.as_ref()
4444
.expect(&format!("{:#?} has no `registers` field", p));
45-
for register in registers {
45+
46+
let mut registers: Vec<&Register> = registers.iter().collect();
47+
registers.sort_by_key(|x| x.address_offset);
48+
49+
for register in registers.iter() {
4650
let pad = if let Some(pad) = register.address_offset
4751
.checked_sub(offset) {
4852
pad

0 commit comments

Comments
 (0)