Revision 8da3ff18 hw/smc91c111.c
b/hw/smc91c111.c | ||
---|---|---|
17 | 17 |
#define NUM_PACKETS 4 |
18 | 18 |
|
19 | 19 |
typedef struct { |
20 |
uint32_t base; |
|
21 | 20 |
VLANClientState *vc; |
22 | 21 |
uint16_t tcr; |
23 | 22 |
uint16_t rcr; |
... | ... | |
249 | 248 |
{ |
250 | 249 |
smc91c111_state *s = (smc91c111_state *)opaque; |
251 | 250 |
|
252 |
offset -= s->base; |
|
253 | 251 |
if (offset == 14) { |
254 | 252 |
s->bank = value; |
255 | 253 |
return; |
... | ... | |
422 | 420 |
{ |
423 | 421 |
smc91c111_state *s = (smc91c111_state *)opaque; |
424 | 422 |
|
425 |
offset -= s->base; |
|
426 | 423 |
if (offset == 14) { |
427 | 424 |
return s->bank; |
428 | 425 |
} |
... | ... | |
571 | 568 |
static void smc91c111_writel(void *opaque, target_phys_addr_t offset, |
572 | 569 |
uint32_t value) |
573 | 570 |
{ |
574 |
smc91c111_state *s = (smc91c111_state *)opaque; |
|
575 | 571 |
/* 32-bit writes to offset 0xc only actually write to the bank select |
576 | 572 |
register (offset 0xe) */ |
577 |
if (offset != s->base + 0xc)
|
|
573 |
if (offset != 0xc) |
|
578 | 574 |
smc91c111_writew(opaque, offset, value & 0xffff); |
579 | 575 |
smc91c111_writew(opaque, offset + 2, value >> 16); |
580 | 576 |
} |
... | ... | |
703 | 699 |
iomemtype = cpu_register_io_memory(0, smc91c111_readfn, |
704 | 700 |
smc91c111_writefn, s); |
705 | 701 |
cpu_register_physical_memory(base, 16, iomemtype); |
706 |
s->base = base; |
|
707 | 702 |
s->irq = irq; |
708 | 703 |
memcpy(s->macaddr, nd->macaddr, 6); |
709 | 704 |
|
Also available in: Unified diff