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
