Roboshellの割り込み

__attribute__ ((interrupt ("IRQ")))

はつかってないのでどうしてるかと思ったら、

#define ISR_ENTRY() asm volatile(" sub   lr, lr,#4\n" \
                                 " stmfd sp!,{r0-r12,lr}\n" \
                                 " mrs   r1, spsr\n" \
                                 " stmfd sp!,{r1}")

とかを定義してるのか。
単純にリンクアドレスをもどして、レジスタを待避、そしてspsrも待避してる。
復活も同じような定義を使ってる。
オーバーヘッドは17,8サイクルくらいかな?FIQなら待避するレジスタが5個減るから12,3くらいになるのかな。単純に考えて。