summaryrefslogtreecommitdiffstats
path: root/bsps
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2023-12-21 15:16:49 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2024-01-15 10:33:52 +0100
commit5a2f64cf3451a98bc77ce3620ce9829c36917d9e (patch)
tree0a76dc470e7996a9c8d2e5b6fe507d3ec5887e2d /bsps
parentbsp/tms570: Use bsp_start_copy_sections_compact() (diff)
downloadrtems-5a2f64cf3451a98bc77ce3620ce9829c36917d9e.tar.bz2
bsp/tms570: Initialize and enable caches on demand
Update #4982.
Diffstat (limited to 'bsps')
-rw-r--r--bsps/arm/tms570/start/bspstarthooks.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/bsps/arm/tms570/start/bspstarthooks.c b/bsps/arm/tms570/start/bspstarthooks.c
index 81ad42f449..8dc7fdfdf8 100644
--- a/bsps/arm/tms570/start/bspstarthooks.c
+++ b/bsps/arm/tms570/start/bspstarthooks.c
@@ -40,9 +40,34 @@
*/
#include <bsp/start.h>
+#include <libcpu/arm-cp15.h>
BSP_START_TEXT_SECTION void bsp_start_hook_1( void )
{
+ uint32_t ctrl;
+ size_t size;
+
+ ctrl = arm_cp15_get_control();
+
+ if ( ( ctrl & ARM_CP15_CTRL_I ) == 0 ) {
+ rtems_cache_invalidate_entire_instruction();
+ ctrl |= ARM_CP15_CTRL_I;
+ arm_cp15_set_control(ctrl);
+ }
+
+ if ( ( ctrl & ARM_CP15_CTRL_C ) == 0 ) {
+ rtems_cache_invalidate_entire_data();
+ ctrl |= ARM_CP15_CTRL_C;
+ arm_cp15_set_control(ctrl);
+ }
+
bsp_start_copy_sections_compact();
bsp_start_clear_bss();
+
+ size =(size_t) bsp_section_fast_text_size;
+ RTEMS_OBFUSCATE_VARIABLE( size );
+
+ if ( size != 0 ) {
+ rtems_cache_flush_multiple_data_lines( bsp_section_fast_text_begin, size );
+ }
}