24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

表 3-1. 擬似コード関数 ( 続き ) tlb_translate(vaddr, size, type, cpl, *attr, *defer) 変換がイネーブルのときに、指定された仮想メモリ・アドレス (vaddr) の変換後の データ物理アドレスを返す。イネーブルでない場合は、vaddr を返す。size でア クセスのサイズを指定し、type でアクセスのタイプを指定する (read、write、 advance、spec など )。cpl でアクセス・チェックのための特権レベルを指定す る。*attr はマップされた物理メモリ属性を返す。フォルト条件が検出され、据え 置かれた場合、tlb_translate は *defer を設定して返る。フォルトが生成された が、フォルトがデファーされ ( 据え置かれ ) なかった場合、tlb_translate は返らな い。tlb_translate は、以下のフォルトをチェックする。 VHPT データ・フォルト データがネストされた TLB フォルト データ TLB フォルト 別のデータ TLB フォルト データ・ページ不在フォルト データ NaT ページ参照フォルト データ・キー・ミス・フォルト データ・キー許可フォルト データ・アクセス権フォルト データ・ダーティ・ビット・フォルト データ・アクセス・ビット・フォルト データ・デバッグ・フォルト サポートされないデータ参照フォルト tlb_translate_nonaccess(vaddr, type) 指定された仮想メモリ・アドレス (vaddr) の変換後のデータ物理アドレスを返す。 type でアクセスのタイプを指定する (FC、TPA など )。フォルトが生成された場合、 tlb_translate_nonaccess は返らない。以下のフォルトがチェックされる。 VHPT データ・フォルト データ TLB フォルト データがネストされた TLB フォルト データ・ページ不在フォルト データ NaT ページ参照フォルト tlb_vhpt_hash(vrn, vaddr61, rid, size) 指定された仮想リージョン番号 (vrn) と、61 ビットの仮想オフセット (vaddr61)、 リージョン識別子 (rid)、ページ・サイズ (size) を持つ VHPT エントリのアドレ スを生成する。tlb_vhpt_hash は、vaddr、rid、size パラメータをハッシュ処理 して、ハッシュ・インデックスを生成する。次に、このハッシュ・インデックスを PTA.size に基づいてマスクして、PTA.base と連結し、VHPT エントリのアドレス を生成する。ロング形式のハッシュ法は、プロセッサ固有である。 tlb_vhpt_tag(vaddr, rid, size) 指定された仮想アドレス (vaddr)、リージョン識別子 (rid)、ページ・サイズ (size) を持つ VHPT タグ識別子を生成する。tlb_vhpt_tag は、vaddr、rid、size パラメータをハッシュ処理して、変換エントリの識別子を生成する。このタグと ハッシュ・インデックスを組み合わせて、VHPT 内の変換エントリを一意に識別で きる。タグの生成方法は、プロセッサ固有である。すべてのプロセッサ・モデルの タグ関数は、生成されたタグのビット 63 (ti ビット ) が必ず 0 になるようにしなけ ればならない。 unimplemented_physical_address (paddr) 指定された物理アドレスが、このプロセッサ・モデルでサポートされていない場合 に TRUE を返す。それ以外の場合には FALSE を返す。この関数はモデル固有であ る。 undefined() 不定の 64 ビット値を返す。 undefined_behavior() 不定のプロセッサ動作を発生させる。不定な動作の程度については、第 1 巻、第 1 部の 3.5 節「未定義の動作」を参照のこと。 unimplemented_virtual_address (vaddr) 関数 操作 指定された仮想アドレスが、このプロセッサ・モデルでサポートされていない場合 に TRUE を返す。それ以外の場合には FALSE を返す。この関数はモデル固有であ る。 fp_update_fpsr(sf, tmp_fp_env) 浮動小数点命令のローカル状態をグローバル FPSR にコピーする。 3:260 第 3 巻 : 擬似コード関数

表 3-1. 擬似コード関数 ( 続き ) 関数 操作 fp_update_psr(dest_freg) dest_freg に基づいて、PSR.mfl または PSR.mfh を条件付きで設定する。 zero_ext(value, pos) ビット pos-1 から 0 までが value で埋められ、ビット位置 pos から 63 までがゼ ロとなっている 64 ビットの符号なし数値を返す。pos が 64 以上である場合には、 value が返される。 第 3 巻 : 擬似コード関数 3:261

表 3-1. 擬似コード関数 ( 続き )<br />

tlb_translate(vaddr, size, type, cpl, *attr,<br />

*defer)<br />

変換がイネーブルのときに、指定された仮想メモリ・アドレス (vaddr) の変換後の<br />

データ物理アドレスを返す。イネーブルでない場合は、vaddr を返す。size でア<br />

クセスのサイズを指定し、type でアクセスのタイプを指定する (read、write、<br />

advance、spec など )。cpl でアクセス・チェックのための特権レベルを指定す<br />

る。*attr はマップされた物理メモリ属性を返す。フォルト条件が検出され、据え<br />

置かれた場合、tlb_translate は *defer を設定して返る。フォルトが生成された<br />

が、フォルトがデファーされ ( 据え置かれ ) なかった場合、tlb_translate は返らな<br />

い。tlb_translate は、以下のフォルトをチェックする。<br />

VHPT データ・フォルト<br />

データがネストされた TLB フォルト<br />

データ TLB フォルト<br />

別のデータ TLB フォルト<br />

データ・ページ不在フォルト<br />

データ NaT ページ参照フォルト<br />

データ・キー・ミス・フォルト<br />

データ・キー許可フォルト<br />

データ・アクセス権フォルト<br />

データ・ダーティ・ビット・フォルト<br />

データ・アクセス・ビット・フォルト<br />

データ・デバッグ・フォルト<br />

サポートされないデータ参照フォルト<br />

tlb_translate_nonaccess(vaddr, type) 指定された仮想メモリ・アドレス (vaddr) の変換後のデータ物理アドレスを返す。<br />

type でアクセスのタイプを指定する (FC、TPA など )。フォルトが生成された場合、<br />

tlb_translate_nonaccess は返らない。以下のフォルトがチェックされる。<br />

VHPT データ・フォルト<br />

データ TLB フォルト<br />

データがネストされた TLB フォルト<br />

データ・ページ不在フォルト<br />

データ NaT ページ参照フォルト<br />

tlb_vhpt_hash(vrn, vaddr61, rid, size) 指定された仮想リージョン番号 (vrn) と、61 ビットの仮想オフセット (vaddr61)、<br />

リージョン識別子 (rid)、ページ・サイズ (size) を持つ VHPT エントリのアドレ<br />

スを生成する。tlb_vhpt_hash は、vaddr、rid、size パラメータをハッシュ処理<br />

して、ハッシュ・インデックスを生成する。次に、このハッシュ・インデックスを<br />

PTA.size に基づいてマスクして、PTA.base と連結し、VHPT エントリのアドレス<br />

を生成する。ロング形式のハッシュ法は、プロセッサ固有である。<br />

tlb_vhpt_tag(vaddr, rid, size) 指定された仮想アドレス (vaddr)、リージョン識別子 (rid)、ページ・サイズ<br />

(size) を持つ VHPT タグ識別子を生成する。tlb_vhpt_tag は、vaddr、rid、size<br />

パラメータをハッシュ処理して、変換エントリの識別子を生成する。このタグと<br />

ハッシュ・インデックスを組み合わせて、VHPT 内の変換エントリを一意に識別で<br />

きる。タグの生成方法は、プロセッサ固有である。すべてのプロセッサ・モデルの<br />

タグ関数は、生成されたタグのビット 63 (ti ビット ) が必ず 0 になるようにしなけ<br />

ればならない。<br />

unimplemented_physical_address<br />

(paddr)<br />

指定された物理アドレスが、このプロセッサ・モデルでサポートされていない場合<br />

に TRUE を返す。それ以外の場合には FALSE を返す。この関数はモデル固有であ<br />

る。<br />

undefined() 不定の 64 ビット値を返す。<br />

undefined_behavior() 不定のプロセッサ動作を発生させる。不定な動作の程度については、第 1 巻、第 1<br />

部の 3.5 節「未定義の動作」を参照のこと。<br />

unimplemented_virtual_address<br />

(vaddr)<br />

関数 操作<br />

指定された仮想アドレスが、このプロセッサ・モデルでサポートされていない場合<br />

に TRUE を返す。それ以外の場合には FALSE を返す。この関数はモデル固有であ<br />

る。<br />

fp_update_fpsr(sf, tmp_fp_env) 浮動小数点命令のローカル状態をグローバル FPSR にコピーする。<br />

3:260 第 3 巻 : 擬似コード関数

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!