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.
This commit is contained in:
Aleksandr Platonov
2014-01-14 14:40:07 +01:00
committed by Sebastian Huber
parent 3a7f5887f3
commit fc6a0ae1a6

View File

@@ -235,7 +235,7 @@ rtems_cache_invalidate_multiple_instruction_lines( const void * i_addr, size_t n
final_address = (void *)((size_t)i_addr + n_bytes - 1); final_address = (void *)((size_t)i_addr + n_bytes - 1);
i_addr = (void *)((size_t)i_addr & ~(CPU_INSTRUCTION_CACHE_ALIGNMENT - 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 ); _CPU_cache_invalidate_1_instruction_line( i_addr );
i_addr = (void *)((size_t)i_addr + CPU_INSTRUCTION_CACHE_ALIGNMENT); i_addr = (void *)((size_t)i_addr + CPU_INSTRUCTION_CACHE_ALIGNMENT);
} }