33 #include "avrmalloc.h"
62 vdev_new (
char *name, VDevFP_Read rd, VDevFP_Write wr, VDevFP_Reset reset,
63 VDevFP_AddAddr add_addr)
83 avr_warning (
"Default AddAddr called [addr=0x%x; '%s']\n", addr, name);
90 VDevFP_Reset reset, VDevFP_AddAddr add_addr)
100 dev->add_addr = add_addr;
122 vdev_name_cmp (AvrClass *c1, AvrClass *c2)
124 return strcmp (((VDevice *)c1)->name, (
char *)c2);
142 vdev_addr_cmp (AvrClass *c1, AvrClass *c2)
144 VDevice *d1 = (VDevice *)c1;
145 int addr = *(
int *)c2;
148 return (addr - d1->base);
150 if (addr >= (d1->base + d1->size))
152 return (1 + addr - (d1->base + d1->size));
163 return dev->read (dev, addr);
170 dev->write (dev, addr, val);
184 dev->core = (AvrClass *)core;
195 vdev_add_addr (VDevice *dev,
int addr,
char *name,
int rel_addr,
void *data)
199 dev->add_addr (dev, addr, name, rel_addr, data);
203 avr_warning (
"attempt to add addr to vdev with no add_addr() method: "
204 "%s [0x%04x]\n", name, addr);
211 vdev_get_base (VDevice *dev)
221 vdev_get_size (VDevice *dev)
230 vdev_get_name (VDevice *dev)