X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=rpikern;a=blobdiff_plain;f=src%2Fsysctl.h;fp=src%2Fsysctl.h;h=8d9634ae05ac30c51b55fbbfd5558ece07400678;hp=0000000000000000000000000000000000000000;hb=99bdc8838f189f79ba77bfbbf41d7f1b4839ce0f;hpb=6da291dc416a718164b5596aa16b1901f2770732 diff --git a/src/sysctl.h b/src/sysctl.h new file mode 100644 index 0000000..8d9634a --- /dev/null +++ b/src/sysctl.h @@ -0,0 +1,18 @@ +#ifndef SYSCTL_H_ +#define SYSCTL_H_ + +/* c7 reg, op1=0, mode c14 is clean&inval, op2=1 is cacheline MVA */ +#define sysctl_dcache_clean_inval(addr, len) \ + do { \ + register uint32_t a asm("r0") = addr; \ + asm volatile( \ + "\n0:\tmcr p15, 0, %0, c7, c14, 1" \ + "\n\tadd %0, #64" \ + "\n\tcmp %0, %1" \ + "\n\tblo 0b" \ + :: "r"(a), "r"(addr + len) \ + : "memory"); \ + } while(0) + + +#endif /* SYSCTL_H_ */