K vyvolání výjimky dochází při nestandardních operacích při běhu programu
nebo i nezávisle na běhu programu (např. neznámá instrukce, výpadek
stránky, ale také přerušení). Procesor tehdy skočí na rutinu, která se o
obsluhu daného přerušení má postarat.
Tato rutina musí před vlastní obsluhou nejprve uložit stav proceroru (na
zásobník aktuálního vlákna) - při obsluze se totiž změní některé registry
apod. - a před návratem do původního místa tento stav obnovit - přerušený
program nesmí poznat, že k výjimce došlo.
Záleží na druhu výjimky, jestli se z obsluhy vrací na instrukci, při které
doško k výjimce, nebo na instrukci následující (např. instrukce BREAK
vyvolá výjimku Break Point a je nutné se vracet za tuto instrukci, aby
nedošlo k zacyklení; stejné chování požaduje také instrukce SYSCALL).

Přerušení
Mezi výjimky patří také přerušení (např. přerušení časovače či klávesnice).
Ke kterému přerušení došlo, určují jednotlivé bity v masce přerušení v
registru koprocesoru 0 (CP0), Cause. Důležité je upozornit na to, že
současně může být signalizováno více přerušení a že je lepší volat obsluhu
přerušení časovače až jako poslední, aby např. znaky z klávesnice byly
posílány aktualnímu vláknu a ne až vláknu, na které se přeplánuje.
Signál přerušení je smazán až po správné obsluze přerušení (u časovače to
je naprogramování dalšího přerušení časovače, u klávasnice vyzvednutí znaku
z adresy klávasnice). Pokud nebude správná obsluha zajištěna, bude se
přerušení vyvolávat pořád dokola.

Přerušení časovače
K přerušení časovače dochází tehdy, pokud se hodnoty registrů CP0 Count a
Compare vyrovnají. Count je inkrementován automaticky při provedení každé
instrukce, Compare si nastavuje obsluha přerušení časovače. Vedlejším
efektem zapsání hodnoty do Compare registru je smazání signálu přerušení
časovače.
Obsluha přerušení tedy "naprogramuje", kdy se má vyvolat další, dále
inkrementuje hodnotu na vnitřních hodinách plánovače, a pokud nedošlo k
vyvolání přerušení časovače v průběhu plánovaní (důvod viz dokumentace k
plánovači), zavolá plánovač.


S přerušeními souvisí makra a funkce:

disable_interrupts()
	Makro, které zakáže přerušení.

enable_interrupts()
	Makro, které povolí přerušení.

void disable_interrupts_save()
	Rekurzivně zakazuje přerušení - stejně-krát musí být zavolána
	enable_interrupts_restore(), aby opravdu k povolení přerušení
	došlo. K povolení přerušení však nedojde tehdy, pokud před
	(rekurzivně) prvním voláním disable_interrupts_save() byla
	přerušení už zakázána.

void enable_interrupts_restore()
	Rekurzivně povoluje přerušení.