(toppers-users 2596) Re: Sh4 FPUの使用方法を教えて下さいその2。

Naohide Ogata nogata @ fukushima-iri.go.jp
2007年 4月 9日 (月) 19:15:15 JST


福島県ハイテクプラザの尾形です。

金曜日から先ほどまで職場のメールサーバーがダウンしてました。

EIKO SOKKI MATSUMOTO-F wrote:
>
> ここで質問ですが、jsp/config/sh3/cpu_support.Sのレジスタの保存、復帰の
> 部分
> とありますが、 cpu_support.S には、次の4箇所の部分があります。
> この全ての部分で浮動少数点レジスタ関係の保存、復帰を行えば良いのでしょ
> うか?
>
>
> ----cpu_support.S--------------
> /* Exception 100 vector 部 */
>
> /* タスクディスパッチャ部 */
>
> /* 割り込みハンドラ/CPU例外ハンドラ出口処理部 */
>
> /* タスク起動処理部 */
>
> /* Exception 600 vector 部 */
>
> 以上
> お手数かとは思いますが、なにとぞよろしくお願い致します。
>

 cpu_support.Sで「mach」を検索して出てくるmachレジスタの待避(2ヶ
所)、復旧(3ヶ所)のあわせて5箇所になります。

具体的には、

 「sts.l mach, @ -r15」の行(2箇所)を以下のように変更。

   ------
      sts.l mach, @ -r15
      sts.l fpscr, @ -r15
      sts.l fpul, @ -r15
      fmov.s fr0, @ -r15
      fmov.s fr1, @ -r15
      fmov.s fr2, @ -r15
      fmov.s fr3, @ -r15
      fmov.s fr4, @ -r15
      fmov.s fr5, @ -r15
      fmov.s fr6, @ -r15
      fmov.s fr7, @ -r15
      fmov.s fr8, @ -r15
      fmov.s fr9, @ -r15
      fmov.s fr10, @ -r15
      fmov.s fr11, @ -r15
      fmov.s fr12, @ -r15
      fmov.s fr13, @ -r15
      fmov.s fr14, @ -r15
      fmov.s fr15, @ -r15
   ------

  同じく、「lds.l @r15+,mach」の行(3箇所)を以下のように変更。

   ------

      fmov.s @r15+,fr15
      fmov.s @r15+,fr14
      fmov.s @r15+,fr13
      fmov.s @r15+,fr12
      fmov.s @r15+,fr11
      fmov.s @r15+,fr10
      fmov.s @r15+,fr9
      fmov.s @r15+,fr8
      fmov.s @r15+,fr7
      fmov.s @r15+,fr6
      fmov.s @r15+,fr5
      fmov.s @r15+,fr4
      fmov.s @r15+,fr3
      fmov.s @r15+,fr2
      fmov.s @r15+,fr1
      fmov.s @r15+,fr0
      lds.l @r15+,fpul
      lds.l @r15+,fpscr

      ------

あと、start.Sで浮動小数点コントロールレジスタの初期化が必要です。

_start:
      /*
      * キャッシュの初期化
      */
      mov.l _ccr_addr,r1
      mov.l _ccr_disable,r2
      mov.l r2, @ r1
      mov.l _ccr_mode,r2
      mov.l r2, @ r1


の後に、以下を追加。

      /*
      浮動小数点コントロールレジスタの初期化
      */

      mov #8,r0
      swap.w r0,r1
      lds r1,fpscr

------

 ただし、酒匂さん、邑中さんがいわれているerrno変数の排他制御やFPUの例外
処理などは別途対応する必要があります。

#数値演算エラーがおきなければ何とか動きますが。

--

  福島県ハイテクプラザ 研究開発部 システム技術グループ 尾形直秀

Zip 963-8862 郡山市待池台1-12   TEL 024-959-1739   FAX 024-959-1761