必要な浮動小数点リンケージの種類と浮動小数点計算の種類を指定することにより、以下の表から、使用できるコンパイラコマンドラインオプションを特定できます。
表 5-13 浮動小数点リンケージと浮動小数点計算のコンパイラオプション
リンケージ |
計算 |
|
|
ハードウェア浮動小数点リンケージ |
ソフトウェア浮動小数点リンケージ |
ハードウェア浮動小数点コプロセッサ |
ソフトウェア浮動小数点ライブラリ(fplib) |
コンパイラオプション |
なし |
可 |
なし |
可 |
--fpu=softvfp
|
--apcs=/softfp
|
なし |
可 |
可 |
なし |
--fpu=softvfp+vfpv2
--fpu=softvfp+vfpv3
--fpu=softvfp+vfpv3_fp16
--fpu=softvfp+vfpv3_d16
--fpu=softvfp+vfp3_d16_fp16
--fpu=softvfp+vfpv4
--fpu=softvfp+vfpv4_d16
--fpu=softvfp+fpv4-sp
|
--apcs=/softfp
|
可 |
なし |
可 |
なし |
--fpu=vfp
--fpu=vfpv2
--fpu=vfpv3
--fpu=vfpv3_fp16
--fpu=vfpv3_dp16
--fpu=vfpv3_d16_fp16
--fpu=vpfv4
--fpu=vfpv4_d16
--fpu=fpv4-sp
|
--apcs=/hardfp
|
softvfp
は、ソフトウェア浮動小数点リンケージを指定します。ソフトウェア浮動小数点リンケージが使用される場合は、以下のいずれかが必要となります。
-
呼び出し元関数と呼び出し先関数は、--softvfp
、--fpu softvfp+vfpv2
、--fpu softvfp+vfpv3
、--fpu softvfp+vfpv3_fp16
、 softvfp+vfpv3_d16
、softvfp+vfpv3_d16_fp16
、 softvfp+vfpv4
、softvfp+vfpv4_d16
、または softvfp+fpv4-sp
のいずれかのオプションを使用してコンパイルする必要があります。
-
呼び出し元関数と呼び出し先関数は、 __softfp
キーワードを使用して宣言する必要があります。
--fpu softvfp
、--fpu softvfp+vfpv2
、--fpu softvfp+vfpv3
、--fpu softvfp+vfpv3_fp16
、--fpu softvfpv3_d16
、--fpu softvfpv3_d16_fp16
、--fpu softvfp+vfpv4
、softvfp+vfpv4_d16
、および softvfp+fpv4-sp
の各オプションは、ファイル全体のソフトウェア浮動小数点リンケージを指定します。一方、__softfp
キーワードを使用すると、関数単位でソフトウェア浮動小数点リンケージを指定できます。
注
個別のコンパイラオプションを使用して必要な浮動小数点リンケージの種類と浮動小数点計算の種類を選択しなくても、1 つのコンパイラオプション --fpu
を使用して両方を一度に選択できます例えば、--fpu=softvfp+vfpv2
はソフトウェア浮動小数点リンケージ、および計算用にハードウェアコプロセッサを選択します。softvfp
を使用した場合は、ソフトウェア浮動小数点リンケージが指定されます。
--fpu
オプションを使用する場合、ターゲットプロセッサで実装されている VFP アーキテクチャバージョンを把握しておく必要があります。--fpu=softvfp+...
の代わりに、 --apcs=/softfp
を使用できます。--cpu
によって暗示されるあらゆる VFP アーキテクチャバージョンとのソフトウェアリンケージが指定されます。ARM アーキテクチャ向けプロシージャコール標準(AAPCS)の整数型または浮動小数点型のバリアントを要求する別の方法として、--apcs=/softfp
および --apcs=/hardfp
もあります。
ARM Linux をターゲットとした場合にハードウェア浮動小数点リンケージを使用するには、ハードウェア浮動小数点リンケージを暗示する --fpu
オプションを明示的に指定する(例えば、--fpu=vfpv3
)か、または --apcs=/hardfp
を使用してコンパイルを実行する必要があります。ARM Linux ABI では、ハードウェア浮動小数点リンケージをサポートしません。これに対して、コンパイラは警告を発行します。