summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux
diff options
context:
space:
mode:
authorSteve Kilbane <steve@whitecrow.demon.co.uk>2011-02-21 19:44:42 -0500
committerMike Frysinger <vapier@gentoo.org>2011-02-21 19:51:02 -0500
commit128e290b1e4204ac33b4cad7fc6189447f029311 (patch)
treea537058a7df9c510d2c6f1945ed2e1d7fec89665 /libc/sysdeps/linux
parentf8355584a335a2a2dc03842f19ba9f1b587b2f5c (diff)
bfin: add support for new cacheflush syscall
Newer gcc's will generate a call to cacheflush when updating jump tables, and that has to be done in kernel space (to avoid hardware anomalies). So make sure uClibc provides that symbol. Signed-off-by: Steve Kilbane <steve@whitecrow.demon.co.uk> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'libc/sysdeps/linux')
-rw-r--r--libc/sysdeps/linux/bfin/Makefile.arch2
-rw-r--r--libc/sysdeps/linux/bfin/cacheflush.c14
-rw-r--r--libc/sysdeps/linux/bfin/sys/cachectl.h25
3 files changed, 40 insertions, 1 deletions
diff --git a/libc/sysdeps/linux/bfin/Makefile.arch b/libc/sysdeps/linux/bfin/Makefile.arch
index 242703757..425a68898 100644
--- a/libc/sysdeps/linux/bfin/Makefile.arch
+++ b/libc/sysdeps/linux/bfin/Makefile.arch
@@ -6,7 +6,7 @@
#
CSRC := bsdsetjmp.c clone.c \
- sram-alloc.c sram-free.c dma-memcpy.c
+ sram-alloc.c sram-free.c dma-memcpy.c cacheflush.c
SSRC := __longjmp.S setjmp.S bsd-_setjmp.S
diff --git a/libc/sysdeps/linux/bfin/cacheflush.c b/libc/sysdeps/linux/bfin/cacheflush.c
new file mode 100644
index 000000000..a8d81c419
--- /dev/null
+++ b/libc/sysdeps/linux/bfin/cacheflush.c
@@ -0,0 +1,14 @@
+/*
+ * cacheflush.c - Cache control functions for Blackfin.
+ *
+ * Copyright (C) 2010 Analog Devices Inc.
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#include <unistd.h>
+#include <errno.h>
+#include <sys/syscall.h>
+#include <sys/cachectl.h>
+
+_syscall3 (int, cacheflush, void *, start, const int, nbytes, const int, flags)
diff --git a/libc/sysdeps/linux/bfin/sys/cachectl.h b/libc/sysdeps/linux/bfin/sys/cachectl.h
new file mode 100644
index 000000000..ee4c03155
--- /dev/null
+++ b/libc/sysdeps/linux/bfin/sys/cachectl.h
@@ -0,0 +1,25 @@
+/*
+ * cachectl.h - Functions for cache control on Blackfin.
+ *
+ * Copyright (C) 2010 Analog Devices, Inc.
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#ifndef _SYS_CACHECTL_H
+#define _SYS_CACHECTL_H 1
+
+#include <features.h>
+
+/*
+ * Get the kernel definition for the flag bits
+ */
+#include <asm/cachectl.h>
+
+__BEGIN_DECLS
+
+extern int cacheflush (void *addr, __const int nbytes, __const int flags);
+
+__END_DECLS
+
+#endif /* sys/cachectl.h */