summaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/bfin_ksyms.c
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2010-05-03 19:23:20 +0200
committerMike Frysinger <vapier@gentoo.org>2010-05-22 20:19:09 +0200
commit479ba6035862a9c08ce4351c7fff8926fde4ede5 (patch)
tree93a6419ffdfd38056f26d4362de450f79af044b3 /arch/blackfin/kernel/bfin_ksyms.c
parentBlackfin: SIC: cut down on IAR MMR reads a bit (diff)
downloadlinux-479ba6035862a9c08ce4351c7fff8926fde4ede5.tar.xz
linux-479ba6035862a9c08ce4351c7fff8926fde4ede5.zip
Blackfin: move string functions to normal lib/ assembly
Since 'extern inline' doesn't work correctly in the context of the Linux kernel (too many overriding defines), move the string functions to normal lib/ assembly files (like the existing mem funcs). This avoids the forced inline all over the kernel and allows us to place them constantly in L1. This also avoids some module failures when gcc inserts calls to string functions but the kernel build system doesn't fully consult the library archives. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/kernel/bfin_ksyms.c')
-rw-r--r--arch/blackfin/kernel/bfin_ksyms.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/bfin_ksyms.c b/arch/blackfin/kernel/bfin_ksyms.c
index ed8392c117ea..2c264b51566a 100644
--- a/arch/blackfin/kernel/bfin_ksyms.c
+++ b/arch/blackfin/kernel/bfin_ksyms.c
@@ -33,6 +33,18 @@ EXPORT_SYMBOL(memmove);
EXPORT_SYMBOL(memchr);
/*
+ * Because string functions are both inline and exported functions and
+ * folder arch/blackfin/lib is configured as a library path in Makefile,
+ * symbols exported in folder lib is not linked into built-in.o but
+ * inlined only. In order to export string symbols to kernel module
+ * properly, they should be exported here.
+ */
+EXPORT_SYMBOL(strcpy);
+EXPORT_SYMBOL(strncpy);
+EXPORT_SYMBOL(strcmp);
+EXPORT_SYMBOL(strncmp);
+
+/*
* libgcc functions - functions that are used internally by the
* compiler... (prototypes are not correct though, but that
* doesn't really matter since they're not versioned).