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.17 2007/04/13 16:06:53 debug Exp $ |
29 |
* |
* |
30 |
* National Semiconductor SONIC ("sn") DP83932 ethernet. |
* National Semiconductor SONIC ("sn") DP83932 ethernet. |
31 |
* |
* |
57 |
}; |
}; |
58 |
|
|
59 |
|
|
60 |
/* |
DEVICE_ACCESS(sn) |
|
* 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) |
|
61 |
{ |
{ |
62 |
struct sn_data *d = (struct sn_data *) extra; |
struct sn_data *d = (struct sn_data *) extra; |
63 |
uint64_t idata = 0, odata = 0; |
uint64_t idata = 0, odata = 0; |
64 |
int regnr; |
int regnr; |
65 |
|
|
66 |
idata = memory_readmax64(cpu, data, len); |
if (writeflag == MEM_WRITE) |
67 |
|
idata = memory_readmax64(cpu, data, len); |
68 |
|
|
69 |
regnr = relative_addr / sizeof(uint32_t); |
regnr = relative_addr / sizeof(uint32_t); |
70 |
|
|
71 |
if (regnr < SONIC_NREGS) { |
if (regnr < SONIC_NREGS) { |
94 |
} |
} |
95 |
|
|
96 |
|
|
97 |
/* |
DEVINIT(sn) |
|
* devinit_sn(): |
|
|
*/ |
|
|
int devinit_sn(struct devinit *devinit) |
|
98 |
{ |
{ |
99 |
char *name2; |
char *name2; |
100 |
size_t nlen = 55; |
size_t nlen = 55; |
120 |
|
|
121 |
memory_device_register(devinit->machine->memory, name2, |
memory_device_register(devinit->machine->memory, name2, |
122 |
devinit->addr, DEV_SN_LENGTH, |
devinit->addr, DEV_SN_LENGTH, |
123 |
dev_sn_access, (void *)d, MEM_DEFAULT, NULL); |
dev_sn_access, (void *)d, DM_DEFAULT, NULL); |
124 |
|
|
125 |
net_add_nic(devinit->machine->emul->net, d, d->macaddr); |
net_add_nic(devinit->machine->emul->net, d, d->macaddr); |
126 |
|
|