(toppers-users 564) CPU 例外と CPU ロック状態
Tatsuhiko Matsukawa
KFC00725 @ nifty.ne.jp
2002年 9月 24日 (火) 20:24:53 JST
お世話になっております。
CPU例外とCPUロック状態について教えてください。
仕様書3.5.4の[補足説明]に
「また、CPUハンドラからのリターン直後は、CPU例外ハンドラからCPUロック
状態でリターンした場合にはCPUロック状態、CPUロック解除状態でリターンし
た場合にはCPUロック解除状態になる。」
とありますが、これは、CPU例外ハンドラの中で、CPUロック状態を変更した場
合、CPU例外が発生した側の状態は、CPU例外発生の前後で、状態が変わってし
まう、ということでしょうか。
例えば、
タスクコンテキスト
↓
↓CPUロック解除状態で、タスクコンテキスト実行中
↓
↓(CPU例外発生)
CPU例外ハンドラ
↓
↓iloc_cpu()
↓return ;
↓戻った時にはCPUロック状態
↓
逆に、
↓
↓CPUロック状態で、タスクコンテキスト実行中
↓
↓(CPU例外発生)
CPU例外ハンドラ
↓
↓iunl_cpu()
↓return ;
↓戻った時にはCPUロック解除状態
↓
とならなければならない、という理解でいいのでしょうか。
多くのCPUでも同様だと思いますが、Xstormy16の場合、CPU例外は、割り込み
とほとんど同じ動作をします(割り込み・例外の発生で、PCとともにPSWも保存
される)。CPU例外ハンドラからのリターン時に、CPU例外ハンドラ内でのCPUロ
ック(解除)状態を継続させるには、スタックの中を直接操作するしか、方法が
思いつきません。
他のCPUでは、この部分、どのように実装されていますでしょうか?
以上、アドバイス、ご意見いただけたら幸いです。
************************
松川竜彦
KFC00725 @ nifty.ne.jp
************************