xtensa: add __bswap{si,di}2 helpers
commit 034f4a7877c32a8efd6beee4d71ed14e424499a9 upstream.
gcc-13 may generate calls for __bswap{si,di}2. This breaks the kernel
build when optimization for size is selected. Add __bswap{si,di}2
helpers to fix that.
Cc: stable@vger.kernel.org
Fixes: 19c5699f9a
("xtensa: don't link with libgcc")
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
522bbbfcb6
commit
bd90ac0002
@ -56,6 +56,8 @@ EXPORT_SYMBOL(empty_zero_page);
|
|||||||
*/
|
*/
|
||||||
extern long long __ashrdi3(long long, int);
|
extern long long __ashrdi3(long long, int);
|
||||||
extern long long __ashldi3(long long, int);
|
extern long long __ashldi3(long long, int);
|
||||||
|
extern long long __bswapdi2(long long);
|
||||||
|
extern int __bswapsi2(int);
|
||||||
extern long long __lshrdi3(long long, int);
|
extern long long __lshrdi3(long long, int);
|
||||||
extern int __divsi3(int, int);
|
extern int __divsi3(int, int);
|
||||||
extern int __modsi3(int, int);
|
extern int __modsi3(int, int);
|
||||||
@ -66,6 +68,8 @@ extern unsigned long long __umulsidi3(unsigned int, unsigned int);
|
|||||||
|
|
||||||
EXPORT_SYMBOL(__ashldi3);
|
EXPORT_SYMBOL(__ashldi3);
|
||||||
EXPORT_SYMBOL(__ashrdi3);
|
EXPORT_SYMBOL(__ashrdi3);
|
||||||
|
EXPORT_SYMBOL(__bswapdi2);
|
||||||
|
EXPORT_SYMBOL(__bswapsi2);
|
||||||
EXPORT_SYMBOL(__lshrdi3);
|
EXPORT_SYMBOL(__lshrdi3);
|
||||||
EXPORT_SYMBOL(__divsi3);
|
EXPORT_SYMBOL(__divsi3);
|
||||||
EXPORT_SYMBOL(__modsi3);
|
EXPORT_SYMBOL(__modsi3);
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
lib-y += memcopy.o memset.o checksum.o \
|
lib-y += memcopy.o memset.o checksum.o \
|
||||||
ashldi3.o ashrdi3.o lshrdi3.o \
|
ashldi3.o ashrdi3.o bswapdi2.o bswapsi2.o lshrdi3.o \
|
||||||
divsi3.o udivsi3.o modsi3.o umodsi3.o mulsi3.o umulsidi3.o \
|
divsi3.o udivsi3.o modsi3.o umodsi3.o mulsi3.o umulsidi3.o \
|
||||||
usercopy.o strncpy_user.o strnlen_user.o
|
usercopy.o strncpy_user.o strnlen_user.o
|
||||||
lib-$(CONFIG_PCI) += pci-auto.o
|
lib-$(CONFIG_PCI) += pci-auto.o
|
||||||
|
21
arch/xtensa/lib/bswapdi2.S
Normal file
21
arch/xtensa/lib/bswapdi2.S
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0 */
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/asmmacro.h>
|
||||||
|
#include <asm/core.h>
|
||||||
|
|
||||||
|
ENTRY(__bswapdi2)
|
||||||
|
|
||||||
|
abi_entry_default
|
||||||
|
ssai 8
|
||||||
|
srli a4, a2, 16
|
||||||
|
src a4, a4, a2
|
||||||
|
src a4, a4, a4
|
||||||
|
src a4, a2, a4
|
||||||
|
srli a2, a3, 16
|
||||||
|
src a2, a2, a3
|
||||||
|
src a2, a2, a2
|
||||||
|
src a2, a3, a2
|
||||||
|
mov a3, a4
|
||||||
|
abi_ret_default
|
||||||
|
|
||||||
|
ENDPROC(__bswapdi2)
|
16
arch/xtensa/lib/bswapsi2.S
Normal file
16
arch/xtensa/lib/bswapsi2.S
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0 */
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/asmmacro.h>
|
||||||
|
#include <asm/core.h>
|
||||||
|
|
||||||
|
ENTRY(__bswapsi2)
|
||||||
|
|
||||||
|
abi_entry_default
|
||||||
|
ssai 8
|
||||||
|
srli a3, a2, 16
|
||||||
|
src a3, a3, a2
|
||||||
|
src a3, a3, a3
|
||||||
|
src a2, a2, a3
|
||||||
|
abi_ret_default
|
||||||
|
|
||||||
|
ENDPROC(__bswapsi2)
|
Loading…
Reference in New Issue
Block a user