5.5 ベアメタル用の NEON および FPU の有効化

コンパイラは FPU または NEON が使用可能であることを認識している場合、たとえば、 --cpu オプションを使用して FPU が指定されているプロセッサを指定する場合、FPU または NEON 命令をコードに 適用する場合があります。

浮動小数点演算を意図的に実行していない場合でも、これらの命令を適用できます。
FPU または NEON 命令を使用せず、FPU および NEON が有効である必要のないイメージをビルドする場合、すべてのソースファイルをビルドする際 --fpu=none オプションを使用できます。
ベアメタルをターゲットとして、FPU または NEON が指定されているプロセッサをコンパイルする場合、FPU または NEON 命令を実行するには、起動コードで FPU および NEON を有効化する必要があります。該当するプロセッサのテクニカルリファレンスマニュアルを参照して下さい。
例えば、以下のスタートアップコードにより、Cortex-A8 プロセッサ用の NEON および FPU ハードウェアが有効になります。
__asm void StartHere(void)
{
MRC p15,0,r0,c1,c0,2    // Read CP Access register
ORR r0,r0,#0x00f00000   // Enable full access to NEON/VFP (Coprocessors 10 and 11)
MCR p15,0,r0,c1,c0,2    // Write CP Access register
ISB
MOV r0,#0x40000000      // Switch on the VFP and NEON hardware
MSR FPEXC,r0            // Set EN bit in FPEXC
IMPORT __main
B __main                // Enter normal C run-time environment & library start-up
}
このコードをコンパイルするには、以下のように入力します。
armcc -c --cpu=Cortex-A8 main.c
armlink --entry=StartHere main.o
関連する作業
5.4 コンパイル時のターゲットプロセッサの選択
3.4 C または C++ コードからの NEON 命令の生成
関連する参考文書
8.42 --cpu=name コンパイラオプション
8.88 --fpu=name コンパイラオプション
関連情報
--startup=symbol、--no_startup リンカオプション
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.