NMI (przerwanie niemaskowalne)
Przerwanie, którego procesor nie może wyłączyć: przechodzi nawet wtedy, gdy wszystkie inne przerwania są zablokowane.
Zwykłe przerwania można maskować: kod wyłącza je na czas sekcji krytycznej i przyjmuje potem. NMI nie ma takiego przełącznika. Dzięki temu służy do zdarzeń ważniejszych niż cokolwiek, co program akurat robi: błędu parzystości pamięci, zadziałania watchdoga, zasilacza na skraju załamania.
Pomysł jest stary. 6502 miał dedykowany pin NMI, którego NES używał do budzenia gry przy każdym wygaszaniu pionowym. W x86 wczesne PC zgłaszały przezeń błędy pamięci, a Linux wciąż używa go w „NMI watchdogu", który wyłapuje zawieszony rdzeń. W Cortex-M NMI to wyjątek numer 2 o stałym priorytecie −2; wyżej stoi tylko reset.
Haczyk w tym, że handler NMI może wylądować w środku czegokolwiek, także w kodzie, który uważał się za chroniony. Musi więc być krótki i nigdy nie wolno mu brać blokady.