mmu.h #define PTX(va) (((uint)(va) >> PTXSHIFT) & 0x3FF)

トップページ
jupiteroak.hatenablog.com


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

#define PTX(va)         (((uint)(va) >> PTXSHIFT) & 0x3FF)

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