mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-21 21:09:02 +00:00
Merge duplicate registers into a single record and merge they bitfields.
This commit is contained in:
@@ -213,12 +213,15 @@ func readATDF(path string) (*Device, error) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := allRegisters[regEl.Name]; ok {
|
if firstReg, ok := allRegisters[regEl.Name]; ok {
|
||||||
firstReg := allRegisters[regEl.Name]
|
// merge bit fields with previous register
|
||||||
for i := 0; i < len(firstReg.peripheral.Registers); i++ {
|
merged := append(firstReg.Bitfields, reg.Bitfields...)
|
||||||
if firstReg.peripheral.Registers[i] == firstReg {
|
firstReg.Bitfields = make([]Bitfield, 0, len(merged))
|
||||||
firstReg.peripheral.Registers = append(firstReg.peripheral.Registers[:i], firstReg.peripheral.Registers[i+1:]...)
|
m := make(map[string]interface{})
|
||||||
break
|
for _, field := range merged {
|
||||||
|
if _, ok := m[field.Name]; !ok {
|
||||||
|
m[field.Name] = nil
|
||||||
|
firstReg.Bitfields = append(firstReg.Bitfields, field)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@@ -381,10 +384,10 @@ var ({{range .peripherals}}
|
|||||||
name := fmt.Sprintf("%s%d", bitfield.Name, n)
|
name := fmt.Sprintf("%s%d", bitfield.Name, n)
|
||||||
if _, ok := allBits[name]; !ok {
|
if _, ok := allBits[name]; !ok {
|
||||||
fmt.Fprintf(w, "\t%s = 0x%x", name, 1<<i)
|
fmt.Fprintf(w, "\t%s = 0x%x", name, 1<<i)
|
||||||
if len(bitfield.Caption) != 0 {
|
if len(bitfield.Caption) != 0 {
|
||||||
fmt.Fprintf(w, " // %s", bitfield.Caption)
|
fmt.Fprintf(w, " // %s", bitfield.Caption)
|
||||||
}
|
}
|
||||||
fmt.Fprintf(w, "\n")
|
fmt.Fprintf(w, "\n")
|
||||||
allBits[name] = nil
|
allBits[name] = nil
|
||||||
}
|
}
|
||||||
n++
|
n++
|
||||||
|
|||||||
Reference in New Issue
Block a user