diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2010-05-31 13:27:07 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2010-05-31 13:27:07 +0000 |
commit | c48572d96be24a9f68e1ea692a1e2eb7a96f9497 (patch) | |
tree | 3daf2c101cb2abbe10c41949c5ef7270e358bdb6 /c | |
parent | 2010-05-31 Ralf Corsépius <ralf.corsepius@rtems.org> (diff) | |
download | rtems-c48572d96be24a9f68e1ea692a1e2eb7a96f9497.tar.bz2 |
2010-05-31 Ralf Corsépius <ralf.corsepius@rtems.org>
* libchip/network/greth.c: Misc. hacks to allow compilation on
16bit targets.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/libchip/network/greth.c | 19 |
2 files changed, 18 insertions, 6 deletions
diff --git a/c/src/ChangeLog b/c/src/ChangeLog index 3869b7c521..5e8968bea0 100644 --- a/c/src/ChangeLog +++ b/c/src/ChangeLog @@ -1,5 +1,10 @@ 2010-05-31 Ralf Corsépius <ralf.corsepius@rtems.org> + * libchip/network/greth.c: Misc. hacks to allow compilation on + 16bit targets. + +2010-05-31 Ralf Corsépius <ralf.corsepius@rtems.org> + PR 1531/newlib * libchip/network/i82586.c: Add local copy of ALIGN(). diff --git a/c/src/libchip/network/greth.c b/c/src/libchip/network/greth.c index d33cb07e85..257a16c928 100644 --- a/c/src/libchip/network/greth.c +++ b/c/src/libchip/network/greth.c @@ -169,7 +169,7 @@ static char *almalloc(int sz) { char *tmp; tmp = calloc(1,2*sz); - tmp = (char *) (((int)tmp+sz) & ~(sz -1)); + tmp = (char *) (((uintptr_t)tmp+sz) & ~(sz -1)); return(tmp); } @@ -416,8 +416,8 @@ auto_neg_done: sc->tx_dptr = 0; sc->tx_cnt = 0; sc->rx_ptr = 0; - regs->txdesc = (int) sc->txdesc; - regs->rxdesc = (int) sc->rxdesc; + regs->txdesc = (uintptr_t) sc->txdesc; + regs->rxdesc = (uintptr_t) sc->rxdesc; sc->rxmbuf = calloc(sc->rxbufs, sizeof(*sc->rxmbuf)); sc->txmbuf = calloc(sc->txbufs, sizeof(*sc->txmbuf)); @@ -452,9 +452,16 @@ auto_neg_done: /* set ethernet address. */ regs->mac_addr_msb = sc->arpcom.ac_enaddr[0] << 8 | sc->arpcom.ac_enaddr[1]; - regs->mac_addr_lsb = - sc->arpcom.ac_enaddr[2] << 24 | sc->arpcom.ac_enaddr[3] << 16 | - sc->arpcom.ac_enaddr[4] << 8 | sc->arpcom.ac_enaddr[5]; + + uint32_t mac_addr_lsb; + mac_addr_lsb = sc->arpcom.ac_enaddr[2]; + mac_addr_lsb <<= 8; + mac_addr_lsb |= sc->arpcom.ac_enaddr[3]; + mac_addr_lsb <<= 8; + mac_addr_lsb |= sc->arpcom.ac_enaddr[4]; + mac_addr_lsb <<= 8; + mac_addr_lsb |= sc->arpcom.ac_enaddr[5]; + regs->mac_addr_lsb = mac_addr_lsb; /* install interrupt vector */ set_vector(greth_interrupt_handler, sc->vector, 1); |