From fc5f16d18222d197ebf182e50048aa384d84269d Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 4 Nov 2012 17:06:31 -0500 Subject: [PATCH] mips cache flush/ctl syscall support and header --- include/sys/cachectl.h | 22 ++++++++++++++++++++++ src/linux/cache.c | 18 ++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 include/sys/cachectl.h create mode 100644 src/linux/cache.c diff --git a/include/sys/cachectl.h b/include/sys/cachectl.h new file mode 100644 index 00000000..f3b896a8 --- /dev/null +++ b/include/sys/cachectl.h @@ -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 index 00000000..3f0abc7c --- /dev/null +++ b/src/linux/cache.c @@ -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 -- 2.25.1