x86.h static inline void lcr3(uint val)
トップページ
jupiteroak.hatenablog.com
x86.h
https://github.com/mit-pdos/xv6-public/blob/master/x86.h#L141
static inline void lcr3(uint val) { asm volatile("movl %0,%%cr3" : : "r" (val)); }
lcr3関数は、引数valで指定されたページディレクトリの先頭物理アドレスをCR3に設定します。
引数 uint val
ページディレクトリの先頭物理アドレスです。
処理の内容
インラインアセンブラ
asm volatile("movl %0,%%cr3" : : "r" (val));
関数内のインラインアセンブラを解釈すると以下のようになります。
アセンブリ言語命令
movl %レジスタ, %CR3
インラインアセンブラの命令を実行する前の状態
・eax,ebx,ecx,edx,esi,ediレジスタのいずれか(入力レジスタのリストにrで表記されている)
引数valの値が設定されています。