Hi, I am trying to build gcc-4.2.2 for this CPU and am surprised or badly *interpreting* that `arm1026ejs' code is maybe faster than `arm926ejs'? I tried to find this in the Documentation and by Google but no luck.
$ cat /proc/cpuinfo Processor : ARM926EJ-Sid(wb) rev 5 (v5l) BogoMIPS : 99.73 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 32768 I assoc : 4 I line length : 32 I sets : 256 D size : 32768 D assoc : 4 D line length : 32 D sets : 256 Hardware : Oxsemi NAS Revision : 0000 Serial : 0000000000000000 $ CFLAGS="-mcpu=arm926ejs -msoft-float -fomit-frame-pointer -pipe -O2" \ ../configure --with-cpu=arm926ej-s --with-float=soft \ --enable-languages=c,c++,objc --disable-nls --with-newlib $ make bootstrap-lean ... build/genautomata ../../gcc/config/arm/arm.md \ insn-conditions.md > tmp-automata.c Automaton `arm' 444 NDFA states, 1168 NDFA arcs 444 DFA states, 1168 DFA arcs 116 minimal DFA states, 482 minimal DFA arcs 123 all insns 16 insn equivalence classes 0 locked states 468 transition comb vector els, 1856 trans table els: use comb vect 1856 min delay table els, compression factor 1 Automaton `arm926ejs' 17 NDFA states, 47 NDFA arcs 17 DFA states, 47 DFA arcs 11 minimal DFA states, 35 minimal DFA arcs 123 all insns 9 insn equivalence classes 0 locked states 39 transition comb vector els, 99 trans table els: use comb vect 99 min delay table els, compression factor 2 Automaton `arm1020e' 3185 NDFA states, 9075 NDFA arcs 3185 DFA states, 9075 DFA arcs 451 minimal DFA states, 2740 minimal DFA arcs 123 all insns 17 insn equivalence classes 0 locked states 2771 transition comb vector els, 7667 trans table els: use comb vect 7667 min delay table els, compression factor 1 Automaton `arm1026ejs' 10 NDFA states, 27 NDFA arcs 10 DFA states, 27 DFA arcs 6 minimal DFA states, 19 minimal DFA arcs 123 all insns 7 insn equivalence classes 0 locked states 18 transition comb vector els, 42 trans table els: use simple vect 42 min delay table els, compression factor 2 Automaton `arm1136jfs' 19 NDFA states, 53 NDFA arcs 19 DFA states, 53 DFA arcs 9 minimal DFA states, 33 minimal DFA arcs 123 all insns 8 insn equivalence classes 0 locked states 35 transition comb vector els, 72 trans table els: use simple vect 72 min delay table els, compression factor 2 Automaton `armfp' 70 NDFA states, 147 NDFA arcs 70 DFA states, 147 DFA arcs 70 minimal DFA states, 147 minimal DFA arcs 123 all insns 9 insn equivalence classes 0 locked states 150 transition comb vector els, 630 trans table els: use comb vect 630 min delay table els, compression factor 1 Automaton `vfp11' 198 NDFA states, 631 NDFA arcs 198 DFA states, 631 DFA arcs 198 minimal DFA states, 631 minimal DFA arcs 123 all insns 8 insn equivalence classes 0 locked states 749 transition comb vector els, 1584 trans table els: use simple vect 1584 min delay table els, compression factor 1 4331 all allocated states, 9599 all allocated arcs 4316 all allocated alternative states 4230 all transition comb vector els, 11950 all trans table els 11950 all min delay table els 0 all locked states transformation: 0.010000, building DFA: 5.850000 DFA minimization: 0.830000, making insn equivalence: 0.040000 all automaton generation: 7.650000, output: 1.990000 ... objext='.o' \ LIB1ASMFUNCS='_udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx' \ LIB2FUNCS_ST='_eprintf __gcc_bcmp' \ LIB2FUNCS_EXCLUDE='' \ LIBGCOV='_gcov _gcov_merge_add _gcov_merge_single _gcov_merge_delta _gcov_fork _gcov_execl _gcov_execlp _gcov_execle _gcov_execv _gcov_execvp _gcov_execve _gcov_interval_profiler _gcov_pow2_profiler _gcov_one_value_profiler' \ LIB2ADD='' \ LIB2ADD_ST='' \ LIB2ADDEH='../../gcc/unwind-dw2.c ../../gcc/unwind-dw2-fde-glibc.c ../../gcc/unwind-sjlj.c ../../gcc/gthr-gnat.c ../../gcc/unwind-c.c' \ LIB2ADDEHSTATIC='../../gcc/unwind-dw2.c ../../gcc/unwind-dw2-fde-glibc.c ../../gcc/unwind-sjlj.c ../../gcc/gthr-gnat.c ../../gcc/unwind-c.c' \ LIB2ADDEHSHARED='../../gcc/unwind-dw2.c ../../gcc/unwind-dw2-fde-glibc.c ../../gcc/unwind-sjlj.c ../../gcc/gthr-gnat.c ../../gcc/unwind-c.c' \ LIB2ADDEHDEP='unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c' \ LIB2_SIDITI_CONV_FUNCS='' \ LIBUNWIND='' \ LIBUNWINDDEP='' \ SHLIBUNWIND_LINK='' \ SHLIBUNWIND_INSTALL='' \ FPBIT='' \ FPBIT_FUNCS='_pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf _fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf _lt_sf _le_sf _unord_sf _si_to_sf _sf_to_si _negate_sf _make_sf _sf_to_df _sf_to_tf _thenan_sf _sf_to_usi _usi_to_sf' \ LIB2_DIVMOD_FUNCS='_divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4' \ DPBIT='' \ DPBIT_FUNCS='_pack_df _unpack_df _addsub_df _mul_df _div_df _fpcmp_parts_df _compare_df _eq_df _ne_df _gt_df _ge_df _lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df _df_to_sf _df_to_tf _thenan_df _df_to_usi _usi_to_df' \ TPBIT='' \ TPBIT_FUNCS='_pack_tf _unpack_tf _addsub_tf _mul_tf _div_tf _fpcmp_parts_tf _compare_tf _eq_tf _ne_tf _gt_tf _ge_tf _lt_tf _le_tf _unord_tf _si_to_tf _tf_to_si _negate_tf _make_tf _tf_to_df _tf_to_sf _thenan_tf _tf_to_usi _usi_to_tf' \ DFP_ENABLE='' \ DFP_CFLAGS='' \ D32PBIT='' \ D32PBIT_FUNCS='_addsub_sd _div_sd _mul_sd _plus_sd _minus_sd _eq_sd _ne_sd _lt_sd _gt_sd _le_sd _ge_sd _sd_to_si _sd_to_di _sd_to_usi _sd_to_udi _si_to_sd _di_to_sd _usi_to_sd _udi_to_sd _sd_to_sf _sd_to_df _sd_to_xf _sf_to_sd _df_to_sd _xf_to_sd _sd_to_dd _sd_to_td _unord_sd _conv_sd' \ D64PBIT='' \ D64PBIT_FUNCS='_addsub_dd _div_dd _mul_dd _plus_dd _minus_dd _eq_dd _ne_dd _lt_dd _gt_dd _le_dd _ge_dd _dd_to_si _dd_to_di _dd_to_usi _dd_to_udi _si_to_dd _di_to_dd _usi_to_dd _udi_to_dd _dd_to_sf _dd_to_df _dd_to_xf _sf_to_dd _df_to_dd _xf_to_dd _dd_to_sd _dd_to_td _unord_dd _conv_dd' \ D128PBIT='' \ D128PBIT_FUNCS='_addsub_td _div_td _mul_td _plus_td _minus_td _eq_td _ne_td _lt_td _gt_td _le_td _ge_td _td_to_si _td_to_di _td_to_usi _td_to_udi _si_to_td _di_to_td _usi_to_td _udi_to_td _td_to_sf _td_to_df _td_to_xf _sf_to_td _df_to_td _xf_to_td _td_to_sd _td_to_dd _unord_td _conv_td' \ MULTILIBS=`/scratch/gcc-4.2.2/objdir/./gcc/xgcc -B/scratch/gcc-4.2.2/objdir/./gcc/ -B/usr/local/armv5tejl-unknown-linux-gnu/bin/ -B/usr/local/armv5tejl-unknown-linux-gnu/lib/ -isystem /usr/local/armv5tejl-unknown-linux-gnu/include -isystem /usr/local/armv5tejl-unknown-linux-gnu/sys-include --print-multi-lib` \ EXTRA_MULTILIB_PARTS='' \ SHLIB_LINK='/scratch/gcc-4.2.2/objdir/./gcc/xgcc -B/scratch/gcc-4.2.2/objdir/./gcc/ -B/usr/local/armv5tejl-unknown-linux-gnu/bin/ -B/usr/local/armv5tejl-unknown-linux-gnu/lib/ -isystem /usr/local/armv5tejl-unknown-linux-gnu/include -isystem /usr/local/armv5tejl-unknown-linux-gnu/sys-include -O2 -O2 -mcpu=arm926ejs -msoft-float -fomit-frame-pointer -pipe -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fomit-frame-pointer -fPIC -g0 -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -shared -nodefaultlibs -Wl,[EMAIL PROTECTED]@.so.1 -Wl,[EMAIL PROTECTED]@ -o @multilib_dir@/@[EMAIL PROTECTED] @multilib_flags@ @shlib_objs@ -lc && rm -f @multilib_dir@/@[EMAIL PROTECTED] && if [ -f @multilib_dir@/@[EMAIL PROTECTED] ]; then mv -f @multilib_dir@/@[EMAIL PROTECTED] @multilib_dir@/@[EMAIL PROTECTED]; else true; fi && mv @multi lib_dir@/@[EMAIL PROTECTED] @multilib_dir@/@[EMAIL PROTECTED] && ln -s @[EMAIL PROTECTED] @multilib_dir@/@[EMAIL PROTECTED]' \ SHLIB_INSTALL='$(mkinstalldirs) $(DESTDIR)$(slibdir)@shlib_slibdir_qual@; /usr/bin/install -c -m 644 @multilib_dir@/@[EMAIL PROTECTED] $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@[EMAIL PROTECTED]; rm -f $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@[EMAIL PROTECTED]; ln -s @[EMAIL PROTECTED] $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@[EMAIL PROTECTED]' \ SHLIB_EXT='.so' \ SHLIB_MULTILIB='' \ SHLIB_MKMAP='../../gcc/mkmap-symver.awk' \ SHLIB_MKMAP_OPTS='' \ SHLIB_MAPFILES='../../gcc/libgcc-std.ver ../../gcc/config/libgcc-glibc.ver ../../gcc/config/libgcc-glibc.ver' \ SHLIB_NM_FLAGS='-pg' \ MULTILIB_OSDIRNAMES='' \ ASM_HIDDEN_OP='' \ GCC_FOR_TARGET='/scratch/gcc-4.2.2/objdir/./gcc/xgcc -B/scratch/gcc-4.2.2/objdir/./gcc/ -B/usr/local/armv5tejl-unknown-linux-gnu/bin/ -B/usr/local/armv5tejl-unknown-linux-gnu/lib/ -isystem /usr/local/armv5tejl-unknown-linux-gnu/include -isystem /usr/local/armv5tejl-unknown-linux-gnu/sys-include' \ mkinstalldirs='/bin/sh ../../gcc/../mkinstalldirs' \ /bin/sh mklibgcc > tmp-libgcc.mk mv tmp-libgcc.mk libgcc.mk TARGET_CPU_DEFAULT="" \ HEADERS="auto-host.h ansidecl.h" DEFINES="USED_FOR_TARGET " \ /bin/sh ../../gcc/mkconfig.sh tconfig.h /scratch/gcc-4.2.2/objdir/./gcc/xgcc -B/scratch/gcc-4.2.2/objdir/./gcc/ -B/usr/local/armv5tejl-unknown-linux-gnu/bin/ -B/usr/local/armv5tejl-unknown-linux-gnu/lib/ -isystem /usr/local/armv5tejl-unknown-linux-gnu/include -isystem /usr/local/armv5tejl-unknown-linux-gnu/sys-include -O2 -O2 -mcpu=arm926ejs -msoft-float -fomit-frame-pointer -pipe -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I../../gcc/../libdecnumber -I../libdecnumber -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-toplevel-reorder -Dinhibit_libc \ -c ../../gcc/crtstuff.c -DCRT_BEGIN \ -o crtbegin.o ../../gcc/crtstuff.c:1: error: bad value (arm926ejs) for -mcpu= switch make[3]: *** [crtbegin.o] Error 1 make[3]: Leaving directory `/scratch/gcc-4.2.2/objdir/gcc' make[2]: *** [all-stage1-gcc] Error 2 make[2]: Leaving directory `/scratch/gcc-4.2.2/objdir' make[1]: *** [stage1-bubble] Error 2 make[1]: Leaving directory `/scratch/gcc-4.2.2/objdir' make: *** [bootstrap-lean] Error 2 $ # gcc -v Using built-in specs. Configured with: /data/releases/v1.18/buildroot/toolchain_build_arm_nofpu/gcc-3.4.2/configure --prefix=/usr --build=i386-pc-linux-gnu --host=arm-linux-uclibc --target=arm-linux-uclibc --enable-languages=c,c++ --enable-shared --with-gxx-include-dir=/usr/include/c++ --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-nls --enable-threads --enable-multilib --with-float=soft Thread model: posix gcc version 3.4.2 $ /scratch/gcc-4.2.2/objdir/./gcc/xgcc -v Using built-in specs. Target: armv5tejl-unknown-linux-gnu Configured with: ../configure --with-cpu=arm926ej-s --with-float=soft --enable-languages=c,c++,objc --disable-nls --with-newlib Thread model: posix gcc version 4.2.2 $ So which -mcpu values should I pass to configure and as C*FLAGS to bootstrap to yield a compiler optimized and running only at this processor? It seems gcc 3.4.2 and 4.2.2 accept either 'arm926ejs' or 'arm926ej-s', and configure again just one of these? Thanks for your help Martin