summaryrefslogtreecommitdiff
path: root/arch/xtensa/lib/bswapdi2.S
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2023-05-06 17:10:36 -0700
committerMax Filippov <jcmvbkbc@gmail.com>2023-05-12 09:44:12 -0700
commit034f4a7877c32a8efd6beee4d71ed14e424499a9 (patch)
treeeedd53678d79666df2fc9ca6975685910e598b0c /arch/xtensa/lib/bswapdi2.S
parent9c2cc74fb31ec76b8b118c97041a6a154a3ff219 (diff)
xtensa: add __bswap{si,di}2 helpers
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: 19c5699f9aff ("xtensa: don't link with libgcc") Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'arch/xtensa/lib/bswapdi2.S')
-rw-r--r--arch/xtensa/lib/bswapdi2.S21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/xtensa/lib/bswapdi2.S b/arch/xtensa/lib/bswapdi2.S
new file mode 100644
index 000000000000..d8e52e05eba6
--- /dev/null
+++ b/arch/xtensa/lib/bswapdi2.S
@@ -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)