#16714のバグを修正
以下の問題を修正しました。
修正点は以下の3点です
- cpu_support.Sのcall_interruptラベルの直後でcli命令により割り込みを禁止
- cli命令の実行によって得た古いIMASKの値をchip_config.cのdevice_dispatcher()の第二引数として与える
- device_dispatcher()でcandidateを計算した後にsti命令で割り込みを許可(変更点は上のリンクを参照)
修正はアドホックで、管理外割り込みまで禁止しています。しかし、禁止時間は非常に短いため、大きな問題にはならないはずです。BF533でステップ実行し、device_dispatcher()のエントリー点で強制的にILATを修正し、高優先順位割り込みを発生させました。上記バグ修正前は直ちに割り込みが発生しますが、修正後はsti命令を実行するまで割り込みが禁止されることを確認しています。