summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorEric Norum <WENorum@lbl.gov>2009-07-30 15:48:52 +0000
committerEric Norum <WENorum@lbl.gov>2009-07-30 15:48:52 +0000
commitac1d1bc44d36c01b66aecbf6d6a782321e0f3552 (patch)
treeba6b56bb8eee2c96d44060cd25f875fe128e5085 /c/src
parentPR 1420/bsps (diff)
downloadrtems-ac1d1bc44d36c01b66aecbf6d6a782321e0f3552.tar.bz2
Try enabling the data cache.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/ChangeLog5
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/include/bsp.h2
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/network/network.c8
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c9
4 files changed, 12 insertions, 12 deletions
diff --git a/c/src/lib/libbsp/m68k/uC5282/ChangeLog b/c/src/lib/libbsp/m68k/uC5282/ChangeLog
index 5c9a88906f..dd62ec3586 100644
--- a/c/src/lib/libbsp/m68k/uC5282/ChangeLog
+++ b/c/src/lib/libbsp/m68k/uC5282/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-30 Eric Norum <norume@aps.anl.gov>
+
+ * include/bsp.h, network/network.c, startup/bspstart.c: Try enabling
+ the data cache.
+
2009-07-28 Eric Norum <norume@aps.anl.gov>
PR 1420/bsps
diff --git a/c/src/lib/libbsp/m68k/uC5282/include/bsp.h b/c/src/lib/libbsp/m68k/uC5282/include/bsp.h
index f1eea7656e..b2019d5835 100644
--- a/c/src/lib/libbsp/m68k/uC5282/include/bsp.h
+++ b/c/src/lib/libbsp/m68k/uC5282/include/bsp.h
@@ -31,7 +31,7 @@ extern "C" {
* Uncomment to use instruction/data cache
* Leave commented to use instruction-only cache
*/
-/* #define RTEMS_MCF5282_BSP_ENABLE_DATA_CACHE */
+#define RTEMS_MCF5282_BSP_ENABLE_DATA_CACHE
/***************************************************************************/
/** Hardware data structure headers **/
diff --git a/c/src/lib/libbsp/m68k/uC5282/network/network.c b/c/src/lib/libbsp/m68k/uC5282/network/network.c
index b6e51ae00e..7717931add 100644
--- a/c/src/lib/libbsp/m68k/uC5282/network/network.c
+++ b/c/src/lib/libbsp/m68k/uC5282/network/network.c
@@ -492,13 +492,9 @@ fec_rxDaemon (void *arg)
#ifdef RTEMS_MCF5282_BSP_ENABLE_DATA_CACHE
/*
* Invalidate the cache. The cache is so small that it's
- * more efficient to just invalidate the whole thing unless
- * the packet is very small.
+ * reasonable to simply invalidate the whole thing.
*/
- if (len < 128)
- rtems_cache_invalidate_multiple_data_lines(m->m_data, len);
- else
- rtems_cache_invalidate_entire_data();
+ rtems_cache_invalidate_entire_data();
#endif
m->m_len = m->m_pkthdr.len = len - sizeof(struct ether_header);
eh = mtod(m, struct ether_header *);
diff --git a/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c b/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
index 4dbd9c0470..110ab9f94f 100644
--- a/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
+++ b/c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c
@@ -112,7 +112,7 @@ void _CPU_cache_enable_instruction(void)
rtems_interrupt_disable(level);
mcf5282_cacr_mode &= ~MCF5XXX_CACR_DIDI;
- m68k_set_cacr(mcf5282_cacr_mode);
+ m68k_set_cacr_nop(mcf5282_cacr_mode | MCF5XXX_CACR_CINV | MCF5XXX_CACR_INVI);
rtems_interrupt_enable(level);
}
@@ -146,8 +146,8 @@ void _CPU_cache_enable_data(void)
rtems_interrupt_level level;
rtems_interrupt_disable(level);
- mcf5282_cacr_mode &= ~MCF5XXX_CACR_CENB;
- m68k_set_cacr(mcf5282_cacr_mode);
+ mcf5282_cacr_mode &= ~MCF5XXX_CACR_DISD;
+ m68k_set_cacr_nop(mcf5282_cacr_mode | MCF5XXX_CACR_CINV | MCF5XXX_CACR_INVD);
rtems_interrupt_enable(level);
#endif
}
@@ -158,8 +158,7 @@ void _CPU_cache_disable_data(void)
rtems_interrupt_level level;
rtems_interrupt_disable(level);
- rtems_interrupt_disable(level);
- mcf5282_cacr_mode |= MCF5XXX_CACR_CENB;
+ mcf5282_cacr_mode |= MCF5XXX_CACR_DISD;
m68k_set_cacr(mcf5282_cacr_mode);
rtems_interrupt_enable(level);
#endif