あれ??

NetBSD-currentの割り込み - かーねる・う゛いえむにっき
で引用したKernIntrのコードだが、
/*
* Save the relevant kernel registers onto the stack.
* We don't need to save s0 - s8, sp and gp because
* the compiler does it for us.
*/
とか言って$s0 - $s8を保存してない。
え?これってハードウェアからの外部割込みが入るハンドラだったよねぇ?
あれ??意味が解らなくなった。
プログラム走行中のどの段階でもハードが割り込み起こせば割り込めちゃうんだから、コンパイラレジスタを保存する余地なんて無いような気がするんだけれど・・・
システムコールみたいにプログラムが起こす割り込みならこの説明は解らなくもないんだけれども・・・

どういう事だろう?