-// __asm__ volatile("svc 0x2E\n\t");
- svcBackdoor((ctr_callback_type)ctr_invalidate_ICache_kernel);
-
-}
-
-void ctr_flush_DCache(void)
-{
-// __asm__ volatile("svc 0x4B\n\t");
- svcBackdoor((ctr_callback_type)ctr_flush_DCache_kernel);
+ __asm__ volatile(
+ "mrs r1, cpsr\n"
+ "cpsid aif\n" // disable interrupts
+ "mov r0, #0\n"
+ "mcr p15, 0, r0, c7, c10, 0\n" // clean dcache
+ "mcr p15, 0, r0, c7, c10, 4\n" // DSB
+ "mcr p15, 0, r0, c7, c5, 0\n" // invalidate icache+BTAC
+ "msr cpsr_cx, r1\n" // restore interrupts
+ ::: "r0", "r1");