forked from Imagelibrary/rtems
Enable data cache.
This commit is contained in:
@@ -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>
|
2009-07-28 Eric Norum <norume@aps.anl.gov>
|
||||||
|
|
||||||
PR 1420/bsps
|
PR 1420/bsps
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ extern "C" {
|
|||||||
* Uncomment to use instruction/data cache
|
* Uncomment to use instruction/data cache
|
||||||
* Leave commented to use instruction-only 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 **/
|
/** Hardware data structure headers **/
|
||||||
|
|||||||
@@ -492,13 +492,9 @@ fec_rxDaemon (void *arg)
|
|||||||
#ifdef RTEMS_MCF5282_BSP_ENABLE_DATA_CACHE
|
#ifdef RTEMS_MCF5282_BSP_ENABLE_DATA_CACHE
|
||||||
/*
|
/*
|
||||||
* Invalidate the cache. The cache is so small that it's
|
* Invalidate the cache. The cache is so small that it's
|
||||||
* more efficient to just invalidate the whole thing unless
|
* reasonable to simply invalidate the whole thing.
|
||||||
* the packet is very small.
|
|
||||||
*/
|
*/
|
||||||
if (len < 128)
|
rtems_cache_invalidate_entire_data();
|
||||||
rtems_cache_invalidate_multiple_data_lines(m->m_data, len);
|
|
||||||
else
|
|
||||||
rtems_cache_invalidate_entire_data();
|
|
||||||
#endif
|
#endif
|
||||||
m->m_len = m->m_pkthdr.len = len - sizeof(struct ether_header);
|
m->m_len = m->m_pkthdr.len = len - sizeof(struct ether_header);
|
||||||
eh = mtod(m, struct ether_header *);
|
eh = mtod(m, struct ether_header *);
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ void _CPU_cache_enable_instruction(void)
|
|||||||
|
|
||||||
rtems_interrupt_disable(level);
|
rtems_interrupt_disable(level);
|
||||||
mcf5282_cacr_mode &= ~MCF5XXX_CACR_DIDI;
|
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);
|
rtems_interrupt_enable(level);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,8 +148,8 @@ void _CPU_cache_enable_data(void)
|
|||||||
rtems_interrupt_level level;
|
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);
|
m68k_set_cacr_nop(mcf5282_cacr_mode | MCF5XXX_CACR_CINV | MCF5XXX_CACR_INVD);
|
||||||
rtems_interrupt_enable(level);
|
rtems_interrupt_enable(level);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -160,8 +160,7 @@ void _CPU_cache_disable_data(void)
|
|||||||
rtems_interrupt_level level;
|
rtems_interrupt_level level;
|
||||||
|
|
||||||
rtems_interrupt_disable(level);
|
rtems_interrupt_disable(level);
|
||||||
rtems_interrupt_disable(level);
|
mcf5282_cacr_mode |= MCF5XXX_CACR_DISD;
|
||||||
mcf5282_cacr_mode |= MCF5XXX_CACR_CENB;
|
|
||||||
m68k_set_cacr(mcf5282_cacr_mode);
|
m68k_set_cacr(mcf5282_cacr_mode);
|
||||||
rtems_interrupt_enable(level);
|
rtems_interrupt_enable(level);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user