configs/qemu_mips32r6: fix Linux kernel build with gcc 10.x
authorRomain Naour <romain.naour@gmail.com>
Sat, 25 Jul 2020 22:06:39 +0000 (00:06 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Wed, 5 Aug 2020 21:13:13 +0000 (23:13 +0200)
commit39a9a0117ddbe096c2c6ebdbc5855ca994ffcc12
tree7f1a5a98d23ee03f7ca1e7e5fd4dd33ad86ccbe9
parent5b9ffa6fa979ff72e69dcd917843099d264420c8
configs/qemu_mips32r6: fix Linux kernel build with gcc 10.x

From [1]:

"GCC 10 (PR 91233) won't silently allow registers that are not architecturally
available to be present in the clobber list anymore, resulting in build failure
for mips*r6 targets in form of:
...
.../sysdep.h:146:2: error: the register ‘lo’ cannot be clobbered in ‘asm’ for the current target
  146 |  __asm__ volatile (  \
      |  ^~~~~~~

This is because base R6 ISA doesn't define hi and lo registers w/o DSP extension.
This patch provides the alternative clobber list for r6 targets that won't include
those registers."

Since kernel 5.4 and mips support for generic vDSO [2], the kernel fail to build
for mips r6 cpus with gcc 10 for the same reason as glibc.

[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=020b2a97bb15f807c0482f0faee2184ed05bcad8
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=24640f233b466051ad3a5d2786d2951e43026c9d

Fixes:
https://gitlab.com/kubu93/buildroot/-/jobs/655618359
https://gitlab.com/kubu93/buildroot/-/jobs/655618360

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
board/qemu/mips32r6-malta/patches/linux/0001-mips-Do-not-include-hi-and-lo-in-clobber-list-for-R6.patch [new file with mode: 0644]
board/qemu/mips32r6el-malta/patches/linux/0001-mips-Do-not-include-hi-and-lo-in-clobber-list-for-R6.patch [new file with mode: 0644]
configs/qemu_mips32r6_malta_defconfig
configs/qemu_mips32r6el_malta_defconfig