On 9/11/20 6:16 PM, Gedare Bloom wrote: > Looks to be coming through > > cpukit/score/cpu/i386/include/rtems/asm.h:157 movb > imps_apic_cpu_map(\REG),\REG /* CPU ID in REG */ > > The assembler is right to complain. movb has to target one of the > 1-byte mnemonics, so this should be %al for the LSB of %eax. One needs > to check through this logic carefully, but I think the right thing to > do here is: > movzbl imps_apic_cpu_map(\REG),\REG > > That should do the trick. Can you test it locally?
Sure! Builds fine and testsuite testing reveals: on Ubuntu 18.04 LTS's Qemu 2.11.1: Passed: 625 Failed: 9 User Input: 6 Expected Fail: 0 Indeterminate: 0 Benchmark: 3 Timeout: 5 Invalid: 7 Wrong Version: 0 Wrong Build: 0 Wrong Tools: 0 ------------------ Total: 655 Failures: dl06.exe psx12.exe psxfenv01.exe smpmulticast01.exe spfatal26.exe spfatal30.exe sptimecounter02.exe tm26.exe tmcontext01.exe User Input: dl10.exe monitor.exe termios.exe top.exe capture.exe fileio.exe Benchmark: linpack.exe whetstone.exe dhrystone.exe Timeouts: dl05.exe ttest02.exe cdtest.exe cxx_iostream.exe smpopenmp01.exe Invalid: smpfatal09.exe spfatal06.exe spfatal09.exe spfatal12.exe spinternalerror01.exe spstkalloc02.exe sptimecounter01.exe Average test time: 0:00:00.535252 Testing time : 0:05:50.589935 on qemu 5.1.0: Passed: 626 Failed: 7 User Input: 6 Expected Fail: 0 Indeterminate: 0 Benchmark: 3 Timeout: 6 Invalid: 7 Wrong Version: 0 Wrong Build: 0 Wrong Tools: 0 ------------------ Total: 655 Failures: dl06.exe psx12.exe psxfenv01.exe smpfatal03.exe smpmulticast01.exe spfatal30.exe tmcontext01.exe User Input: dl10.exe monitor.exe termios.exe top.exe capture.exe fileio.exe Benchmark: linpack.exe whetstone.exe dhrystone.exe Timeouts: dl05.exe ttest02.exe cdtest.exe cxx_iostream.exe smpopenmp01.exe spfatal26.exe Invalid: smpfatal09.exe spfatal06.exe spfatal09.exe spfatal12.exe spinternalerror01.exe spstkalloc02.exe sptimecounter01.exe Average test time: 0:00:00.705858 Testing time : 0:07:42.336669 and finally on qemu 4.2.1: Passed: 627 Failed: 6 User Input: 6 Expected Fail: 0 Indeterminate: 0 Benchmark: 3 Timeout: 6 Invalid: 7 Wrong Version: 0 Wrong Build: 0 Wrong Tools: 0 ------------------ Total: 655 Failures: dl06.exe psx12.exe psxfenv01.exe smpmulticast01.exe spfatal30.exe tmcontext01.exe User Input: dl10.exe monitor.exe termios.exe top.exe capture.exe fileio.exe Benchmark: whetstone.exe dhrystone.exe linpack.exe Timeouts: dl05.exe ttest02.exe cdtest.exe cxx_iostream.exe smpopenmp01.exe spfatal26.exe Invalid: smpfatal09.exe spfatal06.exe spfatal09.exe spfatal12.exe spinternalerror01.exe spstkalloc02.exe sptimecounter01.exe Average test time: 0:00:00.705055 Testing time : 0:07:41.811329 > > On Fri, Sep 11, 2020 at 6:54 AM Karel Gardas <[email protected]> wrote: >> >> >> Hello, >> >> I've built 6/rtems-i386 tools using master branch of rtems-source-builder. >> >> $ i386-rtems6-gcc -v >> Using built-in specs. >> COLLECT_GCC=i386-rtems6-gcc >> COLLECT_LTO_WRAPPER=/export/home/karel/sfw/rtems/6-head-2020-09-11/libexec/gcc/i386-rtems6/10.2.1/lto-wrapper >> Target: i386-rtems6 >> Configured with: ../gnu-mirror-gcc-75f5776/configure >> --prefix=/export/home/karel/sfw/rtems/6-head-2020-09-11 >> --bindir=/export/home/karel/sfw/rtems/6-head-2020-09-11/bin >> --exec_prefix=/export/home/karel/sfw/rtems/6-head-2020-09-11 >> --includedir=/export/home/karel/sfw/rtems/6-head-2020-09-11/include >> --libdir=/export/home/karel/sfw/rtems/6-head-2020-09-11/lib >> --libexecdir=/export/home/karel/sfw/rtems/6-head-2020-09-11/libexec >> --mandir=/export/home/karel/sfw/rtems/6-head-2020-09-11/share/man >> --infodir=/export/home/karel/sfw/rtems/6-head-2020-09-11/share/info >> --datadir=/export/home/karel/sfw/rtems/6-head-2020-09-11/share >> --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=i386-rtems6 >> --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --verbose >> --with-newlib --disable-nls --without-included-gettext >> --disable-win32-registry --enable-version-specific-runtime-libs >> --disable-lto --enable-newlib-io-c99-formats --enable-newlib-iconv >> --enable-newlib-iconv-encodings=big5,cp775,cp850,cp852,cp855,cp866,euc_jp,euc_kr,euc_tw,iso_8859_1,iso_8859_10,iso_8859_11,iso_8859_13,iso_8859_14,iso_8859_15,iso_8859_2,iso_8859_3,iso_8859_4,iso_8859_5,iso_8859_6,iso_8859_7,iso_8859_8,iso_8859_9,iso_ir_111,koi8_r,koi8_ru,koi8_u,koi8_uni,ucs_2,ucs_2_internal,ucs_2be,ucs_2le,ucs_4,ucs_4_internal,ucs_4be,ucs_4le,us_ascii,utf_16,utf_16be,utf_16le,utf_8,win_1250,win_1251,win_1252,win_1253,win_1254,win_1255,win_1256,win_1257,win_1258 >> --enable-threads --disable-plugin --enable-libgomp --enable-languages=c,c++ >> Thread model: rtems >> Supported LTO compression algorithms: zlib >> gcc version 10.2.1 20200904 (RTEMS 6, RSB >> a81a237f3e2318d88a16b31aadb82333498e06fd, Newlib a0d7982) (GCC) >> >> >> I'm using those tools to build pc686 BSP with SMP enabled. The BSP is >> configured with: >> >> $ ../rtems-head/configure --prefix=$HOME/sfw/rtems/6-head-2020-09-11/ >> --target=i386-rtems6 --enable-maintainer-mode --enable-rtemsbsp=pc686 >> --enable-posix --enable-smp >> >> The build fails with: >> >> make[4]: Entering directory >> '/export/home/karel/git/rtems/obj-rtems6/i386-rtems6/c/pc686/cpukit' >> depbase=`echo score/cpu/i386/cpu_asm.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ >> i386-rtems6-gcc --pipe -DHAVE_CONFIG_H -I. >> -I/export/home/karel/git/rtems/obj-rtems6/i386-rtems6/c/pc686/include >> -I/export/home/karel/git/rtems/rtems-head/cpukit/include >> -I/export/home/karel/git/rtems/rtems-head/cpukit/score/cpu/i386/include >> -I/export/home/karel/git/rtems/rtems-head/cpukit/libnetworking -DASM >> -mtune=pentiumpro -march=pentium -O2 -g -ffunction-sections >> -fdata-sections -Wall -Wmissing-prototypes >> -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs >> -mtune=pentiumpro -march=pentium -O2 -g -ffunction-sections >> -fdata-sections -Wall -Wmissing-prototypes >> -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -MT >> score/cpu/i386/cpu_asm.o -MD -MP -MF $depbase.Tpo -c -o >> score/cpu/i386/cpu_asm.o >> ../../../../../rtems-head/c/src/../../cpukit/score/cpu/i386/cpu_asm.S &&\ >> mv -f $depbase.Tpo $depbase.Po >> ../../../../../rtems-head/c/src/../../cpukit/score/cpu/i386/cpu_asm.S: >> Assembler messages: >> ../../../../../rtems-head/c/src/../../cpukit/score/cpu/i386/cpu_asm.S:54: >> Error: >> `%edx' not allowed with `movb' >> ../../../../../rtems-head/c/src/../../cpukit/score/cpu/i386/cpu_asm.S:78: >> Warning: >> no instruction mnemonic suffix given and no register operands; using >> default for `bts' >> ../../../../../rtems-head/c/src/../../cpukit/score/cpu/i386/cpu_asm.S:93: >> Error: >> `%ecx' not allowed with `movb' >> ../../../../../rtems-head/c/src/../../cpukit/score/cpu/i386/cpu_asm.S:118: >> Error: `%edx' not allowed with `movb' >> Makefile:11553: recipe for target 'score/cpu/i386/cpu_asm.o' failed >> make[4]: *** [score/cpu/i386/cpu_asm.o] Error 1 >> make[4]: Leaving directory >> '/export/home/karel/git/rtems/obj-rtems6/i386-rtems6/c/pc686/cpukit' >> Makefile:1272: recipe for target 'cpukit' failed >> make[3]: *** [cpukit] Error 2 >> >> it seems the problematic code was added by the patch: >> >> commit 8937f12f1884f08c8a53fc339d60b1021846882a >> Author: Jan Sommer <[email protected]> >> Date: Sun May 31 16:22:54 2020 +0200 >> >> bsp/pc386: Update context switch and restore >> >> Uses similar flow in cpu_asm.S for i386 as for arm. >> >> >> Shall I add a ticket for this or am I doing anything wrong/unexpected here? >> >> Thanks, >> Karel >> _______________________________________________ >> devel mailing list >> [email protected] >> http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list [email protected] http://lists.rtems.org/mailman/listinfo/devel
