summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorRalf Corsepius <ralf.corsepius@rtems.org>2010-05-31 13:27:07 +0000
committerRalf Corsepius <ralf.corsepius@rtems.org>2010-05-31 13:27:07 +0000
commitc48572d96be24a9f68e1ea692a1e2eb7a96f9497 (patch)
tree3daf2c101cb2abbe10c41949c5ef7270e358bdb6 /c
parent2010-05-31 Ralf Corsépius <ralf.corsepius@rtems.org> (diff)
downloadrtems-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/ChangeLog5
-rw-r--r--c/src/libchip/network/greth.c19
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);