145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/*
245536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg * Export of symbols defined in assembler
345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg */
445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Tell string.h we don't want memcpy etc. as cpp defines */
645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#define EXPORT_SYMTAB_STROPS
745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
845536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#include <linux/module.h>
945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#include <linux/string.h>
1045536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#include <linux/types.h>
1145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
1245536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#include <asm/checksum.h>
1345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#include <asm/uaccess.h>
1445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#include <asm/ftrace.h>
1545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
1645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* string functions */
1745536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(strlen);
1845536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(strncmp);
1945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
2045536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* mem* functions */
2145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void *__memscan_zero(void *, size_t);
2245536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void *__memscan_generic(void *, int, size_t);
2345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void *__bzero(void *, size_t);
2445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
2545536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(memscan);
2645536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__memscan_zero);
2745536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__memscan_generic);
2845536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(memcmp);
2945536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(memcpy);
3045536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(memset);
3145536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(memmove);
3245536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__bzero);
3345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
3445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Networking helper routines. */
3545536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(csum_partial);
3645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
3745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#ifdef CONFIG_MCOUNT
3845536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(_mcount);
3945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#endif
4045536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
4145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/*
4245536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg * sparc
4345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg */
4445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#ifdef CONFIG_SPARC32
4545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern int __ashrdi3(int, int);
4645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern int __ashldi3(int, int);
4745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern int __lshrdi3(int, int);
4845536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern int __muldi3(int, int);
4945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern int __divdi3(int, int);
5045536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
5145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void (*__copy_1page)(void *, const void *);
5245536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void (*bzero_1page)(void *);
5345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
5445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void ___rw_read_enter(void);
5545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void ___rw_read_try(void);
5645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void ___rw_read_exit(void);
5745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void ___rw_write_enter(void);
5845536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
5945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Networking helper routines. */
6045536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__csum_partial_copy_sparc_generic);
6145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
6245536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Special internal versions of library functions. */
6345536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__copy_1page);
6445536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__memmove);
6545536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(bzero_1page);
6645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
6745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Moving data to/from/in userspace. */
6845536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__copy_user);
6945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
7045536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Used by asm/spinlock.h */
7145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#ifdef CONFIG_SMP
7245536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(___rw_read_enter);
7345536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(___rw_read_try);
7445536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(___rw_read_exit);
7545536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(___rw_write_enter);
7645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#endif
7745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
7845536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__ashrdi3);
7945536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__ashldi3);
8045536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__lshrdi3);
8145536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__muldi3);
8245536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__divdi3);
8345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#endif
8445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
8545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/*
8645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg * sparc64
8745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg */
8845536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#ifdef CONFIG_SPARC64
8945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Networking helper routines. */
9045536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(csum_partial_copy_nocheck);
9145536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__csum_partial_copy_from_user);
9245536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__csum_partial_copy_to_user);
9345536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(ip_fast_csum);
9445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
9545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Moving data to/from/in userspace. */
9645536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(___copy_to_user);
9745536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(___copy_from_user);
9845536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(___copy_in_user);
9945536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(__clear_user);
10045536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
10145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Atomic counter implementation. */
1024f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra#define ATOMIC_OP(op)							\
1034f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter ZijlstraEXPORT_SYMBOL(atomic_##op);						\
1044f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter ZijlstraEXPORT_SYMBOL(atomic64_##op);
1054f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra
1064f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra#define ATOMIC_OP_RETURN(op)						\
1074f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter ZijlstraEXPORT_SYMBOL(atomic_##op##_return);					\
1084f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter ZijlstraEXPORT_SYMBOL(atomic64_##op##_return);
1094f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra
1104f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra#define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op)
1114f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra
1124f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter ZijlstraATOMIC_OPS(add)
1134f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter ZijlstraATOMIC_OPS(sub)
1144f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra
1154f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra#undef ATOMIC_OPS
1164f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra#undef ATOMIC_OP_RETURN
1174f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra#undef ATOMIC_OP
1184f3316c2b5fe2062c26c9b66915b5a5c80c60a5cPeter Zijlstra
119193d2aadc0ff5c687f6f0d5ef1d38c86ab511a14David S. MillerEXPORT_SYMBOL(atomic64_dec_if_positive);
12045536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
12145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Atomic bit operations. */
12245536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(test_and_set_bit);
12345536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(test_and_clear_bit);
12445536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(test_and_change_bit);
12545536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(set_bit);
12645536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(clear_bit);
12745536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(change_bit);
12845536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
12945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* Special internal versions of library functions. */
13045536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(_clear_page);
13145536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(clear_user_page);
13245536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(copy_user_page);
13345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
13445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg/* RAID code needs this */
13545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgvoid VISenter(void);
13645536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(VISenter);
13745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
1384ff28d4ca93b182b8e181b1e1b1d03fd09fdaeb4David S. Miller/* CRYPTO code needs this */
1394ff28d4ca93b182b8e181b1e1b1d03fd09fdaeb4David S. Millervoid VISenterhalf(void);
1404ff28d4ca93b182b8e181b1e1b1d03fd09fdaeb4David S. MillerEXPORT_SYMBOL(VISenterhalf);
1414ff28d4ca93b182b8e181b1e1b1d03fd09fdaeb4David S. Miller
14245536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void xor_vis_2(unsigned long, unsigned long *, unsigned long *);
14345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void xor_vis_3(unsigned long, unsigned long *, unsigned long *,
14445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg		unsigned long *);
14545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void xor_vis_4(unsigned long, unsigned long *, unsigned long *,
14645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg		unsigned long *, unsigned long *);
14745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void xor_vis_5(unsigned long, unsigned long *, unsigned long *,
14845536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg		unsigned long *, unsigned long *, unsigned long *);
14945536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(xor_vis_2);
15045536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(xor_vis_3);
15145536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(xor_vis_4);
15245536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(xor_vis_5);
15345536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
15445536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void xor_niagara_2(unsigned long, unsigned long *, unsigned long *);
15545536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void xor_niagara_3(unsigned long, unsigned long *, unsigned long *,
15645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg		unsigned long *);
15745536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void xor_niagara_4(unsigned long, unsigned long *, unsigned long *,
15845536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg		unsigned long *, unsigned long *);
15945536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborgextern void xor_niagara_5(unsigned long, unsigned long *, unsigned long *,
16045536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg		unsigned long *, unsigned long *, unsigned long *);
16145536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg
16245536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(xor_niagara_2);
16345536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(xor_niagara_3);
16445536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(xor_niagara_4);
16545536ffc8dcb7798ff4818f54391547e5af19648Sam RavnborgEXPORT_SYMBOL(xor_niagara_5);
16645536ffc8dcb7798ff4818f54391547e5af19648Sam Ravnborg#endif
167