summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/mips/csb350/network/network.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/mips/csb350/network/network.c')
-rw-r--r--c/src/lib/libbsp/mips/csb350/network/network.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/c/src/lib/libbsp/mips/csb350/network/network.c b/c/src/lib/libbsp/mips/csb350/network/network.c
index 7bf2cc65d4..30e100be16 100644
--- a/c/src/lib/libbsp/mips/csb350/network/network.c
+++ b/c/src/lib/libbsp/mips/csb350/network/network.c
@@ -458,7 +458,8 @@ void au1x00_emac_init_hw(au1x00_emac_softc_t *sc)
* boundary.
*/
if (mtod(m, unsigned32) & 0x1f) {
- mtod(m, unsigned32) = (mtod(m, unsigned32) + 0x1f) & 0x1f;
+ unsigned32 *p = &mtod(m, unsigned32);
+ *p = (mtod(m, unsigned32) + 0x1f) & 0x1f;
}
sc->rx_dma[i].addr = (mtod(m, unsigned32) & ~0xe0000000);
sc->rx_mbuf[i] = m;
@@ -652,7 +653,9 @@ void au1x00_emac_rx_daemon (void *arg)
* The receive buffer must be aligned with a cache line
* boundary.
*/
- mtod(m, unsigned32) = (mtod(m, unsigned32) + 0x1f) & ~0x1f;
+ { unsigned32 *p = &mtod(m, unsigned32);
+ *p = (mtod(m, unsigned32) + 0x1f) & ~0x1f;
+ }
} else {
sc->rx_dropped++;
@@ -824,7 +827,7 @@ au1x00_emac_ioctl (struct ifnet *ifp, int command, caddr_t data)
/* interrupt handler */
rtems_isr au1x00_emac_isr (rtems_vector_number v)
{
- au1x00_emac_softc_t *sc;
+ volatile au1x00_emac_softc_t *sc;
int index;
int tx_flag = 0;
int rx_flag = 0;