diff options
author | Chris Johns <chrisj@rtems.org> | 2007-12-22 08:28:57 +0000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2007-12-22 08:28:57 +0000 |
commit | e85eb70bc7d23e5bc8ad55f5739791a8298bd87f (patch) | |
tree | 899b555e7264f1e2aafd1ab61d61d2974483ef14 /c | |
parent | 2007-12-22 Chris Johns <chrisj@rtems.org> (diff) | |
download | rtems-e85eb70bc7d23e5bc8ad55f5739791a8298bd87f.tar.bz2 |
2007-12-14 Chris Johns <chrisj@rtems.org>
* gdb-init: Make the first hb temporary.
* network/network.c: Add support for reading the MAC address from
the FEC if set by the boot monitor. dBug does not do this unless
the network is used which is a shame.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/m68k/mcf5235/ChangeLog | 7 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/mcf5235/gdb-init | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/mcf5235/network/network.c | 44 |
3 files changed, 43 insertions, 10 deletions
diff --git a/c/src/lib/libbsp/m68k/mcf5235/ChangeLog b/c/src/lib/libbsp/m68k/mcf5235/ChangeLog index 7e7786baeb..bea5c4886d 100644 --- a/c/src/lib/libbsp/m68k/mcf5235/ChangeLog +++ b/c/src/lib/libbsp/m68k/mcf5235/ChangeLog @@ -1,5 +1,12 @@ 2007-12-14 Chris Johns <chrisj@rtems.org> + * gdb-init: Make the first hb temporary. + * network/network.c: Add support for reading the MAC address from + the FEC if set by the boot monitor. dBug does not do this unless + the network is used which is a shame. + +2007-12-14 Chris Johns <chrisj@rtems.org> + * gdb-init: Add the show-exception. 2007-12-11 Joel Sherrill <joel.sherrill@OARcorp.com> diff --git a/c/src/lib/libbsp/m68k/mcf5235/gdb-init b/c/src/lib/libbsp/m68k/mcf5235/gdb-init index 23fa2abe67..ec0628ad46 100644 --- a/c/src/lib/libbsp/m68k/mcf5235/gdb-init +++ b/c/src/lib/libbsp/m68k/mcf5235/gdb-init @@ -7,7 +7,7 @@ target remote | m68k-bdm-gdbserver pipe /dev/bdmcf0 # The console loop in the Axman dbug monitor. Found by trial and error # with the debugger. # -hb *0xffe254c0 +thb *0xffe254c0 # # Show the exception stack frame. diff --git a/c/src/lib/libbsp/m68k/mcf5235/network/network.c b/c/src/lib/libbsp/m68k/mcf5235/network/network.c index b75345d6a3..d09d5a03e8 100644 --- a/c/src/lib/libbsp/m68k/mcf5235/network/network.c +++ b/c/src/lib/libbsp/m68k/mcf5235/network/network.c @@ -308,6 +308,28 @@ mcf5235_fec_initialize_hardware(struct mcf5235_enet_struct *sc) } /* + * Get the MAC address from the hardware. + */ +static void +fec_get_mac_address(volatile struct mcf5235_enet_struct *sc, unsigned char* hwaddr) +{ + unsigned long addr; + + addr = MCF5235_FEC_PALR; + + hwaddr[0] = (addr >> 24) & 0xff; + hwaddr[1] = (addr >> 16) & 0xff; + hwaddr[2] = (addr >> 8) & 0xff; + hwaddr[3] = (addr >> 0) & 0xff; + + addr = MCF5235_FEC_PAUR; + + hwaddr[4] = (addr >> 24) & 0xff; + hwaddr[5] = (addr >> 16) & 0xff; +} + + +/* * Soak up buffer descriptors that have been sent. */ static void @@ -789,26 +811,30 @@ rtems_fec_driver_attach(struct rtems_bsdnet_ifconfig *config, int attaching ) /* * Is driver free? */ - if ((unitNumber <= 0) || (unitNumber > NIFACES)) { - printf("Bad FEC unit number.\n"); + if ((unitNumber < 0) || (unitNumber >= NIFACES)) { + printf("mcf5235: bad FEC unit number.\n"); return 0; } - sc = &enet_driver[unitNumber - 1]; + sc = &enet_driver[unitNumber]; ifp = &sc->arpcom.ac_if; if (ifp->if_softc != NULL) { - printf("Driver already in use.\n"); + printf("mcf5235: driver already in use.\n"); return 0; } /* * Process options */ + if (config->hardware_address) + memcpy(sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN); + else + fec_get_mac_address(sc, sc->arpcom.ac_enaddr); + hwaddr = config->hardware_address; - printf("%s%d: Ethernet address: %02x:%02x:%02x:%02x:%02x:%02x\n", - unitName, unitNumber, - hwaddr[0], hwaddr[1], hwaddr[2], - hwaddr[3], hwaddr[4], hwaddr[5]); - memcpy(sc->arpcom.ac_enaddr, hwaddr, ETHER_ADDR_LEN); + printf("%s%d: mac: %02x:%02x:%02x:%02x:%02x:%02x\n", + unitName, unitNumber, + hwaddr[0], hwaddr[1], hwaddr[2], + hwaddr[3], hwaddr[4], hwaddr[5]); if (config->mtu) mtu = config->mtu; |