mips cache flush/ctl syscall support and header
authorRich Felker <dalias@aerifal.cx>
Sun, 4 Nov 2012 22:06:31 +0000 (17:06 -0500)
committerRich Felker <dalias@aerifal.cx>
Sun, 4 Nov 2012 22:06:31 +0000 (17:06 -0500)
include/sys/cachectl.h [new file with mode: 0644]
src/linux/cache.c [new file with mode: 0644]

diff --git a/include/sys/cachectl.h b/include/sys/cachectl.h
new file mode 100644 (file)
index 0000000..f3b896a
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef _SYS_CACHECTL_H
+#define _SYS_CACHECTL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ICACHE (1<<0)
+#define DCACHE (1<<1)
+#define BCACHE (ICACHE|DCACHE)
+#define CACHEABLE 0
+#define UNCACHEABLE 1
+int cachectl(void *, int, int);
+int cacheflush(void *, int, int);
+int _flush_cache(void *, int, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/linux/cache.c b/src/linux/cache.c
new file mode 100644 (file)
index 0000000..3f0abc7
--- /dev/null
@@ -0,0 +1,18 @@
+#include "syscall.h"
+#include "libc.h"
+
+#ifdef SYS_cacheflush
+int _flush_cache(void *addr, int len, int op)
+{
+       return syscall(SYS_cacheflush, addr, len, op);
+}
+weak_alias(_flush_cache, cacheflush);
+#endif
+
+#ifdef SYS_cachectl
+int __cachectl(void *addr, int len, int op)
+{
+       return syscall(SYS_cachectl, addr, len, op);
+}
+weak_alias(__cachectl, cachectl);
+#endif