(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