ARMの浮動小数点演算について

EABI,OABIがあり、EABIではデフォルトで-msoft-floatオプションがgccにつく。

EABIはOABIに対して、フロート演算が非常に早い。

とある方のベンチマーク
http://jr0bak.homelinux.net/~imai/pukiwiki/pukiwiki.php?%C6%FC%B5%AD%2F2009-01-12%2F%A5%D9%A5%F3%A5%C1%A5%DE%A1%BC%A5%AF

* OABI ではカーネルの FPU エミュレーション
* EABI ではユーザプログラムでの浮動小数点演算

なぜ違いがでるのか?:
FPUエミュレーションは、カーネルがハードフローに対応しておらず、浮動小数点命令を実行し、
その結果、命令が定義されていない例外が発生したときに、
FPUエミュレーションを例外ハンドラで実行する。
これは、カーネルモード、ユーザモードの行き来があるため非常にオーバヘッドが大きくなる。