aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>2009-11-07 16:03:53 -0500
committerRusty Russell <rusty@rustcorp.com.au>2009-12-15 00:58:22 -0500
commit3e7b19efe621bcf8bfef896c9c4cc5c99c52c3ec (patch)
tree54d902402d64494762f9ab74edc85aaef3b0552f /arch/arm/kernel
parente3f28c1333acfe9e4109b836bc15caf794e94d09 (diff)
ARM: unexport symbols used to implement floating point emulation
The Kconfigs for in-tree floating point emulation do not allow building as modules. That leaves the Acorn FPEmulator module. I found two public releases of this as a binary module for 2.1 and 2.2 kernels, optimized for ARMV4.[1] If there is a resurgence of interest in this, the symbols can always be re-exported. This allows the EXPORT_SYMBOL_ALIAS() hack to be removed. The ulterior motive here is that EXPORT_SYMBOL_ALIAS() makes it harder to sort the resulting kernel symbol tables. Sorted symbol tables will allow faster symbol resolution during module loading. Note that fp_send_sigs() and fp_printk() are simply aliases for existing exports and add no obvious value. Similarly fp_enter could easily be renamed to kern_fp_enter at the point of definition. Therefore removing EXPORT_SYMBOL_ALIAS will not serve as a material obstacle to re-adding the exports should they be desired in future. Build tested only. [1] http://ftp.arm.linux.org.uk/pub/linux/arm/fpemulator/ Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk> CC: Russell King <linux@arm.linux.org.uk> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/armksyms.c20
1 files changed, 0 insertions, 20 deletions
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
index 0e627705f746..8214bfebfaca 100644
--- a/arch/arm/kernel/armksyms.c
+++ b/arch/arm/kernel/armksyms.c
@@ -48,27 +48,7 @@ extern void __aeabi_uidivmod(void);
48extern void __aeabi_ulcmp(void); 48extern void __aeabi_ulcmp(void);
49 49
50extern void fpundefinstr(void); 50extern void fpundefinstr(void);
51extern void fp_enter(void);
52 51
53/*
54 * This has a special calling convention; it doesn't
55 * modify any of the usual registers, except for LR.
56 */
57#define EXPORT_CRC_ALIAS(sym) __CRC_SYMBOL(sym, "")
58
59#define EXPORT_SYMBOL_ALIAS(sym,orig) \
60 EXPORT_CRC_ALIAS(sym) \
61 static const struct kernel_symbol __ksymtab_##sym \
62 __used __attribute__((section("__ksymtab"))) = \
63 { (unsigned long)&orig, #sym };
64
65/*
66 * floating point math emulator support.
67 * These symbols will never change their calling convention...
68 */
69EXPORT_SYMBOL_ALIAS(kern_fp_enter,fp_enter);
70EXPORT_SYMBOL_ALIAS(fp_printk,printk);
71EXPORT_SYMBOL_ALIAS(fp_send_sig,send_sig);
72 52
73EXPORT_SYMBOL(__backtrace); 53EXPORT_SYMBOL(__backtrace);
74 54