Skip to content

Conversation

@thejpster
Copy link
Contributor

Replaces cortex-r-rt, cortex-a-rt and cortex-ar.

@thejpster
Copy link
Contributor Author

This got big, and Armv5TE stuff is broken in weird ways, so I'm going to pull out parts of this as separate PRs.

Current list of weirdness:

  • Somehow, _default_handler ends up missing, and linking an example without an #[irq] function fails - yet when I dissassemble libaarch32-rt.rlib I can see _default_handler right there. No idea what is doing on.
  • Armv5TE and Armv4T targets emit calls to instrinsic functions for atomic load and store, even though they can do atomic load/store without intrinsics (they cannot do CAS, but that's OK because we're not doing CAS). This is especially odd as the target is very similar to thumbv6m-none-eabi, and that does not emit calls to intrinsics. I suspect I'll need to go through the LLVM source to work it out - unless Zulip can help.

@robamu
Copy link
Contributor

robamu commented Oct 26, 2025

Needs to be rebased. I can also perform some testing on the Zynq7000

Replaces cortex-r-rt, cortex-a-rt and cortex-ar.
) Bigger stacks, so the examples work in release mode
) Formatting
) Remove gic feature
They have no atomics to switch tests to use portable-atomic. Also
give the examples more stack space to match mps3-an536 tests.

IFAR is also not available, so skip it in the prefetch abort test.
@thejpster
Copy link
Contributor Author

Phew, all tests pass on ARMv4T (PXA25) and ARMv5TE (ARM926) in QEMU.

@thejpster thejpster marked this pull request as ready for review October 27, 2025 21:58
Copy link
Contributor

@robamu robamu Oct 27, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about the double precision context functions? (

macro_rules! save_context {
)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are no EABIHF targets for Armv4T and Armv5TE so I didn’t check.

readme = "README.md"
repository = "https://github.com/rust-embedded/cortex-r.git"
rust-version = "1.83"
version = "0.2.1"
Copy link
Contributor

@robamu robamu Oct 27, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would it make sense to set this to v0.1.0? It is a merge of 2 run-time crates with a different name, so maybe a the crate with a new name starting at version v0.2.1 might be confusing? I tripped over this trying to include it with version v0.1.0 (former cortex-a-rt version)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point

@robamu
Copy link
Contributor

robamu commented Oct 27, 2025

I tested some of the Zynq7000 examples, and they work without issues :)

Those did not include floating code I think. Might add that to test the double precision support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants