=====================================================================
                         CORTEX-M4対応プロセッサ依存部
                                  Last Modified: 2012 Oct 21 
=====================================================================


(1) 対応しているターゲットシステムの種類・構成

TOPPERSプロジェクト公式ARM-M依存部1.7に、CORTEX-M4F対応コードを追加した。


(2) 使用する開発環境と動作検証した条件（バージョン，オプション等）

カーネルはGCCを用いてコンパイルする．動作確認したバージョンは各ターゲ
ット依存部のドキュメントに記載する．

GCCを使ってCORTEX-M4Fの浮動小数点レジスタを使うには、-mcpu=cortex-m4  
-mfpu=fpv4-sp-d16 -mfloat-abi=softfp を指定する。この場合、pre-defined Macro
として__ARM_ARCH_7EM__が定義され、__SOFTFP__が未定義となる。追加コードはこの条件が
満たされる場合のみコンパイルされる。

コードは以下の部分に追加されている。すべて core_support.S の中である。

dispatch:
タスク切り替え処理において、現行タスクのFPUコンテキストを保存する必要がある場合には
保存する。必要性はcontrolレジスタのbit2で行う。dispatch_rでの判断のため、control
レジスタの値をスタックに保存する。

dispatch_r:
タスク切り替え処理において、新たにCPUを割り当てられたタスクのためにFPUコンテキストを
復帰する必要がある場合には、復帰する。判断はスタック上に保存されているcontrolレジスタの
値を使う。

ret_int:
割り込み出口処理において、浮動小数点コンテキストが例外フレームに含まれている場合に
S16-S31を追加保存する。svc_handlerのために、lrレジスタ値を保存する。

svc_handler:
割り込み出口処理でCPU資源を奪われたタスクに復帰するさい、必要に応じてS16-S31を復帰する。

start_r:
新たなタスクを割り当てる際には、controlのビット2をクリアして、浮動小数点実行履歴を
クリアしておく。
