执行x86 vmread指令时的段错误

时间:2018-05-24 08:33:42

标签: x86 virtualization xen

我正在尝试实现自己的vmread函数,该函数实现x86 vmread指令用于教育目的。为什么以下在xen hypervisor上给出了分段错误。

内核版本:4.9.0-4-amd64
xen版本:4.8.3-pre (preserve-AD)

vmread.h

int vmread(unsigned long long int, int*);

vmread.S

.intel_syntax noprefix
.section .text
.globl vmread
.type vmread, @function

vmread:
    vmread [rsi], rdi
    jbe __vmx_failure
    jmp __vmx_success

__vmx_failure:
    mov rax, 0x0
    ret

__vmx_success:
    mov rax, 0x1

testvmread.c

#include<stdio.h>
#include "vmread.h"
#include <stdint.h>
int main() {
        int value = 0;
        uint64_t addr = 0x00002804ULL;
        vmread(addr,    &value);
        printf("the value of GUEST_IA32_PAT is %d  \n", value);
        return 0;
    }

使用gcc testvmread.c vmread.S -o test

编译

0 个答案:

没有答案
相关问题