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くらいになるのかな。単純に考えて。