alpha: move exports to actual definitions
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
		
							parent
							
								
									784d5699ed
								
							
						
					
					
						commit
						00fc0e0dda
					
				| @ -3,6 +3,7 @@ | ||||
| generic-y += clkdev.h | ||||
| generic-y += cputime.h | ||||
| generic-y += exec.h | ||||
| generic-y += export.h | ||||
| generic-y += irq_work.h | ||||
| generic-y += mcs_spinlock.h | ||||
| generic-y += mm-arch-hooks.h | ||||
|  | ||||
| @ -8,7 +8,7 @@ ccflags-y	:= -Wno-sign-compare | ||||
| 
 | ||||
| obj-y    := entry.o traps.o process.o osf_sys.o irq.o \
 | ||||
| 	    irq_alpha.o signal.o setup.o ptrace.o time.o \
 | ||||
| 	    alpha_ksyms.o systbls.o err_common.o io.o | ||||
| 	    systbls.o err_common.o io.o | ||||
| 
 | ||||
| obj-$(CONFIG_VGA_HOSE)	+= console.o | ||||
| obj-$(CONFIG_SMP)	+= smp.o | ||||
|  | ||||
| @ -1,102 +0,0 @@ | ||||
| /*
 | ||||
|  * linux/arch/alpha/kernel/alpha_ksyms.c | ||||
|  * | ||||
|  * Export the alpha-specific functions that are needed for loadable | ||||
|  * modules. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/module.h> | ||||
| #include <asm/console.h> | ||||
| #include <asm/uaccess.h> | ||||
| #include <asm/checksum.h> | ||||
| #include <asm/fpu.h> | ||||
| #include <asm/machvec.h> | ||||
| 
 | ||||
| #include <linux/syscalls.h> | ||||
| 
 | ||||
| /* these are C runtime functions with special calling conventions: */ | ||||
| extern void __divl (void); | ||||
| extern void __reml (void); | ||||
| extern void __divq (void); | ||||
| extern void __remq (void); | ||||
| extern void __divlu (void); | ||||
| extern void __remlu (void); | ||||
| extern void __divqu (void); | ||||
| extern void __remqu (void); | ||||
| 
 | ||||
| EXPORT_SYMBOL(alpha_mv); | ||||
| EXPORT_SYMBOL(callback_getenv); | ||||
| EXPORT_SYMBOL(callback_setenv); | ||||
| EXPORT_SYMBOL(callback_save_env); | ||||
| 
 | ||||
| /* platform dependent support */ | ||||
| EXPORT_SYMBOL(strcat); | ||||
| EXPORT_SYMBOL(strcpy); | ||||
| EXPORT_SYMBOL(strlen); | ||||
| EXPORT_SYMBOL(strncpy); | ||||
| EXPORT_SYMBOL(strncat); | ||||
| EXPORT_SYMBOL(strchr); | ||||
| EXPORT_SYMBOL(strrchr); | ||||
| EXPORT_SYMBOL(memmove); | ||||
| EXPORT_SYMBOL(__memcpy); | ||||
| EXPORT_SYMBOL(__memset); | ||||
| EXPORT_SYMBOL(___memset); | ||||
| EXPORT_SYMBOL(__memsetw); | ||||
| EXPORT_SYMBOL(__constant_c_memset); | ||||
| EXPORT_SYMBOL(copy_page); | ||||
| EXPORT_SYMBOL(clear_page); | ||||
| 
 | ||||
| EXPORT_SYMBOL(alpha_read_fp_reg); | ||||
| EXPORT_SYMBOL(alpha_read_fp_reg_s); | ||||
| EXPORT_SYMBOL(alpha_write_fp_reg); | ||||
| EXPORT_SYMBOL(alpha_write_fp_reg_s); | ||||
| 
 | ||||
| /* Networking helper routines. */ | ||||
| EXPORT_SYMBOL(csum_tcpudp_magic); | ||||
| EXPORT_SYMBOL(ip_compute_csum); | ||||
| EXPORT_SYMBOL(ip_fast_csum); | ||||
| EXPORT_SYMBOL(csum_partial_copy_nocheck); | ||||
| EXPORT_SYMBOL(csum_partial_copy_from_user); | ||||
| EXPORT_SYMBOL(csum_ipv6_magic); | ||||
| 
 | ||||
| #ifdef CONFIG_MATHEMU_MODULE | ||||
| extern long (*alpha_fp_emul_imprecise)(struct pt_regs *, unsigned long); | ||||
| extern long (*alpha_fp_emul) (unsigned long pc); | ||||
| EXPORT_SYMBOL(alpha_fp_emul_imprecise); | ||||
| EXPORT_SYMBOL(alpha_fp_emul); | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * The following are specially called from the uaccess assembly stubs. | ||||
|  */ | ||||
| EXPORT_SYMBOL(__copy_user); | ||||
| EXPORT_SYMBOL(__do_clear_user); | ||||
| 
 | ||||
| /* 
 | ||||
|  * SMP-specific symbols. | ||||
|  */ | ||||
| 
 | ||||
| #ifdef CONFIG_SMP | ||||
| EXPORT_SYMBOL(_atomic_dec_and_lock); | ||||
| #endif /* CONFIG_SMP */ | ||||
| 
 | ||||
| /*
 | ||||
|  * The following are special because they're not called | ||||
|  * explicitly (the C compiler or assembler generates them in | ||||
|  * response to division operations).  Fortunately, their | ||||
|  * interface isn't gonna change any time soon now, so it's OK | ||||
|  * to leave it out of version control. | ||||
|  */ | ||||
| # undef memcpy | ||||
| # undef memset | ||||
| EXPORT_SYMBOL(__divl); | ||||
| EXPORT_SYMBOL(__divlu); | ||||
| EXPORT_SYMBOL(__divq); | ||||
| EXPORT_SYMBOL(__divqu); | ||||
| EXPORT_SYMBOL(__reml); | ||||
| EXPORT_SYMBOL(__remlu); | ||||
| EXPORT_SYMBOL(__remq); | ||||
| EXPORT_SYMBOL(__remqu); | ||||
| EXPORT_SYMBOL(memcpy); | ||||
| EXPORT_SYMBOL(memset); | ||||
| EXPORT_SYMBOL(memchr); | ||||
| @ -144,9 +144,11 @@ | ||||
|    else beforehand.  Fine.  We'll do it ourselves.  */ | ||||
| #if 0 | ||||
| #define ALIAS_MV(system) \ | ||||
|   struct alpha_machine_vector alpha_mv __attribute__((alias(#system "_mv"))); | ||||
|   struct alpha_machine_vector alpha_mv __attribute__((alias(#system "_mv"))); \ | ||||
|   EXPORT_SYMBOL(alpha_mv); | ||||
| #else | ||||
| #define ALIAS_MV(system) \ | ||||
|   asm(".global alpha_mv\nalpha_mv = " #system "_mv"); | ||||
|   asm(".global alpha_mv\nalpha_mv = " #system "_mv"); \ | ||||
|   EXPORT_SYMBOL(alpha_mv); | ||||
| #endif | ||||
| #endif /* GENERIC */ | ||||
|  | ||||
| @ -115,6 +115,7 @@ unsigned long alpha_agpgart_size = DEFAULT_AGP_APER_SIZE; | ||||
| 
 | ||||
| #ifdef CONFIG_ALPHA_GENERIC | ||||
| struct alpha_machine_vector alpha_mv; | ||||
| EXPORT_SYMBOL(alpha_mv); | ||||
| #endif | ||||
| 
 | ||||
| #ifndef alpha_using_srm | ||||
|  | ||||
| @ -3,6 +3,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/console.h> | ||||
| #include <asm/export.h> | ||||
| 
 | ||||
| .text | ||||
| #define HWRPB_CRB_OFFSET 0xc0 | ||||
| @ -93,6 +94,10 @@ CALLBACK(save_env, CCB_SAVE_ENV, 1) | ||||
| CALLBACK(pswitch, CCB_PSWITCH, 3) | ||||
| CALLBACK(bios_emul, CCB_BIOS_EMUL, 5) | ||||
| 
 | ||||
| EXPORT_SYMBOL(callback_getenv) | ||||
| EXPORT_SYMBOL(callback_setenv) | ||||
| EXPORT_SYMBOL(callback_save_env) | ||||
| 	 | ||||
| .data | ||||
| __alpha_using_srm:		# For use by bootpheader | ||||
| 	.long 7			# value is not 1 for link debugging | ||||
|  | ||||
| @ -48,6 +48,7 @@ __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, | ||||
| 		(__force u64)saddr + (__force u64)daddr + | ||||
| 		(__force u64)sum + ((len + proto) << 8)); | ||||
| } | ||||
| EXPORT_SYMBOL(csum_tcpudp_magic); | ||||
| 
 | ||||
| __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, | ||||
| 			  __u32 len, __u8 proto, __wsum sum) | ||||
| @ -144,6 +145,7 @@ __sum16 ip_fast_csum(const void *iph, unsigned int ihl) | ||||
| { | ||||
| 	return (__force __sum16)~do_csum(iph,ihl*4); | ||||
| } | ||||
| EXPORT_SYMBOL(ip_fast_csum); | ||||
| 
 | ||||
| /*
 | ||||
|  * computes the checksum of a memory block at buff, length len, | ||||
| @ -178,3 +180,4 @@ __sum16 ip_compute_csum(const void *buff, int len) | ||||
| { | ||||
| 	return (__force __sum16)~from64to16(do_csum(buff,len)); | ||||
| } | ||||
| EXPORT_SYMBOL(ip_compute_csum); | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|  * | ||||
|  * Zero an entire page. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.text | ||||
| 	.align 4
 | ||||
| 	.global clear_page
 | ||||
| @ -37,3 +37,4 @@ clear_page: | ||||
| 	nop | ||||
| 
 | ||||
| 	.end clear_page
 | ||||
| 	EXPORT_SYMBOL(clear_page) | ||||
|  | ||||
| @ -24,6 +24,7 @@ | ||||
|  * Clobbers: | ||||
|  *	$1,$2,$3,$4,$5,$6 | ||||
|  */ | ||||
| #include <asm/export.h> | ||||
| 
 | ||||
| /* Allow an exception for an insn; exit if we get one.  */ | ||||
| #define EX(x,y...)			\ | ||||
| @ -111,3 +112,4 @@ $exception: | ||||
| 	ret	$31, ($28), 1	# .. e1 : | ||||
| 
 | ||||
| 	.end __do_clear_user
 | ||||
| 	EXPORT_SYMBOL(__do_clear_user) | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|  * | ||||
|  * Copy an entire page. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.text | ||||
| 	.align 4
 | ||||
| 	.global copy_page
 | ||||
| @ -47,3 +47,4 @@ copy_page: | ||||
| 	nop | ||||
| 
 | ||||
| 	.end copy_page
 | ||||
| 	EXPORT_SYMBOL(copy_page) | ||||
|  | ||||
| @ -26,6 +26,8 @@ | ||||
|  *	$1,$2,$3,$4,$5,$6,$7 | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 
 | ||||
| /* Allow an exception for an insn; exit if we get one.  */ | ||||
| #define EXI(x,y...)			\ | ||||
| 	99: x,##y;			\ | ||||
| @ -143,3 +145,4 @@ $101: | ||||
| 	ret $31,($28),1 | ||||
| 
 | ||||
| 	.end __copy_user
 | ||||
| EXPORT_SYMBOL(__copy_user) | ||||
|  | ||||
| @ -12,6 +12,7 @@ | ||||
|  * added by Ivan Kokshaysky <ink@jurassic.park.msu.ru>
 | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.globl csum_ipv6_magic
 | ||||
| 	.align 4
 | ||||
| 	.ent csum_ipv6_magic
 | ||||
| @ -113,3 +114,4 @@ csum_ipv6_magic: | ||||
| 	ret			# .. e1 : | ||||
| 
 | ||||
| 	.end csum_ipv6_magic
 | ||||
| 	EXPORT_SYMBOL(csum_ipv6_magic) | ||||
|  | ||||
| @ -374,6 +374,7 @@ csum_partial_copy_from_user(const void __user *src, void *dst, int len, | ||||
| 	} | ||||
| 	return (__force __wsum)checksum; | ||||
| } | ||||
| EXPORT_SYMBOL(csum_partial_copy_from_user); | ||||
| 
 | ||||
| __wsum | ||||
| csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum) | ||||
| @ -386,3 +387,4 @@ csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum) | ||||
| 	set_fs(oldfs); | ||||
| 	return checksum; | ||||
| } | ||||
| EXPORT_SYMBOL(csum_partial_copy_nocheck); | ||||
|  | ||||
| @ -7,6 +7,7 @@ | ||||
| 
 | ||||
| #include <linux/spinlock.h> | ||||
| #include <linux/atomic.h> | ||||
| #include <linux/export.h> | ||||
| 
 | ||||
|   asm (".text					\n\
 | ||||
| 	.global _atomic_dec_and_lock		\n\ | ||||
| @ -39,3 +40,4 @@ static int __used atomic_dec_and_lock_1(atomic_t *atomic, spinlock_t *lock) | ||||
| 	spin_unlock(lock); | ||||
| 	return 0; | ||||
| } | ||||
| EXPORT_SYMBOL(_atomic_dec_and_lock); | ||||
|  | ||||
| @ -45,6 +45,7 @@ | ||||
|  *	$28 - compare status | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| #define halt .long 0 | ||||
| 
 | ||||
| /* | ||||
| @ -151,6 +152,7 @@ ufunction: | ||||
| 	addq	$30,STACK,$30 | ||||
| 	ret	$31,($23),1 | ||||
| 	.end	ufunction
 | ||||
| EXPORT_SYMBOL(ufunction) | ||||
| 
 | ||||
| /* | ||||
|  * Uhh.. Ugly signed division. I'd rather not have it at all, but | ||||
| @ -193,3 +195,4 @@ sfunction: | ||||
| 	addq	$30,STACK,$30 | ||||
| 	ret	$31,($23),1 | ||||
| 	.end	sfunction
 | ||||
| EXPORT_SYMBOL(sfunction) | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|  * | ||||
|  * Zero an entire page. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
|         .text | ||||
|         .align 4
 | ||||
|         .global clear_page
 | ||||
| @ -52,3 +52,4 @@ clear_page: | ||||
| 	nop | ||||
| 
 | ||||
| 	.end clear_page
 | ||||
| 	EXPORT_SYMBOL(clear_page) | ||||
|  | ||||
| @ -43,6 +43,7 @@ | ||||
|  *	want to leave a hole (and we also want to avoid repeating lots of work) | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| /* Allow an exception for an insn; exit if we get one.  */ | ||||
| #define EX(x,y...)			\ | ||||
| 	99: x,##y;			\ | ||||
| @ -222,4 +223,4 @@ $exception:			# Destination for exception recovery(?) | ||||
| 	nop			# .. E  .. ..	: | ||||
| 	ret	$31, ($28), 1	# L0 .. .. ..	: L U L U | ||||
| 	.end __do_clear_user
 | ||||
| 
 | ||||
| 	EXPORT_SYMBOL(__do_clear_user) | ||||
|  | ||||
| @ -56,7 +56,7 @@ | ||||
|    destination pages are in the dcache, but it is my guess that this is | ||||
|    less important than the dcache miss case.  */ | ||||
| 
 | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.text | ||||
| 	.align 4
 | ||||
| 	.global copy_page
 | ||||
| @ -201,3 +201,4 @@ copy_page: | ||||
| 	nop | ||||
| 
 | ||||
| 	.end copy_page
 | ||||
| 	EXPORT_SYMBOL(copy_page) | ||||
|  | ||||
| @ -37,6 +37,7 @@ | ||||
|  *	L	- lower subcluster; L0 - subcluster L0; L1 - subcluster L1
 | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| /* Allow an exception for an insn; exit if we get one.  */ | ||||
| #define EXI(x,y...)			\ | ||||
| 	99: x,##y;			\ | ||||
| @ -256,4 +257,4 @@ $101: | ||||
| 	ret $31,($28),1		# L0 | ||||
| 
 | ||||
| 	.end __copy_user
 | ||||
| 
 | ||||
| 	EXPORT_SYMBOL(__copy_user) | ||||
|  | ||||
| @ -52,6 +52,7 @@ | ||||
|  * may cause additional delay in rare cases (load-load replay traps). | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.globl csum_ipv6_magic
 | ||||
| 	.align 4
 | ||||
| 	.ent csum_ipv6_magic
 | ||||
| @ -148,3 +149,4 @@ csum_ipv6_magic: | ||||
| 	ret			# L0 : L U L U | ||||
| 
 | ||||
| 	.end csum_ipv6_magic
 | ||||
| 	EXPORT_SYMBOL(csum_ipv6_magic) | ||||
|  | ||||
| @ -55,6 +55,7 @@ | ||||
|  * Try not to change the actual algorithm if possible for consistency. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| #define halt .long 0 | ||||
| 
 | ||||
| /* | ||||
| @ -205,6 +206,7 @@ ufunction: | ||||
| 	addq	$30,STACK,$30		# E : | ||||
| 	ret	$31,($23),1		# L0 : L U U L | ||||
| 	.end	ufunction
 | ||||
| EXPORT_SYMBOL(ufunction) | ||||
| 
 | ||||
| /* | ||||
|  * Uhh.. Ugly signed division. I'd rather not have it at all, but | ||||
| @ -257,3 +259,4 @@ sfunction: | ||||
| 	addq	$30,STACK,$30		# E : | ||||
| 	ret	$31,($23),1		# L0 : L U U L | ||||
| 	.end	sfunction
 | ||||
| EXPORT_SYMBOL(sfunction) | ||||
|  | ||||
| @ -27,7 +27,7 @@ | ||||
|  *	L	- lower subcluster; L0 - subcluster L0; L1 - subcluster L1
 | ||||
|  * Try not to change the actual algorithm if possible for consistency. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
|         .set noreorder
 | ||||
|         .set noat
 | ||||
| 
 | ||||
| @ -189,3 +189,4 @@ $not_found: | ||||
| 	ret			# L0 : | ||||
| 
 | ||||
|         .end memchr
 | ||||
| 	EXPORT_SYMBOL(memchr) | ||||
|  | ||||
| @ -19,7 +19,7 @@ | ||||
|  * Temp usage notes: | ||||
|  *	$1,$2,		- scratch | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.set noreorder
 | ||||
| 	.set noat
 | ||||
| 
 | ||||
| @ -242,6 +242,7 @@ $nomoredata: | ||||
| 	nop				# E : | ||||
| 
 | ||||
| 	.end memcpy
 | ||||
| 	EXPORT_SYMBOL(memcpy) | ||||
| 
 | ||||
| /* For backwards module compatibility.  */ | ||||
| __memcpy = memcpy | ||||
|  | ||||
| @ -26,7 +26,7 @@ | ||||
|  * as fixes will need to be made in multiple places.  The performance gain | ||||
|  * is worth it. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.set noat
 | ||||
| 	.set noreorder
 | ||||
| .text | ||||
| @ -229,6 +229,7 @@ end_b: | ||||
| 	nop | ||||
| 	ret $31,($26),1		# L0 : | ||||
| 	.end ___memset
 | ||||
| 	EXPORT_SYMBOL(___memset) | ||||
| 
 | ||||
| 	/* | ||||
| 	 * This is the original body of code, prior to replication and | ||||
| @ -406,6 +407,7 @@ end: | ||||
| 	nop | ||||
| 	ret $31,($26),1		# L0 : | ||||
| 	.end __constant_c_memset
 | ||||
| 	EXPORT_SYMBOL(__constant_c_memset) | ||||
| 
 | ||||
| 	/* | ||||
| 	 * This is a replicant of the __constant_c_memset code, rescheduled | ||||
| @ -594,6 +596,9 @@ end_w: | ||||
| 	ret $31,($26),1		# L0 : | ||||
| 
 | ||||
| 	.end __memsetw
 | ||||
| 	EXPORT_SYMBOL(__memsetw) | ||||
| 
 | ||||
| memset = ___memset | ||||
| __memset = ___memset | ||||
| 	EXPORT_SYMBOL(memset) | ||||
| 	EXPORT_SYMBOL(__memset) | ||||
|  | ||||
| @ -19,7 +19,7 @@ | ||||
|  * string once. | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.text | ||||
| 
 | ||||
| 	.align 4
 | ||||
| @ -52,3 +52,4 @@ $found:	cttz	$2, $3		# U0 : | ||||
| 	br	__stxcpy	# L0 : | ||||
| 
 | ||||
| 	.end strcat
 | ||||
| 	EXPORT_SYMBOL(strcat) | ||||
|  | ||||
| @ -15,7 +15,7 @@ | ||||
|  *	L	- lower subcluster; L0 - subcluster L0; L1 - subcluster L1
 | ||||
|  * Try not to change the actual algorithm if possible for consistency. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| #include <asm/regdef.h> | ||||
| 
 | ||||
| 	.set noreorder
 | ||||
| @ -86,3 +86,4 @@ $found:	negq    t0, t1		# E : clear all but least set bit | ||||
| 	ret			# L0 : | ||||
| 
 | ||||
| 	.end strchr
 | ||||
| 	EXPORT_SYMBOL(strchr) | ||||
|  | ||||
| @ -17,7 +17,7 @@ | ||||
|  *	U	- upper subcluster; U0 - subcluster U0; U1 - subcluster U1
 | ||||
|  *	L	- lower subcluster; L0 - subcluster L0; L1 - subcluster L1
 | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.set noreorder
 | ||||
| 	.set noat
 | ||||
| 
 | ||||
| @ -47,3 +47,4 @@ $found: | ||||
| 	ret	$31, ($26)	# L0 : | ||||
| 
 | ||||
| 	.end	strlen
 | ||||
| 	EXPORT_SYMBOL(strlen) | ||||
|  | ||||
| @ -20,7 +20,7 @@ | ||||
|  * Try not to change the actual algorithm if possible for consistency. | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.text | ||||
| 
 | ||||
| 	.align 4
 | ||||
| @ -92,3 +92,4 @@ $zerocount: | ||||
| 	ret			# L0 : | ||||
| 
 | ||||
| 	.end strncat
 | ||||
| 	EXPORT_SYMBOL(strncat) | ||||
|  | ||||
| @ -18,7 +18,7 @@ | ||||
|  *	L	- lower subcluster; L0 - subcluster L0; L1 - subcluster L1
 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| #include <asm/regdef.h> | ||||
| 
 | ||||
| 	.set noreorder
 | ||||
| @ -107,3 +107,4 @@ $eos: | ||||
| 	nop | ||||
| 
 | ||||
| 	.end strrchr
 | ||||
| 	EXPORT_SYMBOL(strrchr) | ||||
|  | ||||
| @ -4,6 +4,9 @@ | ||||
|  * (C) Copyright 1998 Linus Torvalds | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/compiler.h> | ||||
| #include <linux/export.h> | ||||
| 
 | ||||
| #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67) | ||||
| #define STT(reg,val)  asm volatile ("ftoit $f"#reg",%0" : "=r"(val)); | ||||
| #else | ||||
| @ -52,6 +55,7 @@ alpha_read_fp_reg (unsigned long reg) | ||||
| 	} | ||||
| 	return val; | ||||
| } | ||||
| EXPORT_SYMBOL(alpha_read_fp_reg); | ||||
| 
 | ||||
| #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67) | ||||
| #define LDT(reg,val)  asm volatile ("itoft %0,$f"#reg : : "r"(val)); | ||||
| @ -97,6 +101,7 @@ alpha_write_fp_reg (unsigned long reg, unsigned long val) | ||||
| 	      case 31: LDT(31, val); break; | ||||
| 	} | ||||
| } | ||||
| EXPORT_SYMBOL(alpha_write_fp_reg); | ||||
| 
 | ||||
| #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67) | ||||
| #define STS(reg,val)  asm volatile ("ftois $f"#reg",%0" : "=r"(val)); | ||||
| @ -146,6 +151,7 @@ alpha_read_fp_reg_s (unsigned long reg) | ||||
| 	} | ||||
| 	return val; | ||||
| } | ||||
| EXPORT_SYMBOL(alpha_read_fp_reg_s); | ||||
| 
 | ||||
| #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67) | ||||
| #define LDS(reg,val)  asm volatile ("itofs %0,$f"#reg : : "r"(val)); | ||||
| @ -191,3 +197,4 @@ alpha_write_fp_reg_s (unsigned long reg, unsigned long val) | ||||
| 	      case 31: LDS(31, val); break; | ||||
| 	} | ||||
| } | ||||
| EXPORT_SYMBOL(alpha_write_fp_reg_s); | ||||
|  | ||||
| @ -31,7 +31,7 @@ For correctness consider that: | ||||
|       - only minimum number of quadwords may be accessed | ||||
|       - the third argument is an unsigned long | ||||
| */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
|         .set noreorder
 | ||||
|         .set noat
 | ||||
| 
 | ||||
| @ -162,3 +162,4 @@ $not_found: | ||||
| 	ret			# .. e1 : | ||||
| 
 | ||||
|         .end memchr
 | ||||
| 	EXPORT_SYMBOL(memchr) | ||||
|  | ||||
| @ -16,6 +16,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/types.h> | ||||
| #include <linux/export.h> | ||||
| 
 | ||||
| /*
 | ||||
|  * This should be done in one go with ldq_u*2/mask/stq_u. Do it | ||||
| @ -158,6 +159,4 @@ void * memcpy(void * dest, const void *src, size_t n) | ||||
| 	__memcpy_unaligned_up ((unsigned long) dest, (unsigned long) src, n); | ||||
| 	return dest; | ||||
| } | ||||
| 
 | ||||
| /* For backward modules compatibility, define __memcpy.  */ | ||||
| asm("__memcpy = memcpy; .globl __memcpy"); | ||||
| EXPORT_SYMBOL(memcpy); | ||||
|  | ||||
| @ -6,7 +6,7 @@ | ||||
|  * This is hand-massaged output from the original memcpy.c.  We defer to | ||||
|  * memcpy whenever possible; the backwards copy loops are not unrolled.
 | ||||
|  */ | ||||
|          | ||||
| #include <asm/export.h>         | ||||
| 	.set noat
 | ||||
| 	.set noreorder
 | ||||
| 	.text | ||||
| @ -179,3 +179,4 @@ $egress: | ||||
| 	nop | ||||
| 
 | ||||
| 	.end memmove
 | ||||
| 	EXPORT_SYMBOL(memmove) | ||||
|  | ||||
| @ -13,7 +13,7 @@ | ||||
|  * The scheduling comments are according to the EV5 documentation (and done by  | ||||
|  * hand, so they might well be incorrect, please do tell me about it..) | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.set noat
 | ||||
| 	.set noreorder
 | ||||
| .text | ||||
| @ -106,6 +106,8 @@ within_one_quad: | ||||
| end: | ||||
| 	ret $31,($26),1		/* E1 */ | ||||
| 	.end ___memset
 | ||||
| EXPORT_SYMBOL(___memset) | ||||
| EXPORT_SYMBOL(__constant_c_memset) | ||||
| 
 | ||||
| 	.align 5
 | ||||
| 	.ent __memsetw
 | ||||
| @ -122,6 +124,9 @@ __memsetw: | ||||
| 	br __constant_c_memset	/* .. E1 */ | ||||
| 
 | ||||
| 	.end __memsetw
 | ||||
| EXPORT_SYMBOL(__memsetw) | ||||
| 
 | ||||
| memset = ___memset | ||||
| __memset = ___memset | ||||
| 	EXPORT_SYMBOL(memset) | ||||
| 	EXPORT_SYMBOL(__memset) | ||||
|  | ||||
| @ -4,6 +4,7 @@ | ||||
|  * | ||||
|  * Append a null-terminated string from SRC to DST. | ||||
|  */ | ||||
| #include <asm/export.h> | ||||
| 
 | ||||
| 	.text | ||||
| 
 | ||||
| @ -50,3 +51,4 @@ $found:	negq    $2, $3		# clear all but least set bit | ||||
| 	br	__stxcpy | ||||
| 
 | ||||
| 	.end strcat
 | ||||
| EXPORT_SYMBOL(strcat);
 | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
|  * Return the address of a given character within a null-terminated | ||||
|  * string, or null if it is not found. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| #include <asm/regdef.h> | ||||
| 
 | ||||
| 	.set noreorder
 | ||||
| @ -68,3 +68,4 @@ $retnull: | ||||
| 	ret			# .. e1 : | ||||
| 
 | ||||
| 	.end strchr
 | ||||
| 	EXPORT_SYMBOL(strchr) | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
|  * Copy a null-terminated string from SRC to DST.  Return a pointer | ||||
|  * to the null-terminator in the source. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.text | ||||
| 
 | ||||
| 	.align 3
 | ||||
| @ -21,3 +21,4 @@ strcpy: | ||||
| 	br	__stxcpy	# do the copy | ||||
| 
 | ||||
| 	.end strcpy
 | ||||
| 	EXPORT_SYMBOL(strcpy) | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
|  *	  do this instead of the 9 instructions that | ||||
|  *	  binary search needs). | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.set noreorder
 | ||||
| 	.set noat
 | ||||
| 
 | ||||
| @ -55,3 +55,4 @@ done:	subq	$0, $16, $0 | ||||
| 	ret	$31, ($26) | ||||
| 
 | ||||
| 	.end	strlen
 | ||||
| 	EXPORT_SYMBOL(strlen) | ||||
|  | ||||
| @ -9,7 +9,7 @@ | ||||
|  * past count, whereas libc may write to count+1.  This follows the generic | ||||
|  * implementation in lib/string.c and is, IMHO, more sensible. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.text | ||||
| 
 | ||||
| 	.align 3
 | ||||
| @ -82,3 +82,4 @@ $zerocount: | ||||
| 	ret | ||||
| 
 | ||||
| 	.end strncat
 | ||||
| 	EXPORT_SYMBOL(strncat) | ||||
|  | ||||
| @ -10,7 +10,7 @@ | ||||
|  * version has cropped that bit o' nastiness as well as assuming that | ||||
|  * __stxncpy is in range of a branch. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| 	.set noat
 | ||||
| 	.set noreorder
 | ||||
| 
 | ||||
| @ -79,3 +79,4 @@ $zerolen: | ||||
| 	ret | ||||
| 
 | ||||
| 	.end	strncpy
 | ||||
| 	EXPORT_SYMBOL(strncpy) | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
|  * Return the address of the last occurrence of a given character | ||||
|  * within a null-terminated string, or null if it is not found. | ||||
|  */ | ||||
| 
 | ||||
| #include <asm/export.h> | ||||
| #include <asm/regdef.h> | ||||
| 
 | ||||
| 	.set noreorder
 | ||||
| @ -85,3 +85,4 @@ $retnull: | ||||
| 	ret			# .. e1 : | ||||
| 
 | ||||
| 	.end strrchr
 | ||||
| 	EXPORT_SYMBOL(strrchr) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user