From ac1d1bc44d36c01b66aecbf6d6a782321e0f3552 Mon Sep 17 00:00:00 2001 From: Eric Norum Date: Thu, 30 Jul 2009 15:48:52 +0000 Subject: Try enabling the data cache. --- c/src/lib/libbsp/m68k/uC5282/ChangeLog | 5 +++++ c/src/lib/libbsp/m68k/uC5282/include/bsp.h | 2 +- c/src/lib/libbsp/m68k/uC5282/network/network.c | 8 ++------ c/src/lib/libbsp/m68k/uC5282/startup/bspstart.c | 9 ++++----- 4 files changed, 12 insertions(+), 12 deletions(-) (limited to 'c/src') 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 + + * include/bsp.h, network/network.c, startup/bspstart.c: Try enabling + the data cache. + 2009-07-28 Eric Norum 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 -- cgit v1.2.3