--- trunk/src/devices/dev_sn.c 2007/10/08 16:18:00 4 +++ trunk/src/devices/dev_sn.c 2007/10/08 16:19:37 22 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2005 Anders Gavare. All rights reserved. + * Copyright (C) 2004-2006 Anders Gavare. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -25,7 +25,7 @@ * SUCH DAMAGE. * * - * $Id: dev_sn.c,v 1.10 2005/03/14 19:14:02 debug Exp $ + * $Id: dev_sn.c,v 1.15 2006/02/09 20:02:59 debug Exp $ * * National Semiconductor SONIC ("sn") DP83932 ethernet. * @@ -60,15 +60,15 @@ /* * dev_sn_access(): */ -int dev_sn_access(struct cpu *cpu, struct memory *mem, - uint64_t relative_addr, unsigned char *data, size_t len, - int writeflag, void *extra) +DEVICE_ACCESS(sn) { struct sn_data *d = (struct sn_data *) extra; uint64_t idata = 0, odata = 0; int regnr; - idata = memory_readmax64(cpu, data, len); + if (writeflag == MEM_WRITE) + idata = memory_readmax64(cpu, data, len); + regnr = relative_addr / sizeof(uint32_t); if (regnr < SONIC_NREGS) { @@ -97,12 +97,10 @@ } -/* - * devinit_sn(): - */ -int devinit_sn(struct devinit *devinit) +DEVINIT(sn) { char *name2; + size_t nlen = 55; struct sn_data *d = malloc(sizeof(struct sn_data)); if (d == NULL) { @@ -114,19 +112,18 @@ net_generate_unique_mac(devinit->machine, d->macaddr); - name2 = malloc(50); + name2 = malloc(nlen); if (name2 == NULL) { fprintf(stderr, "out of memory in dev_sn_init()\n"); exit(1); } - sprintf(name2, "%s [%02x:%02x:%02x:%02x:%02x:%02x]", - devinit->name, - d->macaddr[0], d->macaddr[1], d->macaddr[2], + snprintf(name2, nlen, "%s [%02x:%02x:%02x:%02x:%02x:%02x]", + devinit->name, d->macaddr[0], d->macaddr[1], d->macaddr[2], d->macaddr[3], d->macaddr[4], d->macaddr[5]); memory_device_register(devinit->machine->memory, name2, devinit->addr, DEV_SN_LENGTH, - dev_sn_access, (void *)d, MEM_DEFAULT, NULL); + dev_sn_access, (void *)d, DM_DEFAULT, NULL); net_add_nic(devinit->machine->emul->net, d, d->macaddr);