mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-08-27 17:06:01 +00:00
Dump registers after KVM_RUN returns
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
This commit is contained in:
committed by
Will Deacon
parent
696a1b0a7d
commit
7118d2cabe
@@ -141,6 +141,35 @@ static void kvm__run(struct kvm *self)
|
||||
die_perror("KVM_RUN ioctl");
|
||||
}
|
||||
|
||||
static void kvm__show_registers(struct kvm *self)
|
||||
{
|
||||
unsigned long rax, rbx, rcx;
|
||||
unsigned long rdx, rsi, rdi;
|
||||
unsigned long rbp, r8, r9;
|
||||
unsigned long r10, r11, r12;
|
||||
unsigned long r13, r14, r15;
|
||||
unsigned long rip, rsp;
|
||||
struct kvm_regs regs;
|
||||
|
||||
if (ioctl(self->vcpu_fd, KVM_GET_REGS, ®s) < 0)
|
||||
die("KVM_GET_REGS failed");
|
||||
|
||||
rip = regs.rip; rsp = regs.rsp;
|
||||
rax = regs.rax; rbx = regs.rbx; rcx = regs.rcx;
|
||||
rdx = regs.rdx; rsi = regs.rsi; rdi = regs.rdi;
|
||||
rbp = regs.rbp; r8 = regs.r8; r9 = regs.r9;
|
||||
r10 = regs.r10; r11 = regs.r11; r12 = regs.r12;
|
||||
r13 = regs.r13; r14 = regs.r14; r15 = regs.r15;
|
||||
|
||||
printf("Registers:\n");
|
||||
printf(" rip: %016lx rsp: %016lx\n", rip, rsp);
|
||||
printf(" rax: %016lx ebx: %016lx ecx: %016lx\n", rax, rbx, rcx);
|
||||
printf(" rdx: %016lx rsi: %016lx rdi: %016lx\n", rdx, rsi, rdi);
|
||||
printf(" rbp: %016lx r8: %016lx r9: %016lx\n", rbp, r8, r9);
|
||||
printf(" r10: %016lx r11: %016lx r12: %016lx\n", r10, r11, r12);
|
||||
printf(" r13: %016lx r14: %016lx r15: %016lx\n", r13, r14, r15);
|
||||
}
|
||||
|
||||
static inline void *guest_addr_to_host(struct kvm *self, unsigned long offset)
|
||||
{
|
||||
return self->ram_start + offset;
|
||||
@@ -235,5 +264,7 @@ int main(int argc, char *argv[])
|
||||
fprintf(stderr, "KVM exit reason: %" PRIu32 " (\"%s\")\n",
|
||||
kvm->kvm_run->exit_reason, exit_reasons[kvm->kvm_run->exit_reason]);
|
||||
|
||||
kvm__show_registers(kvm);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user