-
Notifications
You must be signed in to change notification settings - Fork 157
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement coprocessor access instructions #531
base: master
Are you sure you want to change the base?
Conversation
CI tests:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the RP! What's the longer term plan, since these methods are all pub(crate)
? Do you imagine adding further coprocessor-related functionality in cortex-m
? Should the methods be publicly available?
The aim of these is to expose a common method to interact through the ARM coprocessor interface. Separate libs can then implement the coprocessor driver's using these functions. For example, I'm using it currently to interact with the LPC55S69 math coprocessor |
If you want separate libs to later use these functions, don't they need to be |
Yeah, good catch, that was there on the test library, forgot to remove it |
Ok, it's now failing to compile because const ASM operands are unstable, needing This is getting stabilized soon as per #93332 |
Likely in rust 1.82.0. |
Hello With the stabilization of Rust 1.82 Additionally, with the release of the new RP2350 chip, there is now another mainstream processor with coprocessors, which adds some necessity to the access to coprocessor instructions. I would like some input from somebody in the team of how to proceed at this point, if I should close this PR and open a new one, keep this PR or maybe spin this functionality into a different crate. Many thanks |
The rp2350-hal uses inline assembler to make use of the instructions. Nicer APIs would be better though. |
Implements coprocessor basic access instructions (MCR, MRC, MCRR, MRRC) that compile to a single instruction under
--release
profiles