割り込みと関数コールのスタックの使い方が違う場合はアセンブラを使うか割り込みに特化した関数コールが必要だろ。
x86でもinterrupt修飾子が用意されたしな。