In Ada you just annotate a procedure as being an interrupt handler and it Just Works.<p>In addition, you can annotate a protected object (essentially, a group of shared procedures protected by an implicit mutex) as being interrupt-safe, and then any access to that object will be automatically protected by the appropriate instructions.<p>Plus, if you&#x27;re in a Posix environment, you can use the exact same mechanism for interrupt handling. It&#x27;s all remarkably elegant.<p>Alas, like everything Ada, the documentation is opaque in the extreme, but:<p><a href="https:&#x2F;&#x2F;www2.adacore.com&#x2F;gap-static&#x2F;GNAT_Book&#x2F;html&#x2F;aarm&#x2F;AA-C-3-2.html" rel="nofollow">https:&#x2F;&#x2F;www2.adacore.com&#x2F;gap-static&#x2F;GNAT_Book&#x2F;html&#x2F;aarm&#x2F;AA-C...</a><p>Note that at the bottom they&#x27;re defining a parameterised interrupt handler structure and then instantiating it multiple times on multiple IRQs, each of which is in its own isolation domain...