H8ではTRAP命令に対して固定の割り込みベクタテーブルが存在しましたが、SH2ではイミディエイトで指定したベクタ番号のアドレスに飛ぶようになっているようです。
この時、TRAPA命令を使った時に使えるベクタは特に制限はないのでしょうか?
割り込みプライオリティを指定して使いたいのでIPRの設定できるベクタで空いているところを適当に使おうと思うのですが・・・。
ユーザベクタ(ソフトウェア割込)として
利用できるのは32から63までの32個です.
この中のベクタであれば,自由に利用できます.
trapa 命令は 0から255までの番号を
利用できるようになっていますが,
32から63以外のベクタは,ハードウェア割り込み(NMIやリセット,IRQなど)に割り当てられています.
また,割り込みの優先順位ですが,リセット直後の状態では,割り込みベクタ番号が小さいほど優先されます.
SHの仕様書にベクタの一覧があると思いますので,詳細はそちらをみると良いと思います.
回答ありがとうございます!
ベクタ一覧見つけました。
確かに32〜63がユーザベクタになっていました。
トラップは割り込みと共に、例外処理の仲間という事なんですね。
認識が間違っていました。勉強になります。
簡単なタスク切り替えディスパッチャを作っていて、任意のタイミングでタスク切り替えさせるためにトラップを使おうと思ったのでした。
例外処理の項を見て、割り込み例外よりもトラップ命令例外の方が優先順位が低い事も分かりました。
(ハードウェア割り込み中にトラップでタスクを切り替えられてしまうとおかしな事になるのでIPRで・・・などと考えていましたがはじめから優先順位が低いなら問題なしです)
これで仕事が進みます。
ありがとうございました(^_^)