2013年2月3日日曜日

sysenter命令実行時にEIPに格納されるアドレス


  • 32bit
    • ia32_sysenter_eip msr
  • 64bit
    • ia32_lstar msr
ia32_lstar msrには、カノニカルアドレスが格納されている必要がある。msrの書き込みと読み込みは、特権レベル0またはリアルモードで実行する。以下の場合は、一般保護例外が発生する。

  • 特権レベルが0でない
  • ecxが予約された値または無効な値
  • If the value in EDX:EAX sets bits that are reserved in the MSR specified by ECX.(どう翻訳すれば良いのか。)
  • msrへの代入元レジスタのアドレスがカノニカルでなく、かつ、ecxが以下を示す値を格納している場合
    • ia32_ds_area
    • ia32_fs_base
    • ia32_gs_base
    • ia32_kernel_gs_base
    • ia32_lstar
    • ia32_sysenter_eip
    • ia32_sysenter_esp
Linuxだと、wrmsrやrdmsr命令に関しては、マクロが定義されている(LXR)。wrmsr_safeなども参考になる。

0 件のコメント:

コメントを投稿