Skip to content

Is generated atomic register access correct? #793

Open
@9names

Description

@9names

svd2rust can generate atomic register operations by using the --atomics flag
https://docs.rs/svd2rust/latest/svd2rust/#the---atomics-flag
It generates code that looks like this:
https://github.com/ra-rs/ra/blob/main/pac/ra4m1/src/generic/atomic.rs

I'm not certain that these will act as intended, as atomic operations are not required to be volatile.
In particular, it's not clear that doing two of these operations back-to-back will not be optimised by the compiler and reduced to a single operation instead.

The discussions around volatile atomic access have not been resolved yet as far as I know:
https://rust-lang.zulipchat.com/#narrow/stream/136281-t-opsem/topic/volatile.20atomic.20in.20Rust.3F
https://internals.rust-lang.org/t/pre-pre-rfc-exploring-api-design-space-for-volatile-atomics/19989

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions