Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat?(riscv): force inline (some) isr callees
This change gets a fair bit less clear; removing `#[ram]` from `handle_interrupt` does indeed change the resulting binary (because it's implicitly removing `#[inline(never)]`, but `get_core` is so small a function LLVM will always inline it at all the optimization levels I've tried, whether it's marked `#[inline]` or not. So rather than a specific solution to an actual problem, this patch is more of an example and a warning for what's to come: lacking a precise mechanism to trace and identify properties of all callees along a particular path, everything from here on out is highly dependent on relatively distant effects: in attempting to assert whether "the trap handling flow is entirely located in SRAM" we necessarily have to qualify the answer with "given these optimization settings" (and, soon, much worse). If correcteness here is "not touching flash," then, in the usual language of Rust, we're about to leave attempts at demonstrating soundness behind. Instead, we now shift our focus to showing safety under a particular set of (somewhat fragile) circumstances.
- Loading branch information