Hi Maciej, On 3/12/21 6:05 PM, Maciej W. Rozycki wrote: > On Fri, 12 Mar 2021, Philippe Mathieu-Daudé wrote: > >>>>> Is there any way we can do this with a distro that isn't Gentoo >>>>> so that we can get a container build that is fast enough to be >>>>> useful for CI ? >> >> Using the Debian cross image I get: >> >> /home/phil/source/qemu/tests/docker/docker.py --engine auto cc --cc >> mips64el-linux-gnuabi64-gcc -i qemu/debian-mips64el-cross -s >> /home/phil/source/qemu -- -Wall -Werror -O0 -g -fno-strict-aliasing >> -mabi=n32 -march=r5900 >> /home/phil/source/qemu/tests/tcg/mips/test-r5900-dmult.c -o >> test-r5900-dmult -static >> cc1: error: unsupported combination: -march=r5900 -mhard-float >> -mdouble-float >> >> No clue what is setting '-mhard-float -mdouble-float' yet. > > The R5900 has an FPU that only supports the single floating-point format. > It's also not an IEEE 754 format. The Linux kernel ABI does support the > double and also the single floating-point format, both compliant with IEEE > 754. > > In the absence of a suitable FPU emulation code included with the kernel > will handle the missing instructions (you can use the `nofpu' kernel > parameter to force that in the presence of an FPU too). Beware however > that a recent change to the Linux kernel made FPU emulation code optional > to suit some deeply embedded applications known never to use FPU machine > instructions. > > NB the presence of emulation is always required for MIPS ISA compliance > if FPU machine instructions are ever to be used in a given application, > because operations are allowed to trap regardless and rely on emulation. > > I don't know what you are trying to achieve,
The previous maintainer let the QEMU MIPS codebase with the R5900 code unreachable. I'm trying to see if I can get a closure on Fredrik work before removing it, because there is no point in maintaining unreachable code. QEMU uses Docker images of distributions to cross-compile its tests. Currently all Linux cross-tests are built using Debian based images. Daniel asked me to see if I can use our current Debian based image to build the r5900 tests, instead of adding yet another one (based on Gentoo). > but your two options to > choose from are: > > 1. Build for the soft-float ABI (`-msoft-float') where any FP calculations > are compiled such as to be made by the CPU using integer arithmetic. With the Debian toolchain I get: /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory #include <bits/libc-header-start.h> ^~~~~~~~~~~~~~~~~~~~~~~~~~ > 2. Build for a generic MIPS ISA, for the R5900/n32 that would be MIPS III > (`-march=mips3'), and rely on the kernel FPU emulation. Shouldn't -march=r5900 imply -march=mips3? > Note that some > integer MIPS III operations are missing too from the R5900 and have to > be emulated by the kernel for MIPS/Linux n32 psABI compliance (an > implementation can be pinched from an old libgcc version that was still > under GNU GPLv2 or another algorithm reused, e.g. my `__div64_32' piece > easily adapted). Regards, Phil.