The E310X atomic support is limited, as it only allows us to use AMO instructions, while LR/SC instructions provoke an exception. Thus, we need to provide support for riscv32imc-unknown-none-elf to use LR/SC instructions via portable-atomic. However, currently you either use emulation of all the atomic instructions or a faulty atomic target.
This PR uses a new version of portable-atomic, which added a new feature to use real AMO instructions for riscv32imc-unknown-none-elf targets while emulating LR/SC instructions. This is particularly well-suited for the E310x microcontroller. Note that the MSRV is now 1.72.
As a side note: In my opinion, this microcontroller does not deserve to be called a riscv32imac target. We should stop supporting riscv32imac and clearly document this particularity, asking users to always use riscv32imc with portable-atomic and force-amo when needed.
The E310X atomic support is limited, as it only allows us to use AMO instructions, while LR/SC instructions provoke an exception. Thus, we need to provide support for
riscv32imc-unknown-none-elf
to use LR/SC instructions viaportable-atomic
. However, currently you either use emulation of all the atomic instructions or a faulty atomic target.This PR uses a new version of
portable-atomic
, which added a new feature to use real AMO instructions forriscv32imc-unknown-none-elf
targets while emulating LR/SC instructions. This is particularly well-suited for the E310x microcontroller. Note that the MSRV is now 1.72.As a side note: In my opinion, this microcontroller does not deserve to be called a
riscv32imac
target. We should stop supportingriscv32imac
and clearly document this particularity, asking users to always useriscv32imc
withportable-atomic
andforce-amo
when needed.