(toppers-users 2222) Re: JSPカーネルのdispatch_rについて

TAKADA Hiroaki hiro @ ertl.jp
2005年 12月 12日 (月) 00:43:00 JST


酔漢さま

> m68k実装のcpu_support.Sを読むと、dispatch()関数内部では、schedtsk->pcか
> ら値を取り出してきて、そのアドレスにジャンプしています。つまり、これが新
> しくスケジュールされるタスクの実行再開アドレスです。
> 
> しかし、runtskのコンテキストを保存するときには、かならずdispatch_rが実行
> 再開アドレスとしてruntsk->pcに保存されています。
> 
> そうすると、tskctx->pcフィールドは不要で、タスク切り替え時には常に
> dispatch_rにジャンプすれば済むように思いますが、いかがでしょうか。

tskctx->pc フィールドには、次の3種類の値が設定される可能性があります。

(1) dispatch_r(cpu_support.S:dispatch の4行下で設定)

(2) ret_int_r(cpu_support.S:ret_exc の9行下で設定)

(3) activate_r(cpu_context.h:activate_context で設定)

よって、このフィールドは必要です。ただし、メモリを切り詰めるなら、設定
される値が3通りしかないわけですから、32ビットは必要なく、2ビットあれば
良いことになります。ただし、実行速度は落ちるでしょう。

高田広章
名古屋大学