1 |
/* |
/* |
2 |
* Copyright (C) 2004-2005 Anders Gavare. All rights reserved. |
* Copyright (C) 2004-2007 Anders Gavare. All rights reserved. |
3 |
* |
* |
4 |
* Redistribution and use in source and binary forms, with or without |
* Redistribution and use in source and binary forms, with or without |
5 |
* modification, are permitted provided that the following conditions are met: |
* modification, are permitted provided that the following conditions are met: |
25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: dev_sn.c,v 1.11 2005/06/26 11:43:48 debug Exp $ |
* $Id: dev_sn.c,v 1.16 2006/12/30 13:30:59 debug Exp $ |
29 |
* |
* |
30 |
* National Semiconductor SONIC ("sn") DP83932 ethernet. |
* National Semiconductor SONIC ("sn") DP83932 ethernet. |
31 |
* |
* |
60 |
/* |
/* |
61 |
* dev_sn_access(): |
* dev_sn_access(): |
62 |
*/ |
*/ |
63 |
int dev_sn_access(struct cpu *cpu, struct memory *mem, |
DEVICE_ACCESS(sn) |
|
uint64_t relative_addr, unsigned char *data, size_t len, |
|
|
int writeflag, void *extra) |
|
64 |
{ |
{ |
65 |
struct sn_data *d = (struct sn_data *) extra; |
struct sn_data *d = (struct sn_data *) extra; |
66 |
uint64_t idata = 0, odata = 0; |
uint64_t idata = 0, odata = 0; |
67 |
int regnr; |
int regnr; |
68 |
|
|
69 |
idata = memory_readmax64(cpu, data, len); |
if (writeflag == MEM_WRITE) |
70 |
|
idata = memory_readmax64(cpu, data, len); |
71 |
|
|
72 |
regnr = relative_addr / sizeof(uint32_t); |
regnr = relative_addr / sizeof(uint32_t); |
73 |
|
|
74 |
if (regnr < SONIC_NREGS) { |
if (regnr < SONIC_NREGS) { |
97 |
} |
} |
98 |
|
|
99 |
|
|
100 |
/* |
DEVINIT(sn) |
|
* devinit_sn(): |
|
|
*/ |
|
|
int devinit_sn(struct devinit *devinit) |
|
101 |
{ |
{ |
102 |
char *name2; |
char *name2; |
103 |
size_t nlen = 55; |
size_t nlen = 55; |
123 |
|
|
124 |
memory_device_register(devinit->machine->memory, name2, |
memory_device_register(devinit->machine->memory, name2, |
125 |
devinit->addr, DEV_SN_LENGTH, |
devinit->addr, DEV_SN_LENGTH, |
126 |
dev_sn_access, (void *)d, MEM_DEFAULT, NULL); |
dev_sn_access, (void *)d, DM_DEFAULT, NULL); |
127 |
|
|
128 |
net_add_nic(devinit->machine->emul->net, d, d->macaddr); |
net_add_nic(devinit->machine->emul->net, d, d->macaddr); |
129 |
|
|