E6500 / E5500割り込みパス、RFI対RFCIおよびその他のファミリ命令こんにちは、
RFIやその他のファミリ命令は、さまざまな割り込みや例外からの返却に使用されます。
E5500およびE6500プロセッサで、SRR0とSRR1が正しい値に戻されている限り(CSRR0、CRSRR1、MCSRR0、MCSRR1などから最初に読み取れる可能性が高い)、それともプロセッサ内部の機構が壊れるのか知りたいです。
よろしくお願いいたします。
アレクシー・トーレス
QorIQ T1 デバイスQorIQ T2デバイスRe: E6500 / E5500 Interrupt Path, RFI vs RFCI and other family instructions迅速なご回答ありがとうございます。それは我々が考えていたことを裏付けるものだ。
Re: E6500 / E5500 Interrupt Path, RFI vs RFCI and other family instructionsE5500およびE6500では、SRR0/SRR1レジスタにCSRR0/CSRR1またはMCSRR0/MCSRR1からコピーした値を手動でプリロードした場合でも、「RFI」を他の割り込み復帰命令(「RFCI」、「RFMCI」など)に普遍的に置き換えることは推奨されません。
- 各リターン命令は、特定の保存/復元レジスタペアからMSRを復元します。「RFI」を使うと必ずSRR1から復元されますが、回復されるMSRビット(マスクや強制されるもの)は命令によって異なる場合があります。レジスタ値だけでなく、ハードウェアレベルでは、`RFCI` または `RFMCI` によって一部のビットの処理方法が異なる場合があります。
- 「RFCI」と「RFMCI」は「CSSR」/「MCSR」の状態をクリアし、割り込みレベルの内部プロセッサトラッキングを更新します(例:MSRの「CE」/「ME」有効ビット)。手動でコピーした値を「RFI」だけ使用すると、クリティカル/マシンチェック割り込み状態が正しく再有効化またはクリアされず、プロセッサが内部的に不整合な状態に陥る可能性があります。
- Power Architecture Embedded Environment(EREF)仕様では、各例外クラスから返すためにどの命令を使うべきかを明示的に定義しています。これから逸脱するとアーキテクチャ的に定義された挙動の範囲外であり、これらのコアに予測不可能な結果をもたらす可能性があります。
推奨される方法は、rfi は標準/非クリティカルな戻り値にのみ使用し、関連する割り込みクラスには rfci、rfdi、rfgi、または rfmci を使用することです。