A HW viszont tud. Maga a HW fogja lementeni a regisztereket a stack -re (r0-r3,lr,pc,xpsr). (Az LR -be spéci érték kerül.) Ezután meghívja az exception handlert. Ez mint bármely sima C függvény menti amit még használ (pl LR). Elvégzi a dolgát, majd visszatölti az EXEC_RETURN magic value -t a PC -be. Itt a core tudja, hogy véget ért az IRQ és az eredeti context -et visszatölti a stack -rol.
Tőszavakban ilyesmi :)
Az ARM ABI szerint az r0-r3 mentése a hívó feladata. Az (r4-12,lr,pc,xpsr) mentése pedig a hívott függvényé. Szóval exception esetén pont azt látja a meghívott handler, mintha sima függvényként hívnák, és úgy is kell visszatérjen. Ezért írják, hogy támogatja a core a C -t.