diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-12-21 15:16:49 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2024-01-15 10:33:52 +0100 |
commit | 5a2f64cf3451a98bc77ce3620ce9829c36917d9e (patch) | |
tree | 0a76dc470e7996a9c8d2e5b6fe507d3ec5887e2d /bsps | |
parent | bsp/tms570: Use bsp_start_copy_sections_compact() (diff) | |
download | rtems-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.c | 25 |
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 ); + } } |