Hi Barry.  GCC can be switched at runtime by supplying -march=* and/or
-mcpu=* flags to the compiler, just as you have done below.  The
'--with-arch=*' lines you see below set what GCC compiles to by
default.

Does your chip have a FPU?  If not, it's probably the
--with-fpu=vfpv3-d16 line that's causing you trouble.  Give:
 gcc -march=armv5te -mfloat-abi=soft -marm

a try and see if that fixes the problem.

-- Michael

On Thu, Mar 24, 2011 at 2:57 PM, Barry Song <[email protected]> wrote:
> Hi All,
> After downloading linaro toolchain by apt-get in ubuntu, I compiled
> the uboot for ARM1136 SoC with -march=armv5 option. And it can compile
> successfully. Then I let the uboot run on target boards and system
> failed due to "undefined instructions". Checked linaro toolchain
> options, it is:
>
> #arm-linux-gnueabi-gcc -v
> Using built-in specs.
> COLLECT_GCC=arm-linux-gnueabi-gcc
> COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabi/4.5.2/lto-wrapper
> Target: arm-linux-gnueabi
> Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
> 4.5.2-5ubuntu2~ppa1'
> --with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs
> --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
> --program-suffix=-4.5 --enable-shared --enable-multiarch
> --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib
> --without-included-gettext --enable-threads=posix
> --with-gxx-include-dir=/usr/arm-linux-gnueabi/include/c++/4.5.2
> --libdir=/usr/lib --enable-nls --enable-clocale=gnu
> --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin
> --enable-gold --enable-ld=default --with-plugin-ld=ld.gold
> --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv7-a
> --with-float=softfp --with-fpu=vfpv3-d16 --with-mode=thumb
> --disable-werror --enable-checking=release
> --program-prefix=arm-linux-gnueabi-
> --includedir=/usr/arm-linux-gnueabi/include --build=x86_64-linux-gnu
> --host=x86_64-linux-gnu --target=arm-linux-gnueabi
> --with-headers=/usr/arm-linux-gnueabi/include
> --with-libs=/usr/arm-linux-gnueabi/lib
> Thread model: posix
> gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-5ubuntu2~ppa1)
>
> The imporant options are "--with-arch=armv7-a --with-float=softfp
> --with-fpu=vfpv3-d16". I just want to ask whether these options stop
> arm-linux-gnueabi-gcc to support old arch? If so, according to gcc
> documents at http://gcc.gnu.org/install/configure.html,
>
> "
>
> --with-cpu=cpu
> --with-cpu-32=cpu
> --with-cpu-64=cpu
>    Specify which cpu variant the compiler should generate code for by
> default. cpu will be used as the default value of the -mcpu= switch.
> This option is only supported on some targets, including ARM, i386,
> M68k, PowerPC, and SPARC. The --with-cpu-32 and --with-cpu-64 options
> specify separate default CPUs for 32-bit and 64-bit modes; these
> options are only supported for i386, x86-64 and PowerPC.
> --with-schedule=cpu
> --with-arch=cpu
> --with-arch-32=cpu
> --with-arch-64=cpu
> --with-tune=cpu
> --with-tune-32=cpu
> --with-tune-64=cpu
> --with-abi=abi
> --with-fpu=type
> --with-float=type
>    These configure options provide default values for the
> -mschedule=, -march=, -mtune=, -mabi=, and -mfpu= options and for
> -mhard-float or -msoft-float. As with --with-cpu, which switches will
> be accepted and acceptable values of the arguments depend on the
> target.
> "
>
> There are only default values for later compiling. Users should be
> able to swith to other values by setting other options. But why did
> arm-linux-gnueabi-gcc still build "undefined instructions" to arm1136
> with "arch=armv5"?  In fact arm1136 is armv6.
>
> Then i compiled a toolchain for linaro gcc-linaro-4.4-2011.02-0 codes
> by myself, the options are simple:
>
> #arm-none-linux-gnueabi-gcc -v
> Using built-in specs.
> Target: arm-none-linux-gnueabi
> Configured with: ../gcc-linaro-4.4-2011.02-0/configure
> --target=arm-none-linux-gnueabi
> --prefix=/home/vmuser/development/toolchain/build-toolchain/tools
> --enable-languages=c,c++ --disable-libgomp
> Thread model: posix
> gcc version 4.4.5 (Linaro GCC 4.4-2011.02-0)
>
> Then I compiled uboot by this toolchain again, the uboot can work.
> Then why can the toolchain compiled by myself support more arch? And
> what performance is lost in my compiling?
>
> Thanks
> Barry
>
> _______________________________________________
> linaro-toolchain mailing list
> [email protected]
> http://lists.linaro.org/mailman/listinfo/linaro-toolchain
>

_______________________________________________
linaro-toolchain mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to