割り込みハンドラ呼び出し時のカーネルスタックの状態 (3)
ええと、0772 のスタックポインタの操作がイメージできてなかったんですが
0772 tst -(sp)
これ、0756 で新しい PS をコピィした流れ、ということなのか。0755 の trap 手続きでスタックに微妙な操作をしているのでわざわざ call1 を経由して云々、なのですね。trap を経由しない割り込みの場合は 0776 の call が入口で新しい PS をスタックに積んでいる、とゆーことなのか。
まとめ
纏められるのかどうか不明ですが。
とりあえず trap の先頭で新しい PS を保存します。位置に注意。
0756 mov PS,-4(sp)
この時点でスタックは以下なカンジ? (要確認
| | +----+ | PS | +----+ | PC | <- sp +----+ | | +----+ | PC | <- 0756 で格納される PC +----+
で、0762 の jsr で古い r0 が push されると。
0762 jsr r0,call1; _trap
スタックの状態は以下のはず。
| | +----+ | PS | +----+ | PC | +----+ | r0 | <- sp +----+ | PC | <- 0756 で格納される PC +----+
で、0772 で sp の位置を調整しているのか。成程。
別途実機 (?) にて動作確認の方向です。