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
@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.

The old cortex-a-rt library supported interrupt context saving for FPUs
with 32 double-precision registers and that was lost in the merge. This
brings it back, but calls the feature `fpu-d32` to reflect what it
does.

Also tests with this feature enabled.
@robamu
Copy link
Contributor

robamu commented Oct 28, 2025

Found one more little thing. Otherwise LGTM (I might test this soon on a SAM9G20 as well, let's see whether I can find some time..)

Incredible work!

@jonathanpallant jonathanpallant added this pull request to the merge queue Oct 29, 2025
Merged via the queue into rust-embedded:main with commit dfa7a44 Oct 29, 2025
57 checks passed
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.

3 participants