[fpc-devel] Error building xtensa rtl

Christo Crause christo.crause at gmail.com
Sun Mar 29 22:46:42 CEST 2020


On Sun, Mar 29, 2020 at 8:38 AM Christo Crause <christo.crause at gmail.com>
wrote:

> On Sat, Mar 28, 2020 at 11:04 PM Florian Klämpfl <florian at freepascal.org>
> wrote:
>
>> Am 28.03.20 um 21:33 schrieb Christo Crause via fpc-devel:
>> > When building the xtensa rtl with
>> >
>> > make rtl FPC=~/fpc/3.3.1/compiler/ppcrossxtensa CROSSOPT=-Cacall0
>> > CPU_TARGET=xtensa OS_TARGET=embedded SUBARCH=esp8266
>> > BINUTILSPREFIX=xtensa-lx106-elf-
>> >
>> > the following errors are returned by as:
>> > /home/christo/fpc/3.3.1/rtl/units/xtensa-embedded/system.s: Assembler
>> > messages:
>> > /home/christo/fpc/3.3.1/rtl/units/xtensa-embedded/system.s:203: Error:
>> > unknown opcode or format name 'sext'
>> > /home/christo/fpc/3.3.1/rtl/units/xtensa-embedded/system.s:204: Error:
>> > unknown opcode or format name 'sext'
>> >
>> > When building with CROSSOPT=-Cawindowed as complains about other errors:
>> > /home/christo/fpc/3.3.1/rtl/units/xtensa-embedded/system.s: Assembler
>> > messages:
>> > /home/christo/fpc/3.3.1/rtl/units/xtensa-embedded/system.s:11: Error:
>> > unknown opcode or format name 'retw'
>> >
>> > Any tips on how to build the xtensa rtl?
>>
>> I didn't care about the call0 abi yet. Is it used by the esp8266?
>>
>
> Inspecting some C examples I've compiled with PlatformIO for ESP8266 shows
> use of callx0 for the non-rtos SDK. My goal was just to test the cross
> compiler, but the RTL failed with error 2020031404 (in
> tcpuparamanager.init_values) which seems to suggest an ABI must be
> specified.  Neither of the options I tried satisfied the assembler however.
>

According to the Xtensa ISA 4.3.8 the SEXT instruction is optional (and
some others too) and apparently not implemented for ESP8266 according to
core-isa.h in ESP8266_RTOS_SDK (
https://github.com/espressif/ESP8266_RTOS_SDK/blob/master/components/esp8266/include/xtensa/config/core-isa.h).
This explains why xtensa-lx106-elf-as does not recognise the SEXT
instruction.

It seems that a different instruction sequence should be used for sign
extension for the lx106 subarch.

Also core-isa.h indicates XCHAL_HAVE_WINDOWED = 0, which I take to mean
that the LX106 toolchain doesn't know/implement the windowed ABI, which
explains why setting the FPC ABI to windowed caused as to flag retw as
unknown.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20200329/a2034217/attachment.html>


More information about the fpc-devel mailing list