linuxのメモ

Linux kernelの実装を解説していきます (対象ver 4.5)

準仮想化 - __PVOP_VCALLEESAVE()

概要

準仮想環境下で実行される命令の置き換え、及び実行するための命令を生成する

詳細

このマクロでは以下の引数を受け取る

そして、以下の引数を____PVOP_VCALL()に渡して実行し、準仮想環境下で実行される命令を生成する

  • op.func
  • CLBR_RET_REG
    • 以下に示す全てのレジスタを使用することを示す
      • 32bitモード : %eax%edx
      • 64bitモード : %rax
  • PVOP_VCALL_CLOBBERS
    • 出力引数として以下のレジスタを使用することを示す
      • 32bitモード : %eax%edx
      • 64bitモード : %eax
  • 破壊レジスタの指定は無し
  • pre
  • post
  • 可変長引数が存在する場合は、それらも引数として渡す