mirror of
https://github.com/torvalds/linux.git
synced 2025-11-09 13:10:19 +02:00
Some GCC versions (e.g. 4.8.3) can incorrectly inline a function with
MIPS32 instructions into another function with MIPS16 code [1], causing
the assembler to genereate incorrect binary code or fail right away
complaining about unrecognized opcode.
In the case of __arch_swab{16,32}, when inlined by the compiler with
flags `-mips32r2 -mips16 -Os', the assembler can fail with the following
error.
{standard input}:79: Error: unrecognized opcode `wsbh $2,$2'
For performance concerns and to workaround the issue already existing in
older compilers, just ignore these 2 functions when compiling with
mips16 enabled.
[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: Yousong 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/11241/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
|
||
|---|---|---|
| .. | ||
| bitfield.h | ||
| bitsperlong.h | ||
| break.h | ||
| byteorder.h | ||
| cachectl.h | ||
| errno.h | ||
| fcntl.h | ||
| hwcap.h | ||
| inst.h | ||
| ioctl.h | ||
| ioctls.h | ||
| Kbuild | ||
| kvm.h | ||
| kvm_para.h | ||
| mman.h | ||
| msgbuf.h | ||
| param.h | ||
| poll.h | ||
| posix_types.h | ||
| ptrace.h | ||
| reg.h | ||
| resource.h | ||
| sembuf.h | ||
| setup.h | ||
| sgidefs.h | ||
| shmbuf.h | ||
| sigcontext.h | ||
| siginfo.h | ||
| signal.h | ||
| socket.h | ||
| sockios.h | ||
| stat.h | ||
| statfs.h | ||
| swab.h | ||
| sysmips.h | ||
| termbits.h | ||
| termios.h | ||
| types.h | ||
| ucontext.h | ||
| unistd.h | ||