-
Notifications
You must be signed in to change notification settings - Fork 78
Reimplement r0
, since it is deprecated
#122
Comments
Thanks for opening this issue! I'll take a look. Of course, PRs are more than welcome :) |
I’ll have a look at this. Is there a preference for a separate crate again or should it just become a part of the |
I prefer to reduce the number of dependencies, but if you find a handy crate that eases the work, then use it. If I were you, I'd implement it in assembly. |
I see you feature-gate the RAM initialization. Would you recommend us to do the same for |
We can get some inspiration from the |
This implements the `r0::init_data` and `r0::zero_bss` routines in assembly. There is a generic implementation for `riscv32` and `riscv64`, since `riscv64` deals with alignment problems. The routines are kept at their old calling site so that only one hardware thread calls them. Consequently they are also inlined into the `start_rust` function. [Issue rust-embedded#122]
That was a later addition from users with MCUs that have things like ECC RAM where you have to write to the entire RAM at startup to initialise the memory controller; usually it's enough to just initialise the .data and .bss sections and leave unused RAM alone. Since there's a startup time cost, it made sense to feature-gate this just for users who need it. I think you could reasonably support the same feature, but just doing .data and .bss is enough for almost all use cases. |
This repository should find an alternative to
r0
, since that crate is now archived and deprecated.The text was updated successfully, but these errors were encountered: