From c48572d96be24a9f68e1ea692a1e2eb7a96f9497 Mon Sep 17 00:00:00 2001 From: Ralf Corsepius Date: Mon, 31 May 2010 13:27:07 +0000 Subject: =?UTF-8?q?2010-05-31=09Ralf=20Cors=C3=A9pius=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * libchip/network/greth.c: Misc. hacks to allow compilation on 16bit targets. --- c/src/ChangeLog | 5 +++++ c/src/libchip/network/greth.c | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) (limited to 'c') diff --git a/c/src/ChangeLog b/c/src/ChangeLog index 3869b7c521..5e8968bea0 100644 --- a/c/src/ChangeLog +++ b/c/src/ChangeLog @@ -1,3 +1,8 @@ +2010-05-31 Ralf Corsépius + + * libchip/network/greth.c: Misc. hacks to allow compilation on + 16bit targets. + 2010-05-31 Ralf Corsépius PR 1531/newlib 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); -- cgit v1.2.3