第二部 トロン仕様チップ命令詳細第十七章 MMU関連命令
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_flagF_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の内容を書き込みます。