, , MMU ( , MMU):
void enable_data_cache()
{
asm volatile( " mrc p15, 0, r0, c1, c0, 0" );
asm volatile( " orr r0, r0, #4" );
asm volatile( " mcr p15, 0, r0, c1, c0, 0" );
}
void disable_data_cache()
{
asm volatile( "_disable_data_cache_start_:" );
asm volatile( " mrc p15, 0, r15, c7, c14, 3" );
asm volatile( " bne _disable_data_cache_start_" );
asm volatile( " mov r0,#0" );
asm volatile( " mcr p15, 0, r0, c7, c5, 0" );
asm volatile( " mcr p15, 0, r0, c7, c10, 4");
asm volatile( " mrc p15, 0, r0, c1, c0, 0" );
asm volatile( " bic r0, r0, #4" );
asm volatile( " mcr p15, 0, r0, c1, c0, 0" );
}
void clean_data_cache()
{
asm volatile( "_clean_data_cache_start_:" );
asm volatile( " mrc p15, 0, r15, c7, c14, 3" );
asm volatile( " bne _clean_data_cache_start_" );
}
void enable_instruction_cache()
{
asm volatile( " mrc p15, 0, r0, c1, c0, 0" );
asm volatile( " orr r0, r0, #4096" );
asm volatile( " mcr p15, 0, r0, c1, c0, 0" );
}
void disable_instruction_cache()
{
asm volatile( " mrc p15, 0, r0, c1, c0, 0" );
asm volatile( " bic r0, r0, #4096" );
asm volatile( " mcr p15, 0, r0, c1, c0, 0" );
}