pc386 BSP/master branch build failure with smp enabled.

Karel Gardas karel.gardas at centrum.cz
Fri Sep 11 17:52:34 UTC 2020


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 <karel.gardas at centrum.cz> 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 <jan.sommer at dlr.de>
>> 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
>> devel at rtems.org
>> http://lists.rtems.org/mailman/listinfo/devel



More information about the devel mailing list