Skip to content

Commit 992fde7

Browse files
committed
ARCv3: update list of symbols exported from libgcc
Extend list of exported from libgcc symbols for ARCv3. This patch fixes build of XFS, BTRFS and some other modules for ARCv3 targets: ERROR: modpost: "__ucmpdi2" [fs/btrfs/btrfs.ko] undefined! ERROR: modpost: "__lshrdi3" [fs/btrfs/btrfs.ko] undefined! ERROR: modpost: "__ashldi3" [fs/btrfs/btrfs.ko] undefined! ERROR: modpost: "__ucmpdi2" [fs/xfs/xfs.ko] undefined! ERROR: modpost: "__lshrdi3" [fs/xfs/xfs.ko] undefined! This is an extension for commit 88b0c1c (ARCv3: HS5x libgcc lacks math emulation) Signed-off-by: Pavel Kozlov <pavel.kozlov@synopsys.com>
1 parent c2c7e9a commit 992fde7

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

arch/arc/kernel/arcksyms.c

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,44 +8,52 @@
88
#include <linux/module.h>
99

1010
/* libgcc functions, not part of kernel sources */
11-
extern void __ashldi3(void);
12-
extern void __ashrdi3(void);
11+
12+
#ifndef CONFIG_ISA_ARCV3
13+
/* Not required for ARCv3 */
1314
extern void __divsi3(void);
14-
extern void __divsf3(void);
15-
extern void __lshrdi3(void);
1615
extern void __modsi3(void);
17-
extern void __muldi3(void);
18-
extern void __ucmpdi2(void);
1916
extern void __udivsi3(void);
2017
extern void __umodsi3(void);
18+
19+
EXPORT_SYMBOL(__divsi3);
20+
EXPORT_SYMBOL(__modsi3);
21+
EXPORT_SYMBOL(__udivsi3);
22+
EXPORT_SYMBOL(__umodsi3);
23+
#endif
24+
25+
#ifndef CONFIG_64BIT
26+
/* Not required for 64-bit */
27+
extern void __ashldi3(void);
28+
extern void __ashrdi3(void);
29+
extern void __lshrdi3(void);
2130
extern void __cmpdi2(void);
31+
extern void __ucmpdi2(void);
32+
33+
EXPORT_SYMBOL(__ashldi3);
34+
EXPORT_SYMBOL(__ashrdi3);
35+
EXPORT_SYMBOL(__lshrdi3);
36+
EXPORT_SYMBOL(__cmpdi2);
37+
EXPORT_SYMBOL(__ucmpdi2);
38+
#endif
39+
40+
extern void __divsf3(void);
41+
extern void __muldi3(void);
2242
extern void __fixunsdfsi(void);
2343
extern void __muldf3(void);
2444
extern void __divdf3(void);
2545
extern void __floatunsidf(void);
2646
extern void __floatunsisf(void);
2747
extern void __udivdi3(void);
2848

29-
#ifndef CONFIG_ISA_ARCV3
30-
/* ARCv3 libgcc is primitive as of now */
31-
EXPORT_SYMBOL(__ashldi3);
32-
EXPORT_SYMBOL(__ashrdi3);
33-
EXPORT_SYMBOL(__divsi3);
3449
EXPORT_SYMBOL(__divsf3);
35-
EXPORT_SYMBOL(__lshrdi3);
36-
EXPORT_SYMBOL(__modsi3);
37-
EXPORT_SYMBOL(__ucmpdi2);
38-
EXPORT_SYMBOL(__udivsi3);
39-
EXPORT_SYMBOL(__umodsi3);
40-
EXPORT_SYMBOL(__cmpdi2);
50+
EXPORT_SYMBOL(__muldi3);
4151
EXPORT_SYMBOL(__fixunsdfsi);
4252
EXPORT_SYMBOL(__muldf3);
4353
EXPORT_SYMBOL(__divdf3);
4454
EXPORT_SYMBOL(__floatunsidf);
4555
EXPORT_SYMBOL(__floatunsisf);
4656
EXPORT_SYMBOL(__udivdi3);
47-
#endif
48-
EXPORT_SYMBOL(__muldi3);
4957

5058
/* ARC optimised assembler routines */
5159
#ifndef CONFIG_ARC_LACKS_ZOL

0 commit comments

Comments
 (0)