(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ビットあれば
良いことになります。ただし、実行速度は落ちるでしょう。
高田広章
名古屋大学