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を指定するインデックス値となります。