Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sparc: Create a new file lib/ksyms.c and add export of all symbols defined in assembler in lib/ to this file.

Remove the duplicate entries from kernel/sparc_ksyms_*.c

The rationale behind this is that the EXPORT_SYMBOL() should be close to
their definition and we cannot add designate a symbol to be exported in
assembler so at least put it in a file in the same directory.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

Additions by Julian Calaby:
* Rebased over sparc-2.6.git HEAD

Signed-off-by: Julian Calaby <julian.calaby@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Sam Ravnborg and committed by
David S. Miller
45536ffc b41418f4

+197 -186
-86
arch/sparc/kernel/sparc_ksyms_32.c
··· 5 5 * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) 6 6 */ 7 7 8 - /* Tell string.h we don't want memcpy etc. as cpp defines */ 9 - #define EXPORT_SYMTAB_STROPS 10 8 #define PROMLIB_INTERNAL 11 9 12 10 #include <linux/module.h> 13 11 #include <linux/init.h> 14 12 #include <linux/smp.h> 15 13 #include <linux/types.h> 16 - #include <linux/string.h> 17 14 #include <linux/sched.h> 18 15 #include <linux/interrupt.h> 19 16 #include <linux/in6.h> ··· 52 55 short revents; 53 56 }; 54 57 55 - extern void (*__copy_1page)(void *, const void *); 56 - extern void __memmove(void *, const void *, __kernel_size_t); 57 - extern void (*bzero_1page)(void *); 58 - extern void *__bzero(void *, size_t); 59 - extern void *__memscan_zero(void *, size_t); 60 - extern void *__memscan_generic(void *, int, size_t); 61 - extern int __strncmp(const char *, const char *, __kernel_size_t); 62 - 63 - extern int __ashrdi3(int, int); 64 - extern int __ashldi3(int, int); 65 - extern int __lshrdi3(int, int); 66 - extern int __muldi3(int, int); 67 - extern int __divdi3(int, int); 68 - 69 - /* Private functions with odd calling conventions. */ 70 - extern void ___atomic24_add(void); 71 - extern void ___atomic24_sub(void); 72 - extern void ___rw_read_enter(void); 73 - extern void ___rw_read_try(void); 74 - extern void ___rw_read_exit(void); 75 - extern void ___rw_write_enter(void); 76 - 77 - /* Alias functions whose names begin with "." and export the aliases. 78 - * The module references will be fixed up by module_frob_arch_sections. 79 - */ 80 - extern int _Div(int, int); 81 - extern int _Mul(int, int); 82 - extern int _Rem(int, int); 83 - extern unsigned _Udiv(unsigned, unsigned); 84 - extern unsigned _Umul(unsigned, unsigned); 85 - extern unsigned _Urem(unsigned, unsigned); 86 - 87 58 /* used by various drivers */ 88 59 EXPORT_SYMBOL(sparc_cpu_model); 89 60 EXPORT_SYMBOL(kernel_thread); 90 - #ifdef CONFIG_SMP 91 - // XXX find what uses (or used) these. AV: see asm/spinlock.h 92 - EXPORT_SYMBOL(___rw_read_enter); 93 - EXPORT_SYMBOL(___rw_read_try); 94 - EXPORT_SYMBOL(___rw_read_exit); 95 - EXPORT_SYMBOL(___rw_write_enter); 96 - #endif 97 61 98 62 EXPORT_SYMBOL(sparc_valid_addr_bitmap); 99 63 EXPORT_SYMBOL(phys_base); 100 64 EXPORT_SYMBOL(pfn_base); 101 - 102 - /* Atomic operations. */ 103 - EXPORT_SYMBOL(___atomic24_add); 104 - EXPORT_SYMBOL(___atomic24_sub); 105 65 106 66 /* Per-CPU information table */ 107 67 EXPORT_PER_CPU_SYMBOL(__cpu_data); ··· 147 193 EXPORT_SYMBOL(__prom_getsibling); 148 194 149 195 /* sparc library symbols */ 150 - EXPORT_SYMBOL(memscan); 151 - EXPORT_SYMBOL(strlen); 152 - EXPORT_SYMBOL(strncmp); 153 196 EXPORT_SYMBOL(page_kernel); 154 - 155 - /* Special internal versions of library functions. */ 156 - EXPORT_SYMBOL(__copy_1page); 157 - EXPORT_SYMBOL(__memcpy); 158 - EXPORT_SYMBOL(__memset); 159 - EXPORT_SYMBOL(bzero_1page); 160 - EXPORT_SYMBOL(__bzero); 161 - EXPORT_SYMBOL(__memscan_zero); 162 - EXPORT_SYMBOL(__memscan_generic); 163 - EXPORT_SYMBOL(__strncmp); 164 - EXPORT_SYMBOL(__memmove); 165 - 166 - /* Moving data to/from userspace. */ 167 - EXPORT_SYMBOL(__copy_user); 168 - EXPORT_SYMBOL(__strncpy_from_user); 169 - EXPORT_SYMBOL(__strnlen_user); 170 - 171 - /* Networking helper routines. */ 172 - EXPORT_SYMBOL(__csum_partial_copy_sparc_generic); 173 - EXPORT_SYMBOL(csum_partial); 174 197 175 198 /* Cache flushing. */ 176 199 EXPORT_SYMBOL(sparc_flush_page_to_ram); ··· 156 225 EXPORT_SYMBOL(sun_do_break); 157 226 158 227 EXPORT_SYMBOL(__ret_efault); 159 - 160 - EXPORT_SYMBOL(memcmp); 161 - EXPORT_SYMBOL(memcpy); 162 - EXPORT_SYMBOL(memset); 163 - EXPORT_SYMBOL(memmove); 164 - EXPORT_SYMBOL(__ashrdi3); 165 - EXPORT_SYMBOL(__ashldi3); 166 - EXPORT_SYMBOL(__lshrdi3); 167 - EXPORT_SYMBOL(__muldi3); 168 - EXPORT_SYMBOL(__divdi3); 169 - 170 - EXPORT_SYMBOL(_Rem); 171 - EXPORT_SYMBOL(_Urem); 172 - EXPORT_SYMBOL(_Mul); 173 - EXPORT_SYMBOL(_Umul); 174 - EXPORT_SYMBOL(_Div); 175 - EXPORT_SYMBOL(_Udiv); 176 228 177 229 #ifdef CONFIG_DEBUG_BUGVERBOSE 178 230 EXPORT_SYMBOL(do_BUG);
-100
arch/sparc/kernel/sparc_ksyms_64.c
··· 5 5 * Copyright (C) 1999 Jakub Jelinek (jj@ultra.linux.cz) 6 6 */ 7 7 8 - /* Tell string.h we don't want memcpy etc. as cpp defines */ 9 - #define EXPORT_SYMTAB_STROPS 10 8 #define PROMLIB_INTERNAL 11 9 12 10 #include <linux/module.h> 13 11 #include <linux/types.h> 14 - #include <linux/string.h> 15 12 #include <linux/sched.h> 16 13 #include <linux/in6.h> 17 14 #include <linux/pci.h> ··· 56 59 57 60 extern void die_if_kernel(char *str, struct pt_regs *regs); 58 61 extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); 59 - extern void *__bzero(void *, size_t); 60 - extern void *__memscan_zero(void *, size_t); 61 - extern void *__memscan_generic(void *, int, size_t); 62 - extern __kernel_size_t strlen(const char *); 63 62 extern void sys_sigsuspend(void); 64 63 extern int compat_sys_ioctl(unsigned int fd, unsigned int cmd, u32 arg); 65 64 extern int (*handle_mathemu)(struct pt_regs *, struct fpustate *); ··· 66 73 extern int __ashrdi3(int, int); 67 74 68 75 extern int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs); 69 - 70 - extern void xor_vis_2(unsigned long, unsigned long *, unsigned long *); 71 - extern void xor_vis_3(unsigned long, unsigned long *, unsigned long *, 72 - unsigned long *); 73 - extern void xor_vis_4(unsigned long, unsigned long *, unsigned long *, 74 - unsigned long *, unsigned long *); 75 - extern void xor_vis_5(unsigned long, unsigned long *, unsigned long *, 76 - unsigned long *, unsigned long *, unsigned long *); 77 - 78 - extern void xor_niagara_2(unsigned long, unsigned long *, unsigned long *); 79 - extern void xor_niagara_3(unsigned long, unsigned long *, unsigned long *, 80 - unsigned long *); 81 - extern void xor_niagara_4(unsigned long, unsigned long *, unsigned long *, 82 - unsigned long *, unsigned long *); 83 - extern void xor_niagara_5(unsigned long, unsigned long *, unsigned long *, 84 - unsigned long *, unsigned long *, unsigned long *); 85 76 86 77 /* Per-CPU information table */ 87 78 EXPORT_PER_CPU_SYMBOL(__cpu_data); ··· 80 103 EXPORT_SYMBOL(__write_trylock); 81 104 #endif /* CONFIG_SMP */ 82 105 83 - #ifdef CONFIG_MCOUNT 84 - EXPORT_SYMBOL(_mcount); 85 - #endif 86 - 87 106 EXPORT_SYMBOL(sparc64_get_clock_tick); 88 - 89 - /* RW semaphores */ 90 - EXPORT_SYMBOL(__down_read); 91 - EXPORT_SYMBOL(__down_read_trylock); 92 - EXPORT_SYMBOL(__down_write); 93 - EXPORT_SYMBOL(__down_write_trylock); 94 - EXPORT_SYMBOL(__up_read); 95 - EXPORT_SYMBOL(__up_write); 96 - EXPORT_SYMBOL(__downgrade_write); 97 - 98 - /* Atomic counter implementation. */ 99 - EXPORT_SYMBOL(atomic_add); 100 - EXPORT_SYMBOL(atomic_add_ret); 101 - EXPORT_SYMBOL(atomic_sub); 102 - EXPORT_SYMBOL(atomic_sub_ret); 103 - EXPORT_SYMBOL(atomic64_add); 104 - EXPORT_SYMBOL(atomic64_add_ret); 105 - EXPORT_SYMBOL(atomic64_sub); 106 - EXPORT_SYMBOL(atomic64_sub_ret); 107 - 108 - /* Atomic bit operations. */ 109 - EXPORT_SYMBOL(test_and_set_bit); 110 - EXPORT_SYMBOL(test_and_clear_bit); 111 - EXPORT_SYMBOL(test_and_change_bit); 112 - EXPORT_SYMBOL(set_bit); 113 - EXPORT_SYMBOL(clear_bit); 114 - EXPORT_SYMBOL(change_bit); 115 107 116 108 EXPORT_SYMBOL(__flushw_user); 117 109 ··· 155 209 EXPORT_SYMBOL(__prom_getchild); 156 210 EXPORT_SYMBOL(__prom_getsibling); 157 211 158 - /* sparc library symbols */ 159 - EXPORT_SYMBOL(strlen); 160 - EXPORT_SYMBOL(__strlen_user); 161 - EXPORT_SYMBOL(__strnlen_user); 162 - 163 - /* Special internal versions of library functions. */ 164 - EXPORT_SYMBOL(_clear_page); 165 - EXPORT_SYMBOL(clear_user_page); 166 - EXPORT_SYMBOL(copy_user_page); 167 - EXPORT_SYMBOL(__bzero); 168 - EXPORT_SYMBOL(__memscan_zero); 169 - EXPORT_SYMBOL(__memscan_generic); 170 - EXPORT_SYMBOL(__memset); 171 - 172 - EXPORT_SYMBOL(csum_partial); 173 - EXPORT_SYMBOL(csum_partial_copy_nocheck); 174 - EXPORT_SYMBOL(__csum_partial_copy_from_user); 175 - EXPORT_SYMBOL(__csum_partial_copy_to_user); 176 - EXPORT_SYMBOL(ip_fast_csum); 177 - 178 212 /* Moving data to/from/in userspace. */ 179 - EXPORT_SYMBOL(___copy_to_user); 180 - EXPORT_SYMBOL(___copy_from_user); 181 - EXPORT_SYMBOL(___copy_in_user); 182 213 EXPORT_SYMBOL(copy_to_user_fixup); 183 214 EXPORT_SYMBOL(copy_from_user_fixup); 184 215 EXPORT_SYMBOL(copy_in_user_fixup); 185 - EXPORT_SYMBOL(__strncpy_from_user); 186 - EXPORT_SYMBOL(__clear_user); 187 216 188 217 /* Various address conversion macros use this. */ 189 218 EXPORT_SYMBOL(sparc64_valid_addr_bitmap); ··· 167 246 * and will always be 'void __ret_efault(void)'. 168 247 */ 169 248 EXPORT_SYMBOL(__ret_efault); 170 - 171 - /* No version information on these, as gcc produces such symbols. */ 172 - EXPORT_SYMBOL(memcmp); 173 - EXPORT_SYMBOL(memcpy); 174 - EXPORT_SYMBOL(memset); 175 - EXPORT_SYMBOL(memmove); 176 - EXPORT_SYMBOL(strncmp); 177 - 178 - void VISenter(void); 179 - /* RAID code needs this */ 180 - EXPORT_SYMBOL(VISenter); 181 249 182 250 /* for input/keybdev */ 183 251 EXPORT_SYMBOL(sun_do_break); ··· 180 270 EXPORT_SYMBOL(ns87303_lock); 181 271 182 272 EXPORT_SYMBOL(tick_ops); 183 - 184 - EXPORT_SYMBOL(xor_vis_2); 185 - EXPORT_SYMBOL(xor_vis_3); 186 - EXPORT_SYMBOL(xor_vis_4); 187 - EXPORT_SYMBOL(xor_vis_5); 188 - 189 - EXPORT_SYMBOL(xor_niagara_2); 190 - EXPORT_SYMBOL(xor_niagara_3); 191 - EXPORT_SYMBOL(xor_niagara_4); 192 - EXPORT_SYMBOL(xor_niagara_5); 193 273 194 274 EXPORT_SYMBOL_GPL(real_hard_smp_processor_id);
+1
arch/sparc/lib/Makefile
··· 42 42 43 43 obj-y += iomap.o 44 44 obj-$(CONFIG_SPARC32) += atomic32.o 45 + obj-y += ksyms.o
+196
arch/sparc/lib/ksyms.c
··· 1 + /* 2 + * Export of symbols defined in assembler 3 + */ 4 + 5 + /* Tell string.h we don't want memcpy etc. as cpp defines */ 6 + #define EXPORT_SYMTAB_STROPS 7 + 8 + #include <linux/module.h> 9 + #include <linux/string.h> 10 + #include <linux/types.h> 11 + 12 + #include <asm/checksum.h> 13 + #include <asm/uaccess.h> 14 + #include <asm/ftrace.h> 15 + 16 + /* string functions */ 17 + EXPORT_SYMBOL(strlen); 18 + EXPORT_SYMBOL(__strlen_user); 19 + EXPORT_SYMBOL(__strnlen_user); 20 + EXPORT_SYMBOL(strncmp); 21 + 22 + /* mem* functions */ 23 + extern void *__memscan_zero(void *, size_t); 24 + extern void *__memscan_generic(void *, int, size_t); 25 + extern void *__bzero(void *, size_t); 26 + 27 + EXPORT_SYMBOL(memscan); 28 + EXPORT_SYMBOL(__memscan_zero); 29 + EXPORT_SYMBOL(__memscan_generic); 30 + EXPORT_SYMBOL(memcmp); 31 + EXPORT_SYMBOL(memcpy); 32 + EXPORT_SYMBOL(memset); 33 + EXPORT_SYMBOL(__memset); 34 + EXPORT_SYMBOL(memmove); 35 + EXPORT_SYMBOL(__bzero); 36 + 37 + /* Moving data to/from/in userspace. */ 38 + EXPORT_SYMBOL(__strncpy_from_user); 39 + 40 + /* Networking helper routines. */ 41 + EXPORT_SYMBOL(csum_partial); 42 + 43 + #ifdef CONFIG_MCOUNT 44 + EXPORT_SYMBOL(_mcount); 45 + #endif 46 + 47 + /* 48 + * sparc 49 + */ 50 + #ifdef CONFIG_SPARC32 51 + extern int __ashrdi3(int, int); 52 + extern int __ashldi3(int, int); 53 + extern int __lshrdi3(int, int); 54 + extern int __muldi3(int, int); 55 + extern int __divdi3(int, int); 56 + 57 + extern void (*__copy_1page)(void *, const void *); 58 + extern void (*bzero_1page)(void *); 59 + 60 + extern int __strncmp(const char *, const char *, __kernel_size_t); 61 + 62 + extern void ___rw_read_enter(void); 63 + extern void ___rw_read_try(void); 64 + extern void ___rw_read_exit(void); 65 + extern void ___rw_write_enter(void); 66 + extern void ___atomic24_add(void); 67 + extern void ___atomic24_sub(void); 68 + 69 + /* Alias functions whose names begin with "." and export the aliases. 70 + * The module references will be fixed up by module_frob_arch_sections. 71 + */ 72 + extern int _Div(int, int); 73 + extern int _Mul(int, int); 74 + extern int _Rem(int, int); 75 + extern unsigned _Udiv(unsigned, unsigned); 76 + extern unsigned _Umul(unsigned, unsigned); 77 + extern unsigned _Urem(unsigned, unsigned); 78 + 79 + /* Networking helper routines. */ 80 + EXPORT_SYMBOL(__csum_partial_copy_sparc_generic); 81 + 82 + /* Special internal versions of library functions. */ 83 + EXPORT_SYMBOL(__copy_1page); 84 + EXPORT_SYMBOL(__memcpy); 85 + EXPORT_SYMBOL(__memmove); 86 + EXPORT_SYMBOL(bzero_1page); 87 + 88 + /* string functions */ 89 + EXPORT_SYMBOL(__strncmp); 90 + 91 + /* Moving data to/from/in userspace. */ 92 + EXPORT_SYMBOL(__copy_user); 93 + 94 + /* Used by asm/spinlock.h */ 95 + #ifdef CONFIG_SMP 96 + EXPORT_SYMBOL(___rw_read_enter); 97 + EXPORT_SYMBOL(___rw_read_try); 98 + EXPORT_SYMBOL(___rw_read_exit); 99 + EXPORT_SYMBOL(___rw_write_enter); 100 + #endif 101 + 102 + /* Atomic operations. */ 103 + EXPORT_SYMBOL(___atomic24_add); 104 + EXPORT_SYMBOL(___atomic24_sub); 105 + 106 + EXPORT_SYMBOL(__ashrdi3); 107 + EXPORT_SYMBOL(__ashldi3); 108 + EXPORT_SYMBOL(__lshrdi3); 109 + EXPORT_SYMBOL(__muldi3); 110 + EXPORT_SYMBOL(__divdi3); 111 + 112 + EXPORT_SYMBOL(_Rem); 113 + EXPORT_SYMBOL(_Urem); 114 + EXPORT_SYMBOL(_Mul); 115 + EXPORT_SYMBOL(_Umul); 116 + EXPORT_SYMBOL(_Div); 117 + EXPORT_SYMBOL(_Udiv); 118 + #endif 119 + 120 + /* 121 + * sparc64 122 + */ 123 + #ifdef CONFIG_SPARC64 124 + /* Networking helper routines. */ 125 + EXPORT_SYMBOL(csum_partial_copy_nocheck); 126 + EXPORT_SYMBOL(__csum_partial_copy_from_user); 127 + EXPORT_SYMBOL(__csum_partial_copy_to_user); 128 + EXPORT_SYMBOL(ip_fast_csum); 129 + 130 + /* Moving data to/from/in userspace. */ 131 + EXPORT_SYMBOL(___copy_to_user); 132 + EXPORT_SYMBOL(___copy_from_user); 133 + EXPORT_SYMBOL(___copy_in_user); 134 + EXPORT_SYMBOL(__clear_user); 135 + 136 + /* RW semaphores */ 137 + EXPORT_SYMBOL(__down_read); 138 + EXPORT_SYMBOL(__down_read_trylock); 139 + EXPORT_SYMBOL(__down_write); 140 + EXPORT_SYMBOL(__down_write_trylock); 141 + EXPORT_SYMBOL(__up_read); 142 + EXPORT_SYMBOL(__up_write); 143 + EXPORT_SYMBOL(__downgrade_write); 144 + 145 + /* Atomic counter implementation. */ 146 + EXPORT_SYMBOL(atomic_add); 147 + EXPORT_SYMBOL(atomic_add_ret); 148 + EXPORT_SYMBOL(atomic_sub); 149 + EXPORT_SYMBOL(atomic_sub_ret); 150 + EXPORT_SYMBOL(atomic64_add); 151 + EXPORT_SYMBOL(atomic64_add_ret); 152 + EXPORT_SYMBOL(atomic64_sub); 153 + EXPORT_SYMBOL(atomic64_sub_ret); 154 + 155 + /* Atomic bit operations. */ 156 + EXPORT_SYMBOL(test_and_set_bit); 157 + EXPORT_SYMBOL(test_and_clear_bit); 158 + EXPORT_SYMBOL(test_and_change_bit); 159 + EXPORT_SYMBOL(set_bit); 160 + EXPORT_SYMBOL(clear_bit); 161 + EXPORT_SYMBOL(change_bit); 162 + 163 + /* Special internal versions of library functions. */ 164 + EXPORT_SYMBOL(_clear_page); 165 + EXPORT_SYMBOL(clear_user_page); 166 + EXPORT_SYMBOL(copy_user_page); 167 + 168 + /* RAID code needs this */ 169 + void VISenter(void); 170 + EXPORT_SYMBOL(VISenter); 171 + 172 + extern void xor_vis_2(unsigned long, unsigned long *, unsigned long *); 173 + extern void xor_vis_3(unsigned long, unsigned long *, unsigned long *, 174 + unsigned long *); 175 + extern void xor_vis_4(unsigned long, unsigned long *, unsigned long *, 176 + unsigned long *, unsigned long *); 177 + extern void xor_vis_5(unsigned long, unsigned long *, unsigned long *, 178 + unsigned long *, unsigned long *, unsigned long *); 179 + EXPORT_SYMBOL(xor_vis_2); 180 + EXPORT_SYMBOL(xor_vis_3); 181 + EXPORT_SYMBOL(xor_vis_4); 182 + EXPORT_SYMBOL(xor_vis_5); 183 + 184 + extern void xor_niagara_2(unsigned long, unsigned long *, unsigned long *); 185 + extern void xor_niagara_3(unsigned long, unsigned long *, unsigned long *, 186 + unsigned long *); 187 + extern void xor_niagara_4(unsigned long, unsigned long *, unsigned long *, 188 + unsigned long *, unsigned long *); 189 + extern void xor_niagara_5(unsigned long, unsigned long *, unsigned long *, 190 + unsigned long *, unsigned long *, unsigned long *); 191 + 192 + EXPORT_SYMBOL(xor_niagara_2); 193 + EXPORT_SYMBOL(xor_niagara_3); 194 + EXPORT_SYMBOL(xor_niagara_4); 195 + EXPORT_SYMBOL(xor_niagara_5); 196 + #endif