Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1bb3bf62 authored by Yousong Zhou's avatar Yousong Zhou Committed by Ralf Baechle
Browse files

Revert "MIPS: UAPI: Fix unrecognized opcode WSBH/DSBH/DSHD when using MIPS16."

This reverts commit e0d8b2ec.

For at least GCC 4.8.3, adding nomips16 function attribute still cannot
prevent it from being inlined in mips16 context.  So revert it first in
preparation for a better workaround.

 [1] Inlining nomips16 function into mips16 function can result in
     undefined builtins, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55777



Signed-off-by: default avatarYousong Zhou <yszhou4tech@gmail.com>
Cc: Maciej W. Rozycki <macro@linux-mips.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/11240/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 049e6dde
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -16,13 +16,11 @@
#if (defined(__mips_isa_rev) && (__mips_isa_rev >= 2)) ||		\
    defined(_MIPS_ARCH_LOONGSON3A)

static inline __attribute__((nomips16)) __attribute_const__
		__u16 __arch_swab16(__u16 x)
static inline __attribute_const__ __u16 __arch_swab16(__u16 x)
{
	__asm__(
	"	.set	push			\n"
	"	.set	arch=mips32r2		\n"
	"	.set	nomips16		\n"
	"	wsbh	%0, %1			\n"
	"	.set	pop			\n"
	: "=r" (x)
@@ -32,13 +30,11 @@ static inline __attribute__((nomips16)) __attribute_const__
}
#define __arch_swab16 __arch_swab16

static inline __attribute__((nomips16)) __attribute_const__
		__u32 __arch_swab32(__u32 x)
static inline __attribute_const__ __u32 __arch_swab32(__u32 x)
{
	__asm__(
	"	.set	push			\n"
	"	.set	arch=mips32r2		\n"
	"	.set	nomips16		\n"
	"	wsbh	%0, %1			\n"
	"	rotr	%0, %0, 16		\n"
	"	.set	pop			\n"
@@ -54,13 +50,11 @@ static inline __attribute__((nomips16)) __attribute_const__
 * 64-bit kernel on r2 CPUs.
 */
#ifdef __mips64
static inline __attribute__((nomips16)) __attribute_const__
		__u64 __arch_swab64(__u64 x)
static inline __attribute_const__ __u64 __arch_swab64(__u64 x)
{
	__asm__(
	"	.set	push			\n"
	"	.set	arch=mips64r2		\n"
	"	.set	nomips16		\n"
	"	dsbh	%0, %1			\n"
	"	dshd	%0, %0			\n"
	"	.set	pop			\n"