Commit 35ef81d6d2dd1e49a597e6ef44d0c64951ae933c
1 parent
c01c07bb
ETRAX: Correct size of control-register area.
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6209 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
18 additions
and
42 deletions
hw/etraxfs_eth.c
... | ... | @@ -297,18 +297,18 @@ static void mdio_cycle(struct qemu_mdio *bus) |
297 | 297 | /* ETRAX-FS Ethernet MAC block starts here. */ |
298 | 298 | |
299 | 299 | #define RW_MA0_LO 0x00 |
300 | -#define RW_MA0_HI 0x04 | |
301 | -#define RW_MA1_LO 0x08 | |
302 | -#define RW_MA1_HI 0x0c | |
303 | -#define RW_GA_LO 0x10 | |
304 | -#define RW_GA_HI 0x14 | |
305 | -#define RW_GEN_CTRL 0x18 | |
306 | -#define RW_REC_CTRL 0x1c | |
307 | -#define RW_TR_CTRL 0x20 | |
308 | -#define RW_CLR_ERR 0x24 | |
309 | -#define RW_MGM_CTRL 0x28 | |
310 | -#define R_STAT 0x2c | |
311 | -#define FS_ETH_MAX_REGS 0x5c | |
300 | +#define RW_MA0_HI 0x01 | |
301 | +#define RW_MA1_LO 0x02 | |
302 | +#define RW_MA1_HI 0x03 | |
303 | +#define RW_GA_LO 0x04 | |
304 | +#define RW_GA_HI 0x05 | |
305 | +#define RW_GEN_CTRL 0x06 | |
306 | +#define RW_REC_CTRL 0x07 | |
307 | +#define RW_TR_CTRL 0x08 | |
308 | +#define RW_CLR_ERR 0x09 | |
309 | +#define RW_MGM_CTRL 0x0a | |
310 | +#define R_STAT 0x0b | |
311 | +#define FS_ETH_MAX_REGS 0x17 | |
312 | 312 | |
313 | 313 | struct fs_eth |
314 | 314 | { |
... | ... | @@ -360,42 +360,25 @@ static void eth_validate_duplex(struct fs_eth *eth) |
360 | 360 | } |
361 | 361 | } |
362 | 362 | |
363 | -static uint32_t eth_rinvalid (void *opaque, target_phys_addr_t addr) | |
364 | -{ | |
365 | - struct fs_eth *eth = opaque; | |
366 | - CPUState *env = eth->env; | |
367 | - cpu_abort(env, "Unsupported short access. reg=" TARGET_FMT_plx "\n", | |
368 | - addr); | |
369 | - return 0; | |
370 | -} | |
371 | - | |
372 | 363 | static uint32_t eth_readl (void *opaque, target_phys_addr_t addr) |
373 | 364 | { |
374 | 365 | struct fs_eth *eth = opaque; |
375 | 366 | uint32_t r = 0; |
376 | 367 | |
368 | + addr >>= 2; | |
369 | + | |
377 | 370 | switch (addr) { |
378 | 371 | case R_STAT: |
379 | - /* Attach an MDIO/PHY abstraction. */ | |
380 | 372 | r = eth->mdio_bus.mdio & 1; |
381 | 373 | break; |
382 | 374 | default: |
383 | 375 | r = eth->regs[addr]; |
384 | - D(printf ("%s %x\n", __func__, addr)); | |
376 | + D(printf ("%s %x\n", __func__, addr * 4)); | |
385 | 377 | break; |
386 | 378 | } |
387 | 379 | return r; |
388 | 380 | } |
389 | 381 | |
390 | -static void | |
391 | -eth_winvalid (void *opaque, target_phys_addr_t addr, uint32_t value) | |
392 | -{ | |
393 | - struct fs_eth *eth = opaque; | |
394 | - CPUState *env = eth->env; | |
395 | - cpu_abort(env, "Unsupported short access. reg=" TARGET_FMT_plx "\n", | |
396 | - addr); | |
397 | -} | |
398 | - | |
399 | 382 | static void eth_update_ma(struct fs_eth *eth, int ma) |
400 | 383 | { |
401 | 384 | int reg; |
... | ... | @@ -425,20 +408,15 @@ eth_writel (void *opaque, target_phys_addr_t addr, uint32_t value) |
425 | 408 | { |
426 | 409 | struct fs_eth *eth = opaque; |
427 | 410 | |
411 | + addr >>= 2; | |
428 | 412 | switch (addr) |
429 | 413 | { |
430 | 414 | case RW_MA0_LO: |
431 | - eth->regs[addr] = value; | |
432 | - eth_update_ma(eth, 0); | |
433 | - break; | |
434 | 415 | case RW_MA0_HI: |
435 | 416 | eth->regs[addr] = value; |
436 | 417 | eth_update_ma(eth, 0); |
437 | 418 | break; |
438 | 419 | case RW_MA1_LO: |
439 | - eth->regs[addr] = value; | |
440 | - eth_update_ma(eth, 1); | |
441 | - break; | |
442 | 420 | case RW_MA1_HI: |
443 | 421 | eth->regs[addr] = value; |
444 | 422 | eth_update_ma(eth, 1); |
... | ... | @@ -553,14 +531,12 @@ static int eth_tx_push(void *opaque, unsigned char *buf, int len) |
553 | 531 | } |
554 | 532 | |
555 | 533 | static CPUReadMemoryFunc *eth_read[] = { |
556 | - ð_rinvalid, | |
557 | - ð_rinvalid, | |
534 | + NULL, NULL, | |
558 | 535 | ð_readl, |
559 | 536 | }; |
560 | 537 | |
561 | 538 | static CPUWriteMemoryFunc *eth_write[] = { |
562 | - ð_winvalid, | |
563 | - ð_winvalid, | |
539 | + NULL, NULL, | |
564 | 540 | ð_writel, |
565 | 541 | }; |
566 | 542 | ... | ... |