We met build error when using arm-linux-gnueabihf-gcc 3.7.3 for Huawei s40v200 kernel, which is 3.0.8, log is below.
HAVE issue: gcc-linaro-arm-linux-gnueabihf-4.7-2012.11-20121123_linux.tar.bz2 gcc-linaro-arm-linux-gnueabihf-4.7-2012.10-20121022_linux.tar.bz2 gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux.tar.bz2, with build flag *--with-float=softfp*
NO issue: arm-eabi-gcc 4.4.0, which comes from android package.
Any suggestion?
Thanks
make[1]: `include/generated/mach-types.h' is up to date. CALL scripts/checksyscalls.sh CHK include/generated/compile.h AS arch/arm/mach-godbox/hi_pm_sleep.o arch/arm/mach-godbox/hi_pm_sleep.S: Assembler messages: arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `mrs r10,FPEXC' arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r2' arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `mrs r2,FPSCR' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r2' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPSCR,r10' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r9' make[1]: *** [arch/arm/mach-godbox/hi_pm_sleep.o] Error 1 make: *** [arch/arm/mach-godbox] Error 2 make: *** Waiting for unfinished jobs....
On 10 December 2012 14:53, Zhangfei Gao zhangfei.gao@linaro.org wrote:
We met build error when using arm-linux-gnueabihf-gcc 3.7.3 for Huawei s40v200 kernel, which is 3.0.8, log is below.
HAVE issue: gcc-linaro-arm-linux-gnueabihf-4.7-2012.11-20121123_linux.tar.bz2 gcc-linaro-arm-linux-gnueabihf-4.7-2012.10-20121022_linux.tar.bz2 gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux.tar.bz2, with build flag --with-float=softfp
NO issue: arm-eabi-gcc 4.4.0, which comes from android package.
Any suggestion?
Thanks
make[1]: `include/generated/mach-types.h' is up to date. CALL scripts/checksyscalls.sh CHK include/generated/compile.h AS arch/arm/mach-godbox/hi_pm_sleep.o arch/arm/mach-godbox/hi_pm_sleep.S: Assembler messages: arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `mrs r10,FPEXC' arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r2' arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `mrs r2,FPSCR' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r2' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPSCR,r10' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r9' make[1]: *** [arch/arm/mach-godbox/hi_pm_sleep.o] Error 1 make: *** [arch/arm/mach-godbox] Error 2 make: *** Waiting for unfinished jobs....
Can you show me the complete command line for assembling arch/arm/mach-godbox/hi_pm_sleep.S into arch/arm/mach-godbox/hi_pm_sleep.o please? And also the output of gcc -v?
My guess is that you are building GCC yourself have specified --with-float=softfp, but not specified the actual floating point architecture with --with-fpu= on the GCC configure line. See the documentation for -mfpu= in the GCC manuals to see what values are valid here (again guessing but you probably want --with-fpu=vfpv3 or --with-fpu=neon - but I don't know what architecture you are actually compiling for).
Thanks,
Matt
-- Matthew Gretton-Dann Linaro Toolchain Working Group matthew.gretton-dann@linaro.org
On 11/12/12 19:39, Matthew Gretton-Dann wrote:
On 10 December 2012 14:53, Zhangfei Gao zhangfei.gao@linaro.org wrote:
We met build error when using arm-linux-gnueabihf-gcc 3.7.3 for Huawei s40v200 kernel, which is 3.0.8, log is below.
HAVE issue: gcc-linaro-arm-linux-gnueabihf-4.7-2012.11-20121123_linux.tar.bz2 gcc-linaro-arm-linux-gnueabihf-4.7-2012.10-20121022_linux.tar.bz2 gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux.tar.bz2, with build flag --with-float=softfp
NO issue: arm-eabi-gcc 4.4.0, which comes from android package.
Any suggestion?
Thanks
make[1]: `include/generated/mach-types.h' is up to date. CALL scripts/checksyscalls.sh CHK include/generated/compile.h AS arch/arm/mach-godbox/hi_pm_sleep.o arch/arm/mach-godbox/hi_pm_sleep.S: Assembler messages: arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `mrs r10,FPEXC' arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r2' arch/arm/mach-godbox/hi_pm_sleep.S:456: Error: selected processor does not support requested special purpose register -- `mrs r2,FPSCR' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r2' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPSCR,r10' arch/arm/mach-godbox/hi_pm_sleep.S:546: Error: selected processor does not support requested special purpose register -- `msr FPEXC,r9' make[1]: *** [arch/arm/mach-godbox/hi_pm_sleep.o] Error 1 make: *** [arch/arm/mach-godbox] Error 2 make: *** Waiting for unfinished jobs....
Can you show me the complete command line for assembling arch/arm/mach-godbox/hi_pm_sleep.S into arch/arm/mach-godbox/hi_pm_sleep.o please? And also the output of gcc -v?
My guess is that you are building GCC yourself have specified --with-float=softfp, but not specified the actual floating point architecture with --with-fpu= on the GCC configure line. See the documentation for -mfpu= in the GCC manuals to see what values are valid here (again guessing but you probably want --with-fpu=vfpv3 or --with-fpu=neon - but I don't know what architecture you are actually compiling for).
Hmm, building the kernel with floating-point enabled is probably a no-no! The kernel has to preserve the user-space floating point context as it isn't saved on kernel entry. IIRC, insns in the kernel that really must access the co-processors have to use generic instrucions (MCR/MRC/LDC/STC, etc).
However, you might get a more useful answer if you talked to the kernel folk.
R.
linaro-toolchain@lists.linaro.org