mmu.h #define PDX(va) (((uint)(va) >> PDXSHIFT) & 0x3FF)

トップページ
jupiteroak.hatenablog.com


mmu.h
https://github.com/mit-pdos/xv6-public/blob/master/mmu.h#L74

#define PDX(va)         (((uint)(va) >> PDXSHIFT) & 0x3FF)

PDXマクロは、仮想アドレスva(32bit)から、その仮想アドレスに対応しているPDE(ページディレクトリエントリ)を指定するインデックス値を算出します。仮想アドレスva(32bit)を22bit右シフト演算し(#define PDXSHIFT 22)、0x3FFでマスク処理することにより、仮想アドレスvaのbit31-22の値を取りだしています。この仮想アドレスvaのbit31-22の値(10bit)が、そのままPDEを指定するインデックス値となります。