80 lines
1.6 KiB
C
80 lines
1.6 KiB
C
/*
|
|
* \brief Muen subject state
|
|
* \author Adrian-Ken Rueegsegger
|
|
* \author Reto Buerki
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2015-2017 Genode Labs GmbH
|
|
*
|
|
* This file is distributed under the terms of the GNU General Public License
|
|
* version 2.
|
|
*/
|
|
|
|
#ifndef _VIRTUALBOX__SPEC__MUEN__VCPU_H_
|
|
#define _VIRTUALBOX__SPEC__MUEN__VCPU_H_
|
|
|
|
#include <base/stdint.h>
|
|
|
|
struct Cpu_registers
|
|
{
|
|
Genode::uint64_t Cr2;
|
|
Genode::uint64_t Rax;
|
|
Genode::uint64_t Rbx;
|
|
Genode::uint64_t Rcx;
|
|
Genode::uint64_t Rdx;
|
|
Genode::uint64_t Rdi;
|
|
Genode::uint64_t Rsi;
|
|
Genode::uint64_t Rbp;
|
|
Genode::uint64_t R08;
|
|
Genode::uint64_t R09;
|
|
Genode::uint64_t R10;
|
|
Genode::uint64_t R11;
|
|
Genode::uint64_t R12;
|
|
Genode::uint64_t R13;
|
|
Genode::uint64_t R14;
|
|
Genode::uint64_t R15;
|
|
} __attribute__((packed));
|
|
|
|
struct Segment
|
|
{
|
|
Genode::uint64_t sel;
|
|
Genode::uint64_t base;
|
|
Genode::uint32_t limit;
|
|
Genode::uint32_t access;
|
|
} __attribute__((packed));
|
|
|
|
struct Subject_state
|
|
{
|
|
struct Cpu_registers Regs;
|
|
Genode::uint32_t Exit_reason;
|
|
Genode::uint32_t Intr_state;
|
|
Genode::uint32_t Sysenter_cs;
|
|
Genode::uint64_t Exit_qualification;
|
|
Genode::uint64_t Guest_phys_addr;
|
|
Genode::uint64_t Instruction_len;
|
|
Genode::uint64_t Rip;
|
|
Genode::uint64_t Rsp;
|
|
Genode::uint64_t Cr0;
|
|
Genode::uint64_t Shadow_cr0;
|
|
Genode::uint64_t Cr3;
|
|
Genode::uint64_t Cr4;
|
|
Genode::uint64_t Shadow_cr4;
|
|
Genode::uint64_t Rflags;
|
|
Genode::uint64_t Ia32_efer;
|
|
Genode::uint64_t Sysenter_esp;
|
|
Genode::uint64_t Sysenter_eip;
|
|
Segment cs;
|
|
Segment ss;
|
|
Segment ds;
|
|
Segment es;
|
|
Segment fs;
|
|
Segment gs;
|
|
Segment tr;
|
|
Segment ldtr;
|
|
Segment gdtr;
|
|
Segment idtr;
|
|
};
|
|
|
|
#endif /* _VIRTUALBOX__SPEC__MUEN__VCPU_H_ */
|