Mercurial > flash_v2
changeset 419:047f0d36832a
Add cache control for writethru/copyback modes
| author | gthomas |
|---|---|
| date | Wed, 13 Nov 2002 21:05:25 +0000 |
| parents | 5441298dacbc |
| children | d35f86833a7c |
| files | packages/hal/powerpc/arch/current/ChangeLog packages/hal/powerpc/arch/current/src/hal_misc.c packages/hal/powerpc/mpc8xx/current/ChangeLog packages/hal/powerpc/mpc8xx/current/include/var_cache.h |
| diffstat | 4 files changed, 40 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/powerpc/arch/current/ChangeLog +++ b/packages/hal/powerpc/arch/current/ChangeLog @@ -1,3 +1,8 @@ +2002-11-13 Gary Thomas <gthomas@ecoscentric.com> + + * src/hal_misc.c (hal_enable_caches): Support new CDL options for + how [mode] to enable DATA cache. + 2002-08-05 Gary Thomas <gary@chez-thomas.org> 2002-08-05 Bob Koninckx <bob.koninckx@mech.kuleuven.ac.be>
--- a/packages/hal/powerpc/arch/current/src/hal_misc.c +++ b/packages/hal/powerpc/arch/current/src/hal_misc.c @@ -304,11 +304,24 @@ hal_enable_caches(void) #endif #ifdef CYGSEM_HAL_ENABLE_ICACHE_ON_STARTUP +#ifdef HAL_ICACHE_UNLOCK_ALL + HAL_ICACHE_UNLOCK_ALL(); +#endif HAL_ICACHE_ENABLE(); #endif #ifdef CYGSEM_HAL_ENABLE_DCACHE_ON_STARTUP +#ifdef HAL_DCACHE_UNLOCK_ALL + HAL_DCACHE_UNLOCK_ALL(); +#endif HAL_DCACHE_ENABLE(); +#ifdef HAL_DCACHE_WRITE_MODE +#ifdef CYGSEM_HAL_DCACHE_STARTUP_MODE_COPYBACK + HAL_DCACHE_WRITE_MODE(HAL_DCACHE_WRITEBACK_MODE); +#else + HAL_DCACHE_WRITE_MODE(HAL_DCACHE_WRITETHRU_MODE); +#endif +#endif #endif }
--- a/packages/hal/powerpc/mpc8xx/current/ChangeLog +++ b/packages/hal/powerpc/mpc8xx/current/ChangeLog @@ -1,3 +1,8 @@ +2002-11-13 Gary Thomas <gthomas@ecoscentric.com> + + * include/var_cache.h (HAL_DCACHE_WRITE_MODE): Define for support + of various modes (copyback/writethru) + 2002-06-27 Gary Thomas <gary@chez-thomas.org> * include/var_regs.h: Allow platform to override certain assumptions,
--- a/packages/hal/powerpc/mpc8xx/current/include/var_cache.h +++ b/packages/hal/powerpc/mpc8xx/current/include/var_cache.h @@ -148,10 +148,24 @@ //#define HAL_DCACHE_BURST_SIZE(_size_) // Set the data cache write mode -//#define HAL_DCACHE_WRITE_MODE( _mode_ ) +#define HAL_DCACHE_WRITE_MODE( _mode_ ) \ + CYG_MACRO_START \ + if (_mode_ == HAL_DCACHE_WRITETHRU_MODE) { \ + asm volatile ("sync;" \ + "mtspr %0, %1;" \ + : : "I" (CYGARC_REG_DC_CST), \ + "r" (CYGARC_REG_DC_CMD_SW)); \ + } \ + if (_mode_ == HAL_DCACHE_WRITEBACK_MODE) { \ + asm volatile ("sync;" \ + "mtspr %0, %1;" \ + : : "I" (CYGARC_REG_DC_CST), \ + "r" (CYGARC_REG_DC_CMD_CW)); \ + } \ + CYG_MACRO_END -//#define HAL_DCACHE_WRITETHRU_MODE 0 -//#define HAL_DCACHE_WRITEBACK_MODE 1 +#define HAL_DCACHE_WRITETHRU_MODE 0 +#define HAL_DCACHE_WRITEBACK_MODE 1 // Load the contents of the given address range into the data cache
