メモ

CORTEX-M4の割り込み応答って、どうなっているのでしょうか。
CORTEX-Mxシリーズは割り込み応答がAPCS準拠であるのがひとつの売りで、つまりは割り込みにおけるレジスタの退避が関数呼び出しのレジスタ退避と同じであり、通常の関数を割り込みハンドラに使えるようになっていました。
CORTEX-M4GCC実装では、浮動小数点数の呼び出し規約は softfloat であるそうです。これはつまり、浮動小数点命令を使った命令生成においても、呼び出し規約だけはソフトウェア・エミュレーションに従うというものです。これで、ソフトウェア・エミュレーションしたコードとネイティブな浮動小数点命令を使うコードが相互に呼び合えるということです。移行のコストも下がります。
これは割り込み時にCORTEX-M4コアが浮動小数レジスタの一部をsoftfloatに準拠して保存するということでしょうか。GCCだけじゃないの、というもしますし、いやいや、割り込みハンドラに浮動小数点パラメタは与えないから、とも思います。
あと、ちらっと考えているのですが、TOPPERS/ASP for LPC (CORTEX-M3)は、コア依存部そのままでペリフェラルとNVIC関係だけ移植すればそのままSTM32F4(CORTEX-M4F)で動く気がしてきました。
同じようなことが、過去あったのです。Intelx86 CPUにSSEレジスタを追加したときです。Windowsは何事もなかったように新CPUで動作しましたが、当然パッチを当てるまで、新命令を使っていいのは全システムだけで1タスクだけでした。だって、SSEレジスタのコンテキスト・スイッチをしていなかったのですから。
TOPPERS/ASP for LPCもCORTEX-M4の上で同じ挙動を見せるかもしれません。