Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
4dd1837d
Commit
4dd1837d
authored
Jan 13, 2016
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
arm: move exports to definitions
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
711f5df7
Changes
47
Hide whitespace changes
Inline
Side-by-side
Showing
47 changed files
with
131 additions
and
208 deletions
+131
-208
arch/arm/include/asm/Kbuild
arch/arm/include/asm/Kbuild
+1
-0
arch/arm/kernel/Makefile
arch/arm/kernel/Makefile
+1
-1
arch/arm/kernel/armksyms.c
arch/arm/kernel/armksyms.c
+0
-183
arch/arm/kernel/entry-ftrace.S
arch/arm/kernel/entry-ftrace.S
+3
-0
arch/arm/kernel/head.S
arch/arm/kernel/head.S
+3
-0
arch/arm/kernel/smccc-call.S
arch/arm/kernel/smccc-call.S
+3
-0
arch/arm/lib/ashldi3.S
arch/arm/lib/ashldi3.S
+3
-0
arch/arm/lib/ashrdi3.S
arch/arm/lib/ashrdi3.S
+3
-0
arch/arm/lib/bitops.h
arch/arm/lib/bitops.h
+5
-0
arch/arm/lib/bswapsdi2.S
arch/arm/lib/bswapsdi2.S
+3
-0
arch/arm/lib/clear_user.S
arch/arm/lib/clear_user.S
+4
-0
arch/arm/lib/copy_from_user.S
arch/arm/lib/copy_from_user.S
+2
-0
arch/arm/lib/copy_page.S
arch/arm/lib/copy_page.S
+2
-0
arch/arm/lib/copy_to_user.S
arch/arm/lib/copy_to_user.S
+4
-0
arch/arm/lib/csumipv6.S
arch/arm/lib/csumipv6.S
+2
-1
arch/arm/lib/csumpartial.S
arch/arm/lib/csumpartial.S
+2
-0
arch/arm/lib/csumpartialcopy.S
arch/arm/lib/csumpartialcopy.S
+1
-0
arch/arm/lib/csumpartialcopygeneric.S
arch/arm/lib/csumpartialcopygeneric.S
+2
-0
arch/arm/lib/csumpartialcopyuser.S
arch/arm/lib/csumpartialcopyuser.S
+1
-0
arch/arm/lib/delay.c
arch/arm/lib/delay.c
+2
-0
arch/arm/lib/div64.S
arch/arm/lib/div64.S
+2
-0
arch/arm/lib/findbit.S
arch/arm/lib/findbit.S
+9
-0
arch/arm/lib/getuser.S
arch/arm/lib/getuser.S
+9
-0
arch/arm/lib/io-readsb.S
arch/arm/lib/io-readsb.S
+2
-0
arch/arm/lib/io-readsl.S
arch/arm/lib/io-readsl.S
+2
-0
arch/arm/lib/io-readsw-armv3.S
arch/arm/lib/io-readsw-armv3.S
+2
-1
arch/arm/lib/io-readsw-armv4.S
arch/arm/lib/io-readsw-armv4.S
+2
-0
arch/arm/lib/io-writesb.S
arch/arm/lib/io-writesb.S
+2
-0
arch/arm/lib/io-writesl.S
arch/arm/lib/io-writesl.S
+2
-0
arch/arm/lib/io-writesw-armv3.S
arch/arm/lib/io-writesw-armv3.S
+2
-0
arch/arm/lib/io-writesw-armv4.S
arch/arm/lib/io-writesw-armv4.S
+2
-0
arch/arm/lib/lib1funcs.S
arch/arm/lib/lib1funcs.S
+9
-0
arch/arm/lib/lshrdi3.S
arch/arm/lib/lshrdi3.S
+3
-0
arch/arm/lib/memchr.S
arch/arm/lib/memchr.S
+2
-0
arch/arm/lib/memcpy.S
arch/arm/lib/memcpy.S
+3
-0
arch/arm/lib/memmove.S
arch/arm/lib/memmove.S
+2
-0
arch/arm/lib/memset.S
arch/arm/lib/memset.S
+3
-0
arch/arm/lib/memzero.S
arch/arm/lib/memzero.S
+2
-0
arch/arm/lib/muldi3.S
arch/arm/lib/muldi3.S
+3
-0
arch/arm/lib/putuser.S
arch/arm/lib/putuser.S
+5
-0
arch/arm/lib/strchr.S
arch/arm/lib/strchr.S
+2
-0
arch/arm/lib/strrchr.S
arch/arm/lib/strrchr.S
+2
-0
arch/arm/lib/uaccess_with_memcpy.c
arch/arm/lib/uaccess_with_memcpy.c
+3
-0
arch/arm/lib/ucmpdi2.S
arch/arm/lib/ucmpdi2.S
+3
-0
arch/arm/mach-imx/Makefile
arch/arm/mach-imx/Makefile
+0
-1
arch/arm/mach-imx/ssi-fiq-ksym.c
arch/arm/mach-imx/ssi-fiq-ksym.c
+0
-20
arch/arm/mach-imx/ssi-fiq.S
arch/arm/mach-imx/ssi-fiq.S
+6
-1
No files found.
arch/arm/include/asm/Kbuild
View file @
4dd1837d
...
...
@@ -8,6 +8,7 @@ generic-y += early_ioremap.h
generic-y += emergency-restart.h
generic-y += errno.h
generic-y += exec.h
generic-y += export.h
generic-y += ioctl.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
...
...
arch/arm/kernel/Makefile
View file @
4dd1837d
...
...
@@ -33,7 +33,7 @@ endif
obj-$(CONFIG_CPU_IDLE)
+=
cpuidle.o
obj-$(CONFIG_ISA_DMA_API)
+=
dma.o
obj-$(CONFIG_FIQ)
+=
fiq.o fiqasm.o
obj-$(CONFIG_MODULES)
+=
armksyms.o
module.o
obj-$(CONFIG_MODULES)
+=
module.o
obj-$(CONFIG_ARM_MODULE_PLTS)
+=
module-plts.o
obj-$(CONFIG_ISA_DMA)
+=
dma-isa.o
obj-$(CONFIG_PCI)
+=
bios32.o isa.o
...
...
arch/arm/kernel/armksyms.c
deleted
100644 → 0
View file @
711f5df7
/*
* linux/arch/arm/kernel/armksyms.c
*
* Copyright (C) 2000 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/export.h>
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/cryptohash.h>
#include <linux/delay.h>
#include <linux/in6.h>
#include <linux/syscalls.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#include <linux/arm-smccc.h>
#include <asm/checksum.h>
#include <asm/ftrace.h>
/*
* libgcc functions - functions that are used internally by the
* compiler... (prototypes are not correct though, but that
* doesn't really matter since they're not versioned).
*/
extern
void
__ashldi3
(
void
);
extern
void
__ashrdi3
(
void
);
extern
void
__divsi3
(
void
);
extern
void
__lshrdi3
(
void
);
extern
void
__modsi3
(
void
);
extern
void
__muldi3
(
void
);
extern
void
__ucmpdi2
(
void
);
extern
void
__udivsi3
(
void
);
extern
void
__umodsi3
(
void
);
extern
void
__do_div64
(
void
);
extern
void
__bswapsi2
(
void
);
extern
void
__bswapdi2
(
void
);
extern
void
__aeabi_idiv
(
void
);
extern
void
__aeabi_idivmod
(
void
);
extern
void
__aeabi_lasr
(
void
);
extern
void
__aeabi_llsl
(
void
);
extern
void
__aeabi_llsr
(
void
);
extern
void
__aeabi_lmul
(
void
);
extern
void
__aeabi_uidiv
(
void
);
extern
void
__aeabi_uidivmod
(
void
);
extern
void
__aeabi_ulcmp
(
void
);
extern
void
fpundefinstr
(
void
);
void
mmioset
(
void
*
,
unsigned
int
,
size_t
);
void
mmiocpy
(
void
*
,
const
void
*
,
size_t
);
/* platform dependent support */
EXPORT_SYMBOL
(
arm_delay_ops
);
/* networking */
EXPORT_SYMBOL
(
csum_partial
);
EXPORT_SYMBOL
(
csum_partial_copy_from_user
);
EXPORT_SYMBOL
(
csum_partial_copy_nocheck
);
EXPORT_SYMBOL
(
__csum_ipv6_magic
);
/* io */
#ifndef __raw_readsb
EXPORT_SYMBOL
(
__raw_readsb
);
#endif
#ifndef __raw_readsw
EXPORT_SYMBOL
(
__raw_readsw
);
#endif
#ifndef __raw_readsl
EXPORT_SYMBOL
(
__raw_readsl
);
#endif
#ifndef __raw_writesb
EXPORT_SYMBOL
(
__raw_writesb
);
#endif
#ifndef __raw_writesw
EXPORT_SYMBOL
(
__raw_writesw
);
#endif
#ifndef __raw_writesl
EXPORT_SYMBOL
(
__raw_writesl
);
#endif
/* string / mem functions */
EXPORT_SYMBOL
(
strchr
);
EXPORT_SYMBOL
(
strrchr
);
EXPORT_SYMBOL
(
memset
);
EXPORT_SYMBOL
(
memcpy
);
EXPORT_SYMBOL
(
memmove
);
EXPORT_SYMBOL
(
memchr
);
EXPORT_SYMBOL
(
__memzero
);
EXPORT_SYMBOL
(
mmioset
);
EXPORT_SYMBOL
(
mmiocpy
);
#ifdef CONFIG_MMU
EXPORT_SYMBOL
(
copy_page
);
EXPORT_SYMBOL
(
arm_copy_from_user
);
EXPORT_SYMBOL
(
arm_copy_to_user
);
EXPORT_SYMBOL
(
arm_clear_user
);
EXPORT_SYMBOL
(
__get_user_1
);
EXPORT_SYMBOL
(
__get_user_2
);
EXPORT_SYMBOL
(
__get_user_4
);
EXPORT_SYMBOL
(
__get_user_8
);
#ifdef __ARMEB__
EXPORT_SYMBOL
(
__get_user_64t_1
);
EXPORT_SYMBOL
(
__get_user_64t_2
);
EXPORT_SYMBOL
(
__get_user_64t_4
);
EXPORT_SYMBOL
(
__get_user_32t_8
);
#endif
EXPORT_SYMBOL
(
__put_user_1
);
EXPORT_SYMBOL
(
__put_user_2
);
EXPORT_SYMBOL
(
__put_user_4
);
EXPORT_SYMBOL
(
__put_user_8
);
#endif
/* gcc lib functions */
EXPORT_SYMBOL
(
__ashldi3
);
EXPORT_SYMBOL
(
__ashrdi3
);
EXPORT_SYMBOL
(
__divsi3
);
EXPORT_SYMBOL
(
__lshrdi3
);
EXPORT_SYMBOL
(
__modsi3
);
EXPORT_SYMBOL
(
__muldi3
);
EXPORT_SYMBOL
(
__ucmpdi2
);
EXPORT_SYMBOL
(
__udivsi3
);
EXPORT_SYMBOL
(
__umodsi3
);
EXPORT_SYMBOL
(
__do_div64
);
EXPORT_SYMBOL
(
__bswapsi2
);
EXPORT_SYMBOL
(
__bswapdi2
);
#ifdef CONFIG_AEABI
EXPORT_SYMBOL
(
__aeabi_idiv
);
EXPORT_SYMBOL
(
__aeabi_idivmod
);
EXPORT_SYMBOL
(
__aeabi_lasr
);
EXPORT_SYMBOL
(
__aeabi_llsl
);
EXPORT_SYMBOL
(
__aeabi_llsr
);
EXPORT_SYMBOL
(
__aeabi_lmul
);
EXPORT_SYMBOL
(
__aeabi_uidiv
);
EXPORT_SYMBOL
(
__aeabi_uidivmod
);
EXPORT_SYMBOL
(
__aeabi_ulcmp
);
#endif
/* bitops */
EXPORT_SYMBOL
(
_set_bit
);
EXPORT_SYMBOL
(
_test_and_set_bit
);
EXPORT_SYMBOL
(
_clear_bit
);
EXPORT_SYMBOL
(
_test_and_clear_bit
);
EXPORT_SYMBOL
(
_change_bit
);
EXPORT_SYMBOL
(
_test_and_change_bit
);
EXPORT_SYMBOL
(
_find_first_zero_bit_le
);
EXPORT_SYMBOL
(
_find_next_zero_bit_le
);
EXPORT_SYMBOL
(
_find_first_bit_le
);
EXPORT_SYMBOL
(
_find_next_bit_le
);
#ifdef __ARMEB__
EXPORT_SYMBOL
(
_find_first_zero_bit_be
);
EXPORT_SYMBOL
(
_find_next_zero_bit_be
);
EXPORT_SYMBOL
(
_find_first_bit_be
);
EXPORT_SYMBOL
(
_find_next_bit_be
);
#endif
#ifdef CONFIG_FUNCTION_TRACER
#ifdef CONFIG_OLD_MCOUNT
EXPORT_SYMBOL
(
mcount
);
#endif
EXPORT_SYMBOL
(
__gnu_mcount_nc
);
#endif
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
EXPORT_SYMBOL
(
__pv_phys_pfn_offset
);
EXPORT_SYMBOL
(
__pv_offset
);
#endif
#ifdef CONFIG_HAVE_ARM_SMCCC
EXPORT_SYMBOL
(
arm_smccc_smc
);
EXPORT_SYMBOL
(
arm_smccc_hvc
);
#endif
arch/arm/kernel/entry-ftrace.S
View file @
4dd1837d
...
...
@@ -7,6 +7,7 @@
#include <asm/assembler.h>
#include <asm/ftrace.h>
#include <asm/unwind.h>
#include <asm/export.h>
#include "entry-header.S"
...
...
@@ -153,6 +154,7 @@ ENTRY(mcount)
__mcount
_old
#endif
ENDPROC
(
mcount
)
EXPORT_SYMBOL
(
mcount
)
#ifdef CONFIG_DYNAMIC_FTRACE
ENTRY
(
ftrace_caller_old
)
...
...
@@ -205,6 +207,7 @@ UNWIND(.fnstart)
#endif
UNWIND
(.
fnend
)
ENDPROC
(
__gnu_mcount_nc
)
EXPORT_SYMBOL
(
__gnu_mcount_nc
)
#ifdef CONFIG_DYNAMIC_FTRACE
ENTRY
(
ftrace_caller
)
...
...
arch/arm/kernel/head.S
View file @
4dd1837d
...
...
@@ -22,6 +22,7 @@
#include <asm/memory.h>
#include <asm/thread_info.h>
#include <asm/pgtable.h>
#include <asm/export.h>
#if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_SEMIHOSTING)
#include CONFIG_DEBUG_LL_INCLUDE
...
...
@@ -727,6 +728,8 @@ __pv_phys_pfn_offset:
__pv_offset
:
.
quad
0
.
size
__pv_offset
,
.
-
__pv_offset
EXPORT_SYMBOL
(
__pv_phys_pfn_offset
)
EXPORT_SYMBOL
(
__pv_offset
)
#endif
#include "head-common.S"
arch/arm/kernel/smccc-call.S
View file @
4dd1837d
...
...
@@ -16,6 +16,7 @@
#include <asm/opcodes-sec.h>
#include <asm/opcodes-virt.h>
#include <asm/unwind.h>
#include <asm/export.h>
/
*
*
Wrap
c
macros
in
asm
macros
to
delay
expansion
until
after
the
...
...
@@ -51,6 +52,7 @@ UNWIND( .fnend)
ENTRY
(
arm_smccc_smc
)
SMCCC
SMCCC_SMC
ENDPROC
(
arm_smccc_smc
)
EXPORT_SYMBOL
(
arm_smccc_smc
)
/*
*
void
smccc_hvc
(
unsigned
long
a0
,
unsigned
long
a1
,
unsigned
long
a2
,
...
...
@@ -60,3 +62,4 @@ ENDPROC(arm_smccc_smc)
ENTRY
(
arm_smccc_hvc
)
SMCCC
SMCCC_HVC
ENDPROC
(
arm_smccc_hvc
)
EXPORT_SYMBOL
(
arm_smccc_hvc
)
arch/arm/lib/ashldi3.S
View file @
4dd1837d
...
...
@@ -28,6 +28,7 @@ Boston, MA 02110-1301, USA. */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
#ifdef __ARMEB__
#define al r1
...
...
@@ -52,3 +53,5 @@ ENTRY(__aeabi_llsl)
ENDPROC
(
__ashldi3
)
ENDPROC
(
__aeabi_llsl
)
EXPORT_SYMBOL
(
__ashldi3
)
EXPORT_SYMBOL
(
__aeabi_llsl
)
arch/arm/lib/ashrdi3.S
View file @
4dd1837d
...
...
@@ -28,6 +28,7 @@ Boston, MA 02110-1301, USA. */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
#ifdef __ARMEB__
#define al r1
...
...
@@ -52,3 +53,5 @@ ENTRY(__aeabi_lasr)
ENDPROC
(
__ashrdi3
)
ENDPROC
(
__aeabi_lasr
)
EXPORT_SYMBOL
(
__ashrdi3
)
EXPORT_SYMBOL
(
__aeabi_lasr
)
arch/arm/lib/bitops.h
View file @
4dd1837d
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
#if __LINUX_ARM_ARCH__ >= 6
.
macro
bitop
,
name
,
instr
...
...
@@ -25,6 +26,7 @@ UNWIND( .fnstart )
bx
lr
UNWIND
(
.
fnend
)
ENDPROC
(
\
name
)
EXPORT_SYMBOL
(
\
name
)
.
endm
.
macro
testop
,
name
,
instr
,
store
...
...
@@ -55,6 +57,7 @@ UNWIND( .fnstart )
2
:
bx
lr
UNWIND
(
.
fnend
)
ENDPROC
(
\
name
)
EXPORT_SYMBOL
(
\
name
)
.
endm
#else
.
macro
bitop
,
name
,
instr
...
...
@@ -74,6 +77,7 @@ UNWIND( .fnstart )
ret
lr
UNWIND
(
.
fnend
)
ENDPROC
(
\
name
)
EXPORT_SYMBOL
(
\
name
)
.
endm
/**
...
...
@@ -102,5 +106,6 @@ UNWIND( .fnstart )
ret
lr
UNWIND
(
.
fnend
)
ENDPROC
(
\
name
)
EXPORT_SYMBOL
(
\
name
)
.
endm
#endif
arch/arm/lib/bswapsdi2.S
View file @
4dd1837d
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
#if __LINUX_ARM_ARCH__ >= 6
ENTRY
(
__bswapsi2
)
...
...
@@ -35,3 +36,5 @@ ENTRY(__bswapdi2)
ret
lr
ENDPROC
(
__bswapdi2
)
#endif
EXPORT_SYMBOL
(
__bswapsi2
)
EXPORT_SYMBOL
(
__bswapdi2
)
arch/arm/lib/clear_user.S
View file @
4dd1837d
...
...
@@ -10,6 +10,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
.
text
...
...
@@ -50,6 +51,9 @@ USER( strnebt r2, [r0])
UNWIND
(.
fnend
)
ENDPROC
(
arm_clear_user
)
ENDPROC
(
__clear_user_std
)
#ifndef CONFIG_UACCESS_WITH_MEMCPY
EXPORT_SYMBOL
(
arm_clear_user
)
#endif
.
pushsection
.
text
.
fixup
,
"ax"
.
align
0
...
...
arch/arm/lib/copy_from_user.S
View file @
4dd1837d
...
...
@@ -13,6 +13,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
/*
*
Prototype
:
...
...
@@ -94,6 +95,7 @@ ENTRY(arm_copy_from_user)
#include "copy_template.S"
ENDPROC
(
arm_copy_from_user
)
EXPORT_SYMBOL
(
arm_copy_from_user
)
.
pushsection
.
fixup
,
"ax"
.
align
0
...
...
arch/arm/lib/copy_page.S
View file @
4dd1837d
...
...
@@ -13,6 +13,7 @@
#include <asm/assembler.h>
#include <asm/asm-offsets.h>
#include <asm/cache.h>
#include <asm/export.h>
#define COPY_COUNT (PAGE_SZ / (2 * L1_CACHE_BYTES) PLD( -1 ))
...
...
@@ -45,3 +46,4 @@ ENTRY(copy_page)
PLD
(
beq
2
b
)
ldmfd
sp
!,
{
r4
,
pc
}
@
3
ENDPROC
(
copy_page
)
EXPORT_SYMBOL
(
copy_page
)
arch/arm/lib/copy_to_user.S
View file @
4dd1837d
...
...
@@ -13,6 +13,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
/*
*
Prototype
:
...
...
@@ -99,6 +100,9 @@ WEAK(arm_copy_to_user)
ENDPROC
(
arm_copy_to_user
)
ENDPROC
(
__copy_to_user_std
)
#ifndef CONFIG_UACCESS_WITH_MEMCPY
EXPORT_SYMBOL
(
arm_copy_to_user
)
#endif
.
pushsection
.
text
.
fixup
,
"ax"
.
align
0
...
...
arch/arm/lib/csumipv6.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
text
...
...
@@ -30,4 +31,4 @@ ENTRY(__csum_ipv6_magic)
adcs
r0
,
r0
,
#
0
ldmfd
sp
!,
{
pc
}
ENDPROC
(
__csum_ipv6_magic
)
EXPORT_SYMBOL
(
__csum_ipv6_magic
)
arch/arm/lib/csumpartial.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
text
...
...
@@ -140,3 +141,4 @@ ENTRY(csum_partial)
bne
4
b
b
.
Lless4
ENDPROC
(
csum_partial
)
EXPORT_SYMBOL
(
csum_partial
)
arch/arm/lib/csumpartialcopy.S
View file @
4dd1837d
...
...
@@ -49,5 +49,6 @@
#define FN_ENTRY ENTRY(csum_partial_copy_nocheck)
#define FN_EXIT ENDPROC(csum_partial_copy_nocheck)
#define FN_EXPORT EXPORT_SYMBOL(csum_partial_copy_nocheck)
#include "csumpartialcopygeneric.S"
arch/arm/lib/csumpartialcopygeneric.S
View file @
4dd1837d
...
...
@@ -8,6 +8,7 @@
*
published
by
the
Free
Software
Foundation
.
*/
#include <asm/assembler.h>
#include <asm/export.h>
/*
*
unsigned
int
...
...
@@ -331,3 +332,4 @@ FN_ENTRY
mov
r5
,
r4
,
get_byte_1
b
.
Lexit
FN_EXIT
FN_EXPORT
arch/arm/lib/csumpartialcopyuser.S
View file @
4dd1837d
...
...
@@ -73,6 +73,7 @@
#define FN_ENTRY ENTRY(csum_partial_copy_from_user)
#define FN_EXIT ENDPROC(csum_partial_copy_from_user)
#define FN_EXPORT EXPORT_SYMBOL(csum_partial_copy_from_user)
#include "csumpartialcopygeneric.S"
...
...
arch/arm/lib/delay.c
View file @
4dd1837d
...
...
@@ -24,6 +24,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/export.h>
#include <linux/timex.h>
/*
...
...
@@ -34,6 +35,7 @@ struct arm_delay_ops arm_delay_ops = {
.
const_udelay
=
__loop_const_udelay
,
.
udelay
=
__loop_udelay
,
};
EXPORT_SYMBOL
(
arm_delay_ops
);
static
const
struct
delay_timer
*
delay_timer
;
static
bool
delay_calibrated
;
...
...
arch/arm/lib/div64.S
View file @
4dd1837d
...
...
@@ -15,6 +15,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
#ifdef __ARMEB__
#define xh r0
...
...
@@ -210,3 +211,4 @@ Ldiv0_64:
UNWIND
(.
fnend
)
ENDPROC
(
__do_div64
)
EXPORT_SYMBOL
(
__do_div64
)
arch/arm/lib/findbit.S
View file @
4dd1837d
...
...
@@ -15,6 +15,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
text
/*
...
...
@@ -37,6 +38,7 @@ ENTRY(_find_first_zero_bit_le)
3
:
mov
r0
,
r1
@
no
free
bits
ret
lr
ENDPROC
(
_find_first_zero_bit_le
)
EXPORT_SYMBOL
(
_find_first_zero_bit_le
)
/*
*
Purpose
:
Find
next
'zero'
bit
...
...
@@ -57,6 +59,7 @@ ENTRY(_find_next_zero_bit_le)
add
r2
,
r2
,
#
1
@
align
bit
pointer
b
2
b
@
loop
for
next
bit
ENDPROC
(
_find_next_zero_bit_le
)
EXPORT_SYMBOL
(
_find_next_zero_bit_le
)
/*
*
Purpose
:
Find
a
'one'
bit
...
...
@@ -78,6 +81,7 @@ ENTRY(_find_first_bit_le)
3
:
mov
r0
,
r1
@
no
free
bits
ret
lr
ENDPROC
(
_find_first_bit_le
)
EXPORT_SYMBOL
(
_find_first_bit_le
)
/*
*
Purpose
:
Find
next
'one'
bit
...
...
@@ -97,6 +101,7 @@ ENTRY(_find_next_bit_le)
add
r2
,
r2
,
#
1
@
align
bit
pointer
b
2
b
@
loop
for
next
bit
ENDPROC
(
_find_next_bit_le
)
EXPORT_SYMBOL
(
_find_next_bit_le
)
#ifdef __ARMEB__
...
...
@@ -116,6 +121,7 @@ ENTRY(_find_first_zero_bit_be)
3
:
mov
r0
,
r1
@
no
free
bits
ret
lr
ENDPROC
(
_find_first_zero_bit_be
)
EXPORT_SYMBOL
(
_find_first_zero_bit_be
)
ENTRY
(
_find_next_zero_bit_be
)
teq
r1
,
#
0
...
...
@@ -133,6 +139,7 @@ ENTRY(_find_next_zero_bit_be)
add
r2
,
r2
,
#
1
@
align
bit
pointer
b
2
b
@
loop
for
next
bit
ENDPROC
(
_find_next_zero_bit_be
)
EXPORT_SYMBOL
(
_find_next_zero_bit_be
)
ENTRY
(
_find_first_bit_be
)
teq
r1
,
#
0
...
...
@@ -150,6 +157,7 @@ ENTRY(_find_first_bit_be)
3
:
mov
r0
,
r1
@
no
free
bits
ret
lr
ENDPROC
(
_find_first_bit_be
)
EXPORT_SYMBOL
(
_find_first_bit_be
)
ENTRY
(
_find_next_bit_be
)
teq
r1
,
#
0
...
...
@@ -166,6 +174,7 @@ ENTRY(_find_next_bit_be)
add
r2
,
r2
,
#
1
@
align
bit
pointer
b
2
b
@
loop
for
next
bit
ENDPROC
(
_find_next_bit_be
)
EXPORT_SYMBOL
(
_find_next_bit_be
)
#endif
...
...
arch/arm/lib/getuser.S
View file @
4dd1837d
...
...
@@ -31,6 +31,7 @@
#include <asm/assembler.h>
#include <asm/errno.h>
#include <asm/domain.h>
#include <asm/export.h>
ENTRY
(
__get_user_1
)
check_uaccess
r0
,
1
,
r1
,
r2
,
__get_user_bad
...
...
@@ -38,6 +39,7 @@ ENTRY(__get_user_1)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__get_user_1
)
EXPORT_SYMBOL
(
__get_user_1
)
ENTRY
(
__get_user_2
)
check_uaccess
r0
,
2
,
r1
,
r2
,
__get_user_bad
...
...
@@ -58,6 +60,7 @@ rb .req r0
mov
r0
,
#
0
ret
lr
ENDPROC
(
__get_user_2
)
EXPORT_SYMBOL
(
__get_user_2
)
ENTRY
(
__get_user_4
)
check_uaccess
r0
,
4
,
r1
,
r2
,
__get_user_bad
...
...
@@ -65,6 +68,7 @@ ENTRY(__get_user_4)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__get_user_4
)
EXPORT_SYMBOL
(
__get_user_4
)
ENTRY
(
__get_user_8
)
check_uaccess
r0
,
8
,
r1
,
r2
,
__get_user_bad
...
...
@@ -78,6 +82,7 @@ ENTRY(__get_user_8)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__get_user_8
)
EXPORT_SYMBOL
(
__get_user_8
)
#ifdef __ARMEB__
ENTRY
(
__get_user_32t_8
)
...
...
@@ -91,6 +96,7 @@ ENTRY(__get_user_32t_8)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__get_user_32t_8
)
EXPORT_SYMBOL
(
__get_user_32t_8
)
ENTRY
(
__get_user_64t_1
)
check_uaccess
r0
,
1
,
r1
,
r2
,
__get_user_bad8
...
...
@@ -98,6 +104,7 @@ ENTRY(__get_user_64t_1)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__get_user_64t_1
)
EXPORT_SYMBOL
(
__get_user_64t_1
)
ENTRY
(
__get_user_64t_2
)
check_uaccess
r0
,
2
,
r1
,
r2
,
__get_user_bad8
...
...
@@ -114,6 +121,7 @@ rb .req r0
mov
r0
,
#
0
ret
lr
ENDPROC
(
__get_user_64t_2
)
EXPORT_SYMBOL
(
__get_user_64t_2
)
ENTRY
(
__get_user_64t_4
)
check_uaccess
r0
,
4
,
r1
,
r2
,
__get_user_bad8
...
...
@@ -121,6 +129,7 @@ ENTRY(__get_user_64t_4)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__get_user_64t_4
)
EXPORT_SYMBOL
(
__get_user_64t_4
)
#endif
__get_user_bad8
:
...
...
arch/arm/lib/io-readsb.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
Linsb_align
:
rsb
ip
,
ip
,
#
4
cmp
ip
,
r2
...
...
@@ -121,3 +122,4 @@ ENTRY(__raw_readsb)
ldmfd
sp
!,
{
r4
-
r6
,
pc
}
ENDPROC
(
__raw_readsb
)
EXPORT_SYMBOL
(
__raw_readsb
)
arch/arm/lib/io-readsl.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
ENTRY
(
__raw_readsl
)
teq
r2
,
#
0
@
do
we
have
to
check
for
the
zero
len
?
...
...
@@ -77,3 +78,4 @@ ENTRY(__raw_readsl)
strb
r3
,
[
r1
,
#
0
]
ret
lr
ENDPROC
(
__raw_readsl
)
EXPORT_SYMBOL
(
__raw_readsl
)
arch/arm/lib/io-readsw-armv3.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
Linsw_bad_alignment
:
adr
r0
,
.
Linsw_bad_align_msg
...
...
@@ -103,4 +104,4 @@ ENTRY(__raw_readsw)
ldmfd
sp
!,
{
r4
,
r5
,
r6
,
pc
}
EXPORT_SYMBOL
(
__raw_readsw
)
arch/arm/lib/io-readsw-armv4.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
macro
pack
,
rd
,
hw1
,
hw2
#ifndef __ARMEB__
...
...
@@ -129,3 +130,4 @@ ENTRY(__raw_readsw)
strneb
ip
,
[
r1
]
ldmfd
sp
!,
{
r4
,
pc
}
ENDPROC
(
__raw_readsw
)
EXPORT_SYMBOL
(
__raw_readsw
)
arch/arm/lib/io-writesb.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
macro
outword
,
rd
#ifndef __ARMEB__
...
...
@@ -92,3 +93,4 @@ ENTRY(__raw_writesb)
ldmfd
sp
!,
{
r4
,
r5
,
pc
}
ENDPROC
(
__raw_writesb
)
EXPORT_SYMBOL
(
__raw_writesb
)
arch/arm/lib/io-writesl.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
ENTRY
(
__raw_writesl
)
teq
r2
,
#
0
@
do
we
have
to
check
for
the
zero
len
?
...
...
@@ -65,3 +66,4 @@ ENTRY(__raw_writesl)
bne
6
b
ret
lr
ENDPROC
(
__raw_writesl
)
EXPORT_SYMBOL
(
__raw_writesl
)
arch/arm/lib/io-writesw-armv3.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
Loutsw_bad_alignment
:
adr
r0
,
.
Loutsw_bad_align_msg
...
...
@@ -124,3 +125,4 @@ ENTRY(__raw_writesw)
strne
ip
,
[
r0
]
ldmfd
sp
!,
{
r4
,
r5
,
r6
,
pc
}
EXPORT_SYMBOL
(
__raw_writesw
)
arch/arm/lib/io-writesw-armv4.S
View file @
4dd1837d
...
...
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
macro
outword
,
rd
#ifndef __ARMEB__
...
...
@@ -98,3 +99,4 @@ ENTRY(__raw_writesw)
strneh
ip
,
[
r0
]
ret
lr
ENDPROC
(
__raw_writesw
)
EXPORT_SYMBOL
(
__raw_writesw
)
arch/arm/lib/lib1funcs.S
View file @
4dd1837d
...
...
@@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA. */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
.
macro
ARM_DIV_BODY
dividend
,
divisor
,
result
,
curbit
...
...
@@ -238,6 +239,8 @@ UNWIND(.fnstart)
UNWIND
(.
fnend
)
ENDPROC
(
__udivsi3
)
ENDPROC
(
__aeabi_uidiv
)
EXPORT_SYMBOL
(
__udivsi3
)
EXPORT_SYMBOL
(
__aeabi_uidiv
)
ENTRY
(
__umodsi3
)
UNWIND
(.
fnstart
)
...
...
@@ -256,6 +259,7 @@ UNWIND(.fnstart)
UNWIND
(.
fnend
)
ENDPROC
(
__umodsi3
)
EXPORT_SYMBOL
(
__umodsi3
)
#ifdef CONFIG_ARM_PATCH_IDIV
.
align
3
...
...
@@ -303,6 +307,8 @@ UNWIND(.fnstart)
UNWIND
(.
fnend
)
ENDPROC
(
__divsi3
)
ENDPROC
(
__aeabi_idiv
)
EXPORT_SYMBOL
(
__divsi3
)
EXPORT_SYMBOL
(
__aeabi_idiv
)
ENTRY
(
__modsi3
)
UNWIND
(.
fnstart
)
...
...
@@ -327,6 +333,7 @@ UNWIND(.fnstart)
UNWIND
(.
fnend
)
ENDPROC
(
__modsi3
)
EXPORT_SYMBOL
(
__modsi3
)
#ifdef CONFIG_AEABI
...
...
@@ -343,6 +350,7 @@ UNWIND(.save {r0, r1, ip, lr} )
UNWIND
(.
fnend
)
ENDPROC
(
__aeabi_uidivmod
)
EXPORT_SYMBOL
(
__aeabi_uidivmod
)
ENTRY
(
__aeabi_idivmod
)
UNWIND
(.
fnstart
)
...
...
@@ -356,6 +364,7 @@ UNWIND(.save {r0, r1, ip, lr} )
UNWIND
(.
fnend
)
ENDPROC
(
__aeabi_idivmod
)
EXPORT_SYMBOL
(
__aeabi_idivmod
)
#endif
...
...
arch/arm/lib/lshrdi3.S
View file @
4dd1837d
...
...
@@ -28,6 +28,7 @@ Boston, MA 02110-1301, USA. */
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
#ifdef __ARMEB__
#define al r1
...
...
@@ -52,3 +53,5 @@ ENTRY(__aeabi_llsr)
ENDPROC
(
__lshrdi3
)
ENDPROC
(
__aeabi_llsr
)
EXPORT_SYMBOL
(
__lshrdi3
)
EXPORT_SYMBOL
(
__aeabi_llsr
)
arch/arm/lib/memchr.S
View file @
4dd1837d
...
...
@@ -11,6 +11,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
text
.
align
5
...
...
@@ -24,3 +25,4 @@ ENTRY(memchr)
2
:
movne
r0
,
#
0
ret
lr
ENDPROC
(
memchr
)
EXPORT_SYMBOL
(
memchr
)
arch/arm/lib/memcpy.S
View file @
4dd1837d
...
...
@@ -13,6 +13,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
#define LDR1W_SHIFT 0
#define STR1W_SHIFT 0
...
...
@@ -68,3 +69,5 @@ ENTRY(memcpy)
ENDPROC
(
memcpy
)
ENDPROC
(
mmiocpy
)
EXPORT_SYMBOL
(
memcpy
)
EXPORT_SYMBOL
(
mmiocpy
)
arch/arm/lib/memmove.S
View file @
4dd1837d
...
...
@@ -13,6 +13,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
.
text
...
...
@@ -225,3 +226,4 @@ ENTRY(memmove)
18
:
backward_copy_shift
push
=
24
pull
=
8
ENDPROC
(
memmove
)
EXPORT_SYMBOL
(
memmove
)
arch/arm/lib/memset.S
View file @
4dd1837d
...
...
@@ -12,6 +12,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
.
text
.
align
5
...
...
@@ -135,3 +136,5 @@ UNWIND( .fnstart )
UNWIND
(
.
fnend
)
ENDPROC
(
memset
)
ENDPROC
(
mmioset
)
EXPORT_SYMBOL
(
memset
)
EXPORT_SYMBOL
(
mmioset
)
arch/arm/lib/memzero.S
View file @
4dd1837d
...
...
@@ -10,6 +10,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/unwind.h>
#include <asm/export.h>
.
text
.
align
5
...
...
@@ -135,3 +136,4 @@ UNWIND( .fnstart )
ret
lr
@
1
UNWIND
(
.
fnend
)
ENDPROC
(
__memzero
)
EXPORT_SYMBOL
(
__memzero
)
arch/arm/lib/muldi3.S
View file @
4dd1837d
...
...
@@ -12,6 +12,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
#ifdef __ARMEB__
#define xh r0
...
...
@@ -46,3 +47,5 @@ ENTRY(__aeabi_lmul)
ENDPROC
(
__muldi3
)
ENDPROC
(
__aeabi_lmul
)
EXPORT_SYMBOL
(
__muldi3
)
EXPORT_SYMBOL
(
__aeabi_lmul
)
arch/arm/lib/putuser.S
View file @
4dd1837d
...
...
@@ -31,6 +31,7 @@
#include <asm/assembler.h>
#include <asm/errno.h>
#include <asm/domain.h>
#include <asm/export.h>
ENTRY
(
__put_user_1
)
check_uaccess
r0
,
1
,
r1
,
ip
,
__put_user_bad
...
...
@@ -38,6 +39,7 @@ ENTRY(__put_user_1)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__put_user_1
)
EXPORT_SYMBOL
(
__put_user_1
)
ENTRY
(
__put_user_2
)
check_uaccess
r0
,
2
,
r1
,
ip
,
__put_user_bad
...
...
@@ -62,6 +64,7 @@ ENTRY(__put_user_2)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__put_user_2
)
EXPORT_SYMBOL
(
__put_user_2
)
ENTRY
(
__put_user_4
)
check_uaccess
r0
,
4
,
r1
,
ip
,
__put_user_bad
...
...
@@ -69,6 +72,7 @@ ENTRY(__put_user_4)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__put_user_4
)
EXPORT_SYMBOL
(
__put_user_4
)
ENTRY
(
__put_user_8
)
check_uaccess
r0
,
8
,
r1
,
ip
,
__put_user_bad
...
...
@@ -82,6 +86,7 @@ ENTRY(__put_user_8)
mov
r0
,
#
0
ret
lr
ENDPROC
(
__put_user_8
)
EXPORT_SYMBOL
(
__put_user_8
)
__put_user_bad
:
mov
r0
,
#-
EFAULT
...
...
arch/arm/lib/strchr.S
View file @
4dd1837d
...
...
@@ -11,6 +11,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
text
.
align
5
...
...
@@ -25,3 +26,4 @@ ENTRY(strchr)
subeq
r0
,
r0
,
#
1
ret
lr
ENDPROC
(
strchr
)
EXPORT_SYMBOL
(
strchr
)
arch/arm/lib/strrchr.S
View file @
4dd1837d
...
...
@@ -11,6 +11,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
.
text
.
align
5
...
...
@@ -24,3 +25,4 @@ ENTRY(strrchr)
mov
r0
,
r3
ret
lr
ENDPROC
(
strrchr
)
EXPORT_SYMBOL
(
strrchr
)
arch/arm/lib/uaccess_with_memcpy.c
View file @
4dd1837d
...
...
@@ -19,6 +19,7 @@
#include <linux/gfp.h>
#include <linux/highmem.h>
#include <linux/hugetlb.h>
#include <linux/export.h>
#include <asm/current.h>
#include <asm/page.h>
...
...
@@ -156,6 +157,7 @@ arm_copy_to_user(void __user *to, const void *from, unsigned long n)
}
return
n
;
}
EXPORT_SYMBOL
(
arm_copy_to_user
);
static
unsigned
long
noinline
__clear_user_memset
(
void
__user
*
addr
,
unsigned
long
n
)
...
...
@@ -213,6 +215,7 @@ unsigned long arm_clear_user(void __user *addr, unsigned long n)
}
return
n
;
}
EXPORT_SYMBOL
(
arm_clear_user
);
#if 0
...
...
arch/arm/lib/ucmpdi2.S
View file @
4dd1837d
...
...
@@ -12,6 +12,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
#ifdef __ARMEB__
#define xh r0
...
...
@@ -35,6 +36,7 @@ ENTRY(__ucmpdi2)
ret
lr
ENDPROC
(
__ucmpdi2
)
EXPORT_SYMBOL
(
__ucmpdi2
)
#ifdef CONFIG_AEABI
...
...
@@ -48,6 +50,7 @@ ENTRY(__aeabi_ulcmp)
ret
lr
ENDPROC
(
__aeabi_ulcmp
)
EXPORT_SYMBOL
(
__aeabi_ulcmp
)
#endif
arch/arm/mach-imx/Makefile
View file @
4dd1837d
...
...
@@ -32,7 +32,6 @@ endif
ifdef
CONFIG_SND_IMX_SOC
obj-y
+=
ssi-fiq.o
obj-y
+=
ssi-fiq-ksym.o
endif
# i.MX1 based machines
...
...
arch/arm/mach-imx/ssi-fiq-ksym.c
deleted
100644 → 0
View file @
711f5df7
/*
* Exported ksyms for the SSI FIQ handler
*
* Copyright (C) 2009, Sascha Hauer <s.hauer@pengutronix.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/module.h>
#include <linux/platform_data/asoc-imx-ssi.h>
EXPORT_SYMBOL
(
imx_ssi_fiq_tx_buffer
);
EXPORT_SYMBOL
(
imx_ssi_fiq_rx_buffer
);
EXPORT_SYMBOL
(
imx_ssi_fiq_start
);
EXPORT_SYMBOL
(
imx_ssi_fiq_end
);
EXPORT_SYMBOL
(
imx_ssi_fiq_base
);
arch/arm/mach-imx/ssi-fiq.S
View file @
4dd1837d
...
...
@@ -8,6 +8,7 @@
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/export.h>
/*
*
r8
=
bit
0
-
15
:
tx
offset
,
bit
16
-
31
:
tx
buffer
size
...
...
@@ -144,4 +145,8 @@ imx_ssi_fiq_tx_buffer:
.
word
0x0
.
L_imx_ssi_fiq_end
:
imx_ssi_fiq_end
:
EXPORT_SYMBOL
(
imx_ssi_fiq_tx_buffer
)
EXPORT_SYMBOL
(
imx_ssi_fiq_rx_buffer
)
EXPORT_SYMBOL
(
imx_ssi_fiq_start
)
EXPORT_SYMBOL
(
imx_ssi_fiq_end
)
EXPORT_SYMBOL
(
imx_ssi_fiq_base
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment