diff options
author | David Gwynne <dlg@cvs.openbsd.org> | 2014-03-14 11:04:25 +0000 |
---|---|---|
committer | David Gwynne <dlg@cvs.openbsd.org> | 2014-03-14 11:04:25 +0000 |
commit | 8b088944de0049abe3ba91c3d5ec88c88c72e033 (patch) | |
tree | 08ee05c47e50f09943ecfc91e4d6f9eb75e2cb45 /sys/dev/ic | |
parent | 2d885fe86ccebb33f3d9e3c029ca1b6cade18f6b (diff) |
use lemtoh64 and htolem64 for reading and writing entries in the rings.
tested on sparc64 and powerpc with and without the MI backends for the
lem ops enabled.
Diffstat (limited to 'sys/dev/ic')
-rw-r--r-- | sys/dev/ic/gem.c | 16 | ||||
-rw-r--r-- | sys/dev/ic/gemvar.h | 15 |
2 files changed, 16 insertions, 15 deletions
diff --git a/sys/dev/ic/gem.c b/sys/dev/ic/gem.c index 514c6fb2476..eefb6410649 100644 --- a/sys/dev/ic/gem.c +++ b/sys/dev/ic/gem.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gem.c,v 1.101 2013/08/08 16:01:34 kettenis Exp $ */ +/* $OpenBSD: gem.c,v 1.102 2014/03/14 11:04:24 dlg Exp $ */ /* $NetBSD: gem.c,v 1.1 2001/09/16 00:11:43 eeh Exp $ */ /* @@ -1056,7 +1056,7 @@ gem_rint(struct gem_softc *sc) GEM_CDRXSYNC(sc, i, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); - rxstat = GEM_DMA_READ(sc, sc->sc_rxdescs[i].gd_flags); + rxstat = GEM_DMA_READ(sc, &sc->sc_rxdescs[i].gd_flags); if (rxstat & GEM_RD_OWN) { /* We have processed all of the receive buffers. */ @@ -1086,9 +1086,9 @@ gem_rint(struct gem_softc *sc) if (ifp->if_flags & IFF_DEBUG) { printf(" rxsoft %p descriptor %d: ", rxs, i); printf("gd_flags: 0x%016llx\t", (long long) - GEM_DMA_READ(sc, sc->sc_rxdescs[i].gd_flags)); + GEM_DMA_READ(sc, &sc->sc_rxdescs[i].gd_flags)); printf("gd_addr: 0x%016llx\n", (long long) - GEM_DMA_READ(sc, sc->sc_rxdescs[i].gd_addr)); + GEM_DMA_READ(sc, &sc->sc_rxdescs[i].gd_addr)); } #endif @@ -1811,15 +1811,15 @@ gem_start(struct ifnet *ifp) BUS_DMASYNC_PREWRITE); for (i = 0; i < map->dm_nsegs; i++) { - sc->sc_txdescs[frag].gd_addr = - GEM_DMA_WRITE(sc, map->dm_segs[i].ds_addr); + GEM_DMA_WRITE(sc, &sc->sc_txdescs[frag].gd_addr, + map->dm_segs[i].ds_addr); flags = map->dm_segs[i].ds_len & GEM_TD_BUFSIZE; if (i == 0) flags |= GEM_TD_START_OF_PACKET; if (i == (map->dm_nsegs - 1)) flags |= GEM_TD_END_OF_PACKET; - sc->sc_txdescs[frag].gd_flags = - GEM_DMA_WRITE(sc, flags); + GEM_DMA_WRITE(sc, &sc->sc_txdescs[frag].gd_flags, + flags); bus_dmamap_sync(sc->sc_dmatag, sc->sc_cddmamap, GEM_CDTXOFF(frag), sizeof(struct gem_desc), BUS_DMASYNC_PREWRITE); diff --git a/sys/dev/ic/gemvar.h b/sys/dev/ic/gemvar.h index 05ed2b3711f..12fc0ae897d 100644 --- a/sys/dev/ic/gemvar.h +++ b/sys/dev/ic/gemvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: gemvar.h,v 1.27 2013/03/09 17:57:00 mpi Exp $ */ +/* $OpenBSD: gemvar.h,v 1.28 2014/03/14 11:04:24 dlg Exp $ */ /* $NetBSD: gemvar.h,v 1.1 2001/09/16 00:11:43 eeh Exp $ */ /* @@ -208,8 +208,10 @@ struct gem_softc { void (*sc_hwinit)(struct gem_softc *); }; -#define GEM_DMA_READ(sc, v) (((sc)->sc_pci) ? letoh64(v) : betoh64(v)) -#define GEM_DMA_WRITE(sc, v) (((sc)->sc_pci) ? htole64(v) : htobe64(v)) +#define GEM_DMA_READ(_sc, _a) \ + (((_sc)->sc_pci) ? lemtoh64(_a) : bemtoh64(_a)) +#define GEM_DMA_WRITE(_sc, _a, _v) \ + (((_sc)->sc_pci) ? htolem64((_a), (_v)) : htobem64((_a), (_v))) /* * This macro returns the current media entry for *non-MII* media. @@ -266,10 +268,9 @@ do { \ struct gem_desc *__rxd = &sc->sc_rxdescs[(x)]; \ struct mbuf *__m = __rxs->rxs_mbuf; \ \ - __rxd->gd_addr = \ - GEM_DMA_WRITE((sc), __rxs->rxs_dmamap->dm_segs[0].ds_addr); \ - __rxd->gd_flags = \ - GEM_DMA_WRITE((sc), \ + GEM_DMA_WRITE((sc), &__rxd->gd_addr, \ + __rxs->rxs_dmamap->dm_segs[0].ds_addr); \ + GEM_DMA_WRITE((sc), &__rxd->gd_flags, \ (((__m->m_ext.ext_size)<<GEM_RD_BUFSHIFT) \ & GEM_RD_BUFSIZE) | GEM_RD_OWN); \ GEM_CDRXSYNC((sc), (x), BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); \ |