アドレッシング - pud_none()
概要
ページアッパーディレクトリのアドレスが無効なアドレスか確認する
詳細
PTRS_PER_PMDとCONFIG_PGTABLE_LEVELSの値によって以下のように処理が異なる
- PTRS_PER_PMDの値が1以下の場合
- CONFIG_PGTABLE_LEVELSの値が2を超えるている場合
- native_pud_val()で取得したページアッパーディレクトリの値が0なら1、それ以外の場合は0を返す
- それ以外
- 常に0を返す
アドレッシング - native_pmd_val()
概要
ページミドルディレクトリのアドレスを返す
詳細
CONFIG_PGTABLE_LEVELSの値によって以下のように処理が異なる
- CONFIG_PGTABLE_LEVELSが2を超える場合
- pmd_t型の値をpmdval_t型に変換して返す
- それ以外
- native_pgd_val()でページグローバルディレクトリの値を取得して返す
- ページテーブルにページアッパーディレクトリが存在しないため、ページグローバルディレクトリと同じ値になる
アドレッシング - __pmd()
概要
pmdval_t型の値をpmd_t型に変換する
詳細
_ CONFIG_PARAVIRTとCONFIG_PGTABLE_LEVELS、__PAGETABLE_PMD_FOLDED_の値によって以下のように処理が異なる
- CONFIG_PARAVIRTが定義されていてCONFIG_PGTABLE_LEVELSの値が3以上の場合
- PVOP_CALLEEx()にvalが32bitの場合は引数を1つ、64bitモードの場合は第1引数valの下位32bitを、第2引数に上位32bitの2つの値を渡してpv_mmu_ops.make_pmd*1を実行しpmdval_t型の値を取得する
- 取得した値をpmd_t型の値に変換して返す
- CONFIG_PARAVIRTと__PAGETABLE_PMD_FOLDEDが未定義の場合
- native_make_pmd()でpmdval_t型の値をpmd_t型に変換して返す
- 上記以外の場合
- __pud()でvalをpud_t型に変換した値をpmd_t型に変換して返す
アドレッシング - native_make_pmd()
概要
pmdval_t型の値をpmd_t_型に変換する
詳細
pmdval_t型の値valを引数として受け取り、valを値とするpmd_t_型の値を返す
アドレッシング - pud_val()
概要
ページアッパーディレクトリの値を返す
詳細
pud_t型の値valを引数として受け取り、CONFIG_PARAVIRTと__PAGETABLE_PUD_FOLDED、CONFIG_PGTABLE_LEVELSの値によって以下のように処理が異なる
- CONFIG_PARAVIRTが有効でCONFIG_PGTABLE_LEVELSの値が4
- PVOP_CALLEEx()にvalが32bitの場合は引数を1つ、64bitモードの場合は第1引数valの下位32bitを、第2引数に上位32bitの2つの値を渡してpv_mmu_ops.pud_val*1を実行しpudval_t型の値を返す
- CONFIG_PARAVIRTが無効で__PAGETABLE_PUD_FOLDEDが有効
- native_pud_val()を実行しpudval_t型の値を返す
- それ以外
アドレッシング - native_pud_val()
概要
ページアッパーディレクトリのアドレスを返す
詳細
CONFIG_PGTABLE_LEVELSの値によって以下のように処理が異なる
- CONFIG_PGTABLE_LEVELSが3を超える場合
- pud_t型の値をpudval_t型に変換して返す
- それ以外
- native_pgd_val()でページグローバルディレクトリの値を取得して返す
- ページテーブルにページアッパーディレクトリが存在しないため、ページグローバルディレクトリと同じ値になる