割り込みハンドラ呼び出し時のカーネルスタックの状態 (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 の位置を調整しているのか。成程。
別途実機 (?) にて動作確認の方向です。