/[gxemul]/trunk/src/devices/dev_sn.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/src/devices/dev_sn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4 by dpavlin, Mon Oct 8 16:18:00 2007 UTC revision 20 by dpavlin, Mon Oct 8 16:19:23 2007 UTC
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *     *  
27   *   *
28   *  $Id: dev_sn.c,v 1.10 2005/03/14 19:14:02 debug Exp $   *  $Id: dev_sn.c,v 1.13 2005/11/13 00:14:10 debug Exp $
29   *     *  
30   *  National Semiconductor SONIC ("sn") DP83932 ethernet.   *  National Semiconductor SONIC ("sn") DP83932 ethernet.
31   *   *
# Line 68  int dev_sn_access(struct cpu *cpu, struc Line 68  int dev_sn_access(struct cpu *cpu, struc
68          uint64_t idata = 0, odata = 0;          uint64_t idata = 0, odata = 0;
69          int regnr;          int regnr;
70    
71          idata = memory_readmax64(cpu, data, len);          if (writeflag == MEM_WRITE)
72                    idata = memory_readmax64(cpu, data, len);
73    
74          regnr = relative_addr / sizeof(uint32_t);          regnr = relative_addr / sizeof(uint32_t);
75    
76          if (regnr < SONIC_NREGS) {          if (regnr < SONIC_NREGS) {
# Line 103  int dev_sn_access(struct cpu *cpu, struc Line 105  int dev_sn_access(struct cpu *cpu, struc
105  int devinit_sn(struct devinit *devinit)  int devinit_sn(struct devinit *devinit)
106  {  {
107          char *name2;          char *name2;
108            size_t nlen = 55;
109          struct sn_data *d = malloc(sizeof(struct sn_data));          struct sn_data *d = malloc(sizeof(struct sn_data));
110    
111          if (d == NULL) {          if (d == NULL) {
# Line 114  int devinit_sn(struct devinit *devinit) Line 117  int devinit_sn(struct devinit *devinit)
117    
118          net_generate_unique_mac(devinit->machine, d->macaddr);          net_generate_unique_mac(devinit->machine, d->macaddr);
119    
120          name2 = malloc(50);          name2 = malloc(nlen);
121          if (name2 == NULL) {          if (name2 == NULL) {
122                  fprintf(stderr, "out of memory in dev_sn_init()\n");                  fprintf(stderr, "out of memory in dev_sn_init()\n");
123                  exit(1);                  exit(1);
124          }          }
125          sprintf(name2, "%s [%02x:%02x:%02x:%02x:%02x:%02x]",          snprintf(name2, nlen, "%s [%02x:%02x:%02x:%02x:%02x:%02x]",
126              devinit->name,              devinit->name, d->macaddr[0], d->macaddr[1], d->macaddr[2],
             d->macaddr[0], d->macaddr[1], d->macaddr[2],  
127              d->macaddr[3], d->macaddr[4], d->macaddr[5]);              d->macaddr[3], d->macaddr[4], d->macaddr[5]);
128    
129          memory_device_register(devinit->machine->memory, name2,          memory_device_register(devinit->machine->memory, name2,
130              devinit->addr, DEV_SN_LENGTH,              devinit->addr, DEV_SN_LENGTH,
131              dev_sn_access, (void *)d, MEM_DEFAULT, NULL);              dev_sn_access, (void *)d, DM_DEFAULT, NULL);
132    
133          net_add_nic(devinit->machine->emul->net, d, d->macaddr);          net_add_nic(devinit->machine->emul->net, d, d->macaddr);
134    

Legend:
Removed from v.4  
changed lines
  Added in v.20

  ViewVC Help
Powered by ViewVC 1.1.26