diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2009-01-08 19:57:35 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-01-08 19:57:35 -0500 |
commit | 45536ffc8dcb7798ff4818f54391547e5af19648 (patch) | |
tree | adc72fde5230d5b345ec28be7d9be3c2124c4fb1 /arch/sparc/lib | |
parent | b41418f48c389bad4cd87156792b4a4f24a70729 (diff) |
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>
Diffstat (limited to 'arch/sparc/lib')
-rw-r--r-- | arch/sparc/lib/Makefile | 1 | ||||
-rw-r--r-- | arch/sparc/lib/ksyms.c | 196 |
2 files changed, 197 insertions, 0 deletions
diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile index 375016e19144..273fc85269fc 100644 --- a/arch/sparc/lib/Makefile +++ b/arch/sparc/lib/Makefile | |||
@@ -42,3 +42,4 @@ lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o | |||
42 | 42 | ||
43 | obj-y += iomap.o | 43 | obj-y += iomap.o |
44 | obj-$(CONFIG_SPARC32) += atomic32.o | 44 | obj-$(CONFIG_SPARC32) += atomic32.o |
45 | obj-y += ksyms.o | ||
diff --git a/arch/sparc/lib/ksyms.c b/arch/sparc/lib/ksyms.c new file mode 100644 index 000000000000..704b12668388 --- /dev/null +++ b/arch/sparc/lib/ksyms.c | |||
@@ -0,0 +1,196 @@ | |||
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 | ||