From fc48ad84c7b70756b326fdcdeeae75035a7d4fd0 Mon Sep 17 00:00:00 2001 From: Aleksandr Platonov Date: Tue, 14 Jan 2014 14:40:07 +0100 Subject: rtems_cache_invalidate_multiple_instruction_lines According with comment in rtems_cache_invalidate_multiple_instruction_lines(), final_address indicates the last address which needs to be invalidated. But if in while loop we got final_address == i_addr condition then loop breaks and final_address will not be invalidated. --- c/src/lib/libcpu/shared/src/cache_manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/c/src/lib/libcpu/shared/src/cache_manager.c b/c/src/lib/libcpu/shared/src/cache_manager.c index 8e8ba25d2c..c4953d9523 100644 --- a/c/src/lib/libcpu/shared/src/cache_manager.c +++ b/c/src/lib/libcpu/shared/src/cache_manager.c @@ -222,7 +222,7 @@ rtems_cache_invalidate_multiple_instruction_lines( const void * i_addr, size_t n final_address = (void *)((size_t)i_addr + n_bytes - 1); i_addr = (void *)((size_t)i_addr & ~(CPU_INSTRUCTION_CACHE_ALIGNMENT - 1)); - while( final_address > i_addr ) { + while( final_address >= i_addr ) { _CPU_cache_invalidate_1_instruction_line( i_addr ); i_addr = (void *)((size_t)i_addr + CPU_INSTRUCTION_CACHE_ALIGNMENT); } -- cgit v1.2.3