2016-06-15 アドレッシング - __phys_addr_nodebug() address 概要 仮想アドレスを物理アドレスに変換する 詳細 物理アドレスを示す値xを引数として受け取り、CPUが32bitと64bitの場合で以下のように処理が異なる 32bitの場合 xからPAGE_OFFSET*1を引いた値を返す 64bitの場合 xから__START_KERNEL_map*2を引いた値を算出する 算出した値が元の値より小さい(xがダイレクトマッピングされたカーネルアドレス空間を示している)場合は算出した値にphys_baseを加算した値を、それ以外の場合は元の値からPAGE_OFFSETを引いた値を返す *1:仮想アドレスへのオフセット値を示し、32bitの場合初期値は0、64bitの場合は0xffff880000000000となる *2:カーネルが配置される論理アドレスの開始アドレスを示し、有効な物理アドレスの最終番地まで2GBの地点