rt: Implement cortex-m-rt-macros static mut conversion Inside the entrypoint and interrupt handlers, perform a conversion which turns `static mut`s into &mut references to the static. This is safe because exception handlers and the entrypoint are guaranteed to not be reentrant. This is the same behavior as `cortex-m-rt` where it is documented in the Rust Embedded Book [1]. [1]: https://docs.rust-embedded.org/book/start/exceptions.html
Cause an error in the #[entry] macro instead of avr-device
macros: Add a #[entry] macro Add a #[entry] macro for declaring the entry-point of the program, similar to what cortex-m-rt is doing. Signed-off-by: Rahix <rahix@rahix.de>
Update proc-macro dependencies Update to syn 1.0 and fix the interrupt macro to work well with the new version. Signed-off-by: Rahix <rahix@rahix.de>
Implement interrupts This commit adds a new feature-flag `rt` which, when enabled, adds the `#[interrupt]` procedural macro to define an interrupt handler. Unlike the implementation in cortex-m, this version needs an attribute which is the name of the chip the interrupt is for. In code, an interrupt handler might look like this: #![feature(abi_avr_interrupt)] #[avr_device::interrupt(atmega32u4)] fn INT6() { // Do Something } Closes #1. Signed-off-by: Rahix <rahix@rahix.de>