+#define sysctl_icache_inval(addr, len) \
+ do { \
+ register uint32_t a asm("r0") = addr; \
+ asm volatile( \
+ "\n0:\tmcr p15, 0, %0, c7, c5, 1" \
+ "\n\tadd %0, #64" \
+ "\n\tcmp %0, %1" \
+ "\n\tblo 0b" \
+ :: "r"(a), "r"(addr + len) \
+ : "memory"); \
+ } while(0)