committed by
Norman Feske
parent
4c492a3be7
commit
8f28f884ee
85
repos/base-hw/include/spec/arm/cpu/vm_state_virtualization.h
Normal file
85
repos/base-hw/include/spec/arm/cpu/vm_state_virtualization.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* \brief CPU, PIC, and timer context of a virtual machine
|
||||
* \author Stefan Kalkowski
|
||||
* \date 2015-02-10
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2015-2017 Genode Labs GmbH
|
||||
*
|
||||
* This file is part of the Genode OS framework, which is distributed
|
||||
* under the terms of the GNU Affero General Public License version 3.
|
||||
*/
|
||||
|
||||
#ifndef _INCLUDE__SPEC__ARNDALE__VM_STATE_H_
|
||||
#define _INCLUDE__SPEC__ARNDALE__VM_STATE_H_
|
||||
|
||||
/* Genode includes */
|
||||
#include <cpu/cpu_state.h>
|
||||
|
||||
namespace Genode
|
||||
{
|
||||
/**
|
||||
* CPU context of a virtual machine
|
||||
*/
|
||||
struct Vm_state;
|
||||
}
|
||||
|
||||
struct Genode::Vm_state : Genode::Cpu_state_modes
|
||||
{
|
||||
Genode::uint64_t vttbr;
|
||||
Genode::uint32_t sctrl;
|
||||
Genode::uint32_t hsr;
|
||||
Genode::uint32_t hpfar;
|
||||
Genode::uint32_t hdfar;
|
||||
Genode::uint32_t hifar;
|
||||
Genode::uint32_t ttbcr;
|
||||
Genode::uint32_t ttbr0;
|
||||
Genode::uint32_t ttbr1;
|
||||
Genode::uint32_t prrr;
|
||||
Genode::uint32_t nmrr;
|
||||
Genode::uint32_t dacr;
|
||||
Genode::uint32_t dfsr;
|
||||
Genode::uint32_t ifsr;
|
||||
Genode::uint32_t adfsr;
|
||||
Genode::uint32_t aifsr;
|
||||
Genode::uint32_t dfar;
|
||||
Genode::uint32_t ifar;
|
||||
Genode::uint32_t cidr;
|
||||
Genode::uint32_t tls1;
|
||||
Genode::uint32_t tls2;
|
||||
Genode::uint32_t tls3;
|
||||
Genode::uint32_t cpacr;
|
||||
|
||||
/**
|
||||
* Fpu registers
|
||||
*/
|
||||
Genode::uint32_t fpscr;
|
||||
Genode::uint64_t d0_d31[32];
|
||||
|
||||
/**
|
||||
* Timer related registers
|
||||
*/
|
||||
|
||||
Genode::uint32_t timer_ctrl;
|
||||
Genode::uint32_t timer_val;
|
||||
bool timer_irq;
|
||||
|
||||
|
||||
/**
|
||||
* PIC related registers
|
||||
*/
|
||||
|
||||
enum { NR_IRQ = 4 };
|
||||
|
||||
Genode::uint32_t gic_hcr;
|
||||
Genode::uint32_t gic_vmcr;
|
||||
Genode::uint32_t gic_misr;
|
||||
Genode::uint32_t gic_apr;
|
||||
Genode::uint32_t gic_eisr;
|
||||
Genode::uint32_t gic_elrsr0;
|
||||
Genode::uint32_t gic_lr[4];
|
||||
unsigned gic_irq;
|
||||
};
|
||||
|
||||
#endif /* _INCLUDE__SPEC__ARNDALE__VM_STATE_H_ */
|
||||
@@ -14,7 +14,7 @@
|
||||
#ifndef _CORE__KERNEL__VM_H_
|
||||
#define _CORE__KERNEL__VM_H_
|
||||
|
||||
#include <cpu/vm_state.h>
|
||||
namespace Genode { class Vm_state; }
|
||||
|
||||
/* core includes */
|
||||
#include <kernel/cpu_context.h>
|
||||
|
||||
@@ -24,8 +24,7 @@ void Kernel::Thread::_call_new_vm()
|
||||
return;
|
||||
}
|
||||
|
||||
_call_new<Vm>((Genode::Cpu_state_modes*)user_arg_2(), context,
|
||||
(void*)user_arg_3());
|
||||
_call_new<Vm>((void*)user_arg_2(), context, (void*)user_arg_3());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
/* core includes */
|
||||
#include <kernel/cpu.h>
|
||||
#include <kernel/vm.h>
|
||||
#include <cpu/vm_state_trustzone.h>
|
||||
|
||||
using namespace Kernel;
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <base/log.h>
|
||||
#include <hw/assert.h>
|
||||
#include <cpu/vm_state_virtualization.h>
|
||||
|
||||
#include <platform_pd.h>
|
||||
#include <kernel/cpu.h>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include <platform_pd.h>
|
||||
#include <kernel/cpu.h>
|
||||
#include <kernel/vm.h>
|
||||
#include <cpu/cpu_state.h>
|
||||
#include <kernel/vm_state.h>
|
||||
#include <pic.h>
|
||||
|
||||
Kernel::Vm::Vm(void * const state, Kernel::Signal_context * const context,
|
||||
|
||||
@@ -16,8 +16,7 @@
|
||||
|
||||
namespace Genode
|
||||
{
|
||||
using Cpu_state_modes = Cpu_state;
|
||||
using Vm_state = Cpu_state;
|
||||
struct Vm_state : Cpu_state {};
|
||||
}
|
||||
|
||||
#endif /* _CORE__SPEC__X86_64__MUEN__VM_STATE_H_ */
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <dataspace_component.h>
|
||||
#include <object.h>
|
||||
#include <kernel/vm.h>
|
||||
#include <kernel/vm_state.h>
|
||||
|
||||
namespace Genode {
|
||||
class Vm_session_component;
|
||||
|
||||
Reference in New Issue
Block a user