Skip to content

Commit 19c5699

Browse files
committed
xtensa: don't link with libgcc
libgcc may be absent or may have different ABI than the kernel. Don't link with it. Drop declarations and export for helpers that are not implemented. Use generic versions of DI mode multiplication and comparisons. Drop register window spilling helper as it should never be used by the compiler-generated code. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
1 parent dbf4ed8 commit 19c5699

3 files changed

Lines changed: 4 additions & 19 deletions

File tree

arch/xtensa/Kconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ config XTENSA
2020
select DMA_REMAP if MMU
2121
select GENERIC_ATOMIC64
2222
select GENERIC_IRQ_SHOW
23+
select GENERIC_LIB_CMPDI2
24+
select GENERIC_LIB_MULDI3
25+
select GENERIC_LIB_UCMPDI2
2326
select GENERIC_PCI_IOMAP
2427
select GENERIC_SCHED_CLOCK
2528
select HAVE_ARCH_AUDITSYSCALL

arch/xtensa/Makefile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,9 @@ KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(vardirs) $(plfdirs))
5151

5252
KBUILD_DEFCONFIG := iss_defconfig
5353

54-
# Find libgcc.a
55-
56-
LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
57-
5854
head-y := arch/xtensa/kernel/head.o
5955

60-
libs-y += arch/xtensa/lib/ $(LIBGCC)
56+
libs-y += arch/xtensa/lib/
6157

6258
boot := arch/xtensa/boot
6359

arch/xtensa/kernel/xtensa_ksyms.c

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,32 +59,18 @@ extern long long __ashldi3(long long, int);
5959
extern long long __lshrdi3(long long, int);
6060
extern int __divsi3(int, int);
6161
extern int __modsi3(int, int);
62-
extern long long __muldi3(long long, long long);
6362
extern int __mulsi3(int, int);
6463
extern unsigned int __udivsi3(unsigned int, unsigned int);
6564
extern unsigned int __umodsi3(unsigned int, unsigned int);
66-
extern unsigned long long __umoddi3(unsigned long long, unsigned long long);
67-
extern unsigned long long __udivdi3(unsigned long long, unsigned long long);
68-
extern int __ucmpdi2(int, int);
6965

7066
EXPORT_SYMBOL(__ashldi3);
7167
EXPORT_SYMBOL(__ashrdi3);
7268
EXPORT_SYMBOL(__lshrdi3);
7369
EXPORT_SYMBOL(__divsi3);
7470
EXPORT_SYMBOL(__modsi3);
75-
EXPORT_SYMBOL(__muldi3);
7671
EXPORT_SYMBOL(__mulsi3);
7772
EXPORT_SYMBOL(__udivsi3);
7873
EXPORT_SYMBOL(__umodsi3);
79-
EXPORT_SYMBOL(__udivdi3);
80-
EXPORT_SYMBOL(__umoddi3);
81-
EXPORT_SYMBOL(__ucmpdi2);
82-
83-
void __xtensa_libgcc_window_spill(void)
84-
{
85-
BUG();
86-
}
87-
EXPORT_SYMBOL(__xtensa_libgcc_window_spill);
8874

8975
unsigned int __sync_fetch_and_and_4(volatile void *p, unsigned int v)
9076
{

0 commit comments

Comments
 (0)