[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(toppers-users 847) Re: TOPPERS(JSP-1.3)についての問い合わせ
- To: toppers-users at ertl jp
- From: kimai at mit pref miyagi jp (Imai Kazuhiko)
- Date: Mon, 02 Jun 2003 19:16:44 +0900
(株)リコー 竹内様
宮城県産業技術総合センターの今井と申します。
質問1についてですが、
> このケースで、schedtskがセットされ、runtskがゼロの場合があ
> ると思われますが
> (dispatcher_1にて割り込み待ちの状態で割り込みが発生)
「dispatcher_1にて割り込み待ちの状態」では非タスクコンテキス
トになっていますので、ここで受け付けた割込みは初段の割込みで
はなく、2段目(以降)の割込みと同じ扱いになります。
(m68kは非タスクコンテキストに割込みモードを対応させています。)
従って、ret_int:の行には行きません。
割込み処理後、下記の(a)行でdispatcherへジャンプしますので、
仰るとおり
> runtskがゼロの場合はスタックとTCB_mspとTCB_pcの保存を行わ
> ずdispatcherにジャンプすべきではないのでしょうか?
となっています。
dispatcher_1:
stop #0x2000 /* 割込み待ち(割込みモード) */
/*
* ここで割込みモードに切り換えるのは,ここで発生する割込み処理
* にどのスタックを使うかという問題の解決と,割込みハンドラ内で
* のタスクディスパッチの防止という2つの意味がある.
* この stop 命令は,IPM を 0 にするが,本来は task_intmask に
* 設定すべきである.M68040 では,stop 命令のパラメータに定数し
* かとれないため,やむをえず 0 にしている(stop 命令を 8つ並べ
* て,task_intmask の値で飛び分ける手はあるが,そこまでやる意
* 義はないと考えた).
*/
or.w #0x1700, %sr /* マスタモード・割込み禁止 */
tst.l reqflg /* reqflg が FALSE なら */
jbeq dispatcher_1 /* dispatcher_1 へ */
clr.l reqflg /* reqflg を FALSE に */
(a) jbra dispatcher
以上、参考になれば幸いです。
宮城県産業技術総合センター
今井和彦
E-mail kimai at mit pref miyagi jp