44 #include "avrmalloc.h"
77 enum _vector_table_select
116 VDevCreate vdev_create;
136 #define IO_REG_DEFN_TERMINATOR { .name = NULL, }
144 StackType stack_type;
163 struct io_reg_defn io_reg[];
170 dev_supp_has_ext_io_reg (DevSuppDefn *dev)
172 return dev->has_ext_io_reg;
176 dev_supp_get_flash_sz (DevSuppDefn *dev)
178 return dev->size.flash;
182 dev_supp_get_PC_sz (DevSuppDefn *dev)
188 dev_supp_get_stack_sz (DevSuppDefn *dev)
190 return dev->size.stack;
194 dev_supp_get_vtab_idx (DevSuppDefn *dev)
196 return dev->irq_vect_idx;
200 dev_supp_get_sram_sz (DevSuppDefn *dev)
202 return dev->size.sram;
206 dev_supp_get_eeprom_sz (DevSuppDefn *dev)
208 return dev->size.eeprom;
212 dev_supp_get_xram_sz (DevSuppDefn *dev)
214 return dev->size.xram;
223 #include "defn/90s1200.h"
224 #include "defn/90s2313.h"
225 #include "defn/90s4414.h"
226 #include "defn/90s8515.h"
228 #include "defn/mega8.h"
229 #include "defn/mega16.h"
230 #include "defn/mega32.h"
231 #include "defn/mega103.h"
232 #include "defn/mega128.h"
234 #include "defn/43usb320.h"
235 #include "defn/43usb325.h"
236 #include "defn/43usb326.h"
238 #include "defn/43usb351.h"
239 #include "defn/43usb353.h"
240 #include "defn/43usb355.h"
246 static DevSuppDefn *devices_supported[] = {
274 DevSuppDefn **dev = devices_supported;
279 len = strlen ((*dev)->name);
281 if (strncmp ((*dev)->name, dev_name, len) == 0)
296 for (dev = devices_supported; (*dev); dev++)
297 fprintf (fp,
" %s\n", (*dev)->name);
301 dev_supp_attach_io_regs (AvrCore *core, DevSuppDefn *dev)
304 struct io_reg_defn *reg = dev->io_reg;
310 if (reg->ref_addr < 0x20)
312 avr_error (
"can't attach IO reg into general register space");
321 avr_error (
"reference vdev hasn't been created yet");
328 reg->reset_value, reg->rd_mask,
331 avr_message (
"attach: IO Reg '%s' at 0x%04x: ref = 0x%04x\n",
332 reg->name, reg->addr, reg->ref_addr);
335 else if (reg->vdev_create)
337 vdev = reg->vdev_create (reg->addr, reg->name, reg->related,
340 reg->reset_value, reg->rd_mask,
347 avr_message (
"attach: IO Reg '%s' at 0x%04x: created\n",
348 reg->name, reg->addr);
353 avr_message (
"TODO: attach IO Reg '%s' at 0x%04x\n", reg->name,
356 avr_core_set_addr_name (core, reg->addr, reg->name);