| LDATE(特権命令) MMU関連命令 <<L1>>,<<L2>> |
【ニモニックとオペランド】
LDATE src, destadr
Load to address translation table entry
アドレス変換テーブルエントリへのロード
【オプション】
/AS すべての論理空間のTLBをパージ
/SS R0で指定されたLSIDを持つ論理空間の個別半空間のTLBエントリ
のみをパージ(<<L2>>)
/PT PTEへのロード
/ST STEへのロード
【命令フォーマットと表記法】
p パージする論理空間 p = 0 すべての論理空間をパージ(/AS) p = 1 R0で指定されたLSIDを持つ半空間のみをパージ(/SS) ttt ロードするアドレス変換テーブルエントリ ttt = 000 PTEへのロード(/PT) ttt = 001 STEへのロード(/ST) これ以外の ttt 指定は予約命令例外を発生させます。
レジスタ上のパラメータ
R0 : パージするTLBの論理空間ID(LSID)(/SSオプションの場合のみ)
R1 : UATBと等価の情報
【解説】
この命令はdestadrオペランドの実効アドレス(論理アドレス)を計算し、物理アドレスに変換する際に使用するアドレス変換テーブルエントリ(ATE)へ、srcオペランドを格納します。STEへロードするか、PTEへロードするかは、tttで指定します。
ATEの変更によって影響を受けるTLBやキャッシュのエントリが無効化されます。/PTオプションを指定した場合、論理アドレスの上位20ビットが一致するTLBエントリ及びキャッシュエントリが無効化されます。/STオプションを指定した場合、論理アドレスの上位10ビットが一致するTLBエントリ及びキャッシュエントリが無効化されます。
destadrで示された論理アドレスが正の場合、アドレス変換はUATBではなく汎用レジスタR1を使用して行われます。したがって、UATBの中で常に0のビットはR1でも0でなければなりません(チェックは行いません)。しかし、論理アドレスが負の場合には、アドレス変換はSATBを使用して通常の命令と同様に行われます。
/SSオプションを使用する場合、TLBエントリを指定するLSIDはR0で指定します。上のR1の場合と同様、LSIDの中で常に0のビットはR0でも0でなければなりません。
この命令の実行中にリング遷移違反例外が検出されても、無視されます。他の例外はV_flagとF_flagをセットして示され、EIT処理なしに命令が完了して、デスティネーションオペランドは変わりません。フラグのセット条件として以下の4つの場合があります。
(1) 正常終了;ロードされたATEの次段がページイン。
(V_flag = 0, F_flag = 0 )(2) ATEのロード成功。しかし、未使用域参照、不正 ATE、またはページ不在例外のため次段がページ不在。
(V_flag = 0, F_flag = 1 )(3) 未使用域参照かまたは不正ATE例外のためにATEのロード失敗。
(V_flag = 1, F_flag = 0 )(4) アドレス変換中に検出されたページ不在例外のためにATEのロード失敗。
(V_flag = 1, F_flag = 1 )1
*“次段”はアドレス変換プロセスの次の段を意味しています。セクションテーブルへロードする。
(/STオプション)場合にはページテーブルが次の段であり、ページテーブルへロードする(/PTオプション)場合にはページフレームが次の段です。
(1), (2)のケース(LDATEの正常終了)では、V_flagがクリアされ、tttで示されたアドレステーブルエントリからPIビットの反転値がF_flag に入ります。
LDATE命令は、PSWのATビットの設定に関係なく、destadrオペランドのアドレス変換を行います。srcオペランドは、通常のアドレス変換を行います。
LDATEは特権命令です。
【フラグ変化】
【発生EIT】
RIE src [Gen/r], destadr [Gen/a]のアドレッシングモード違反 RIE ttt ≧ 010, s = 1 RIE p = 1(<<L2>>以外) PIVE リング0以外で実行
【使用例】
汎用レジスタR2の内容で指定されたオペランドの論理アドレスを計算し、ページテーブルの対応エントリにR3の内容を書き込みます。