#include "libcflat.h" #define KVM_HYPERCALL_INTEL ".byte 0x0f,0x01,0xc1" #define KVM_HYPERCALL_AMD ".byte 0x0f,0x01,0xd9" static inline long kvm_hypercall0_intel(unsigned int nr) { long ret; asm volatile(KVM_HYPERCALL_INTEL : "=a"(ret) : "a"(nr)); return ret; } static inline long kvm_hypercall0_amd(unsigned int nr) { long ret; asm volatile(KVM_HYPERCALL_AMD : "=a"(ret) : "a"(nr)); return ret; } int main(int ac, char **av) { kvm_hypercall0_intel(-1u); printf("Hypercall via VMCALL: OK\n"); kvm_hypercall0_amd(-1u); printf("Hypercall via VMMCALL: OK\n"); return 0; }