L4Re Operating System Framework
Interface and Usage Documentation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
vm.h
Go to the documentation of this file.
1
5/*
6 * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
7 * Torsten Frenzel <frenzel@os.inf.tu-dresden.de>
8 * economic rights: Technische Universität Dresden (Germany)
9 *
10 * License: see LICENSE.spdx (in this directory or the directories above)
11 */
12#pragma once
13
24struct l4_vm_tz_state_mode
25{
26 l4_umword_t sp;
27 l4_umword_t lr;
28 l4_umword_t spsr;
29};
30
31struct l4_vm_tz_state_irq_inject
32{
33 l4_uint32_t group;
34 l4_uint32_t irqs[8];
35};
36
42{
43 l4_umword_t r[13]; // r0 - r12
44
45 l4_umword_t sp_usr;
46 l4_umword_t lr_usr;
47
48 struct l4_vm_tz_state_mode irq;
49
50 l4_umword_t r_fiq[5]; // r8 - r12
51 struct l4_vm_tz_state_mode fiq;
52 struct l4_vm_tz_state_mode abt;
53 struct l4_vm_tz_state_mode und;
54 struct l4_vm_tz_state_mode svc;
55
56 l4_umword_t pc;
57 l4_umword_t cpsr;
58
59 l4_umword_t pending_events;
60 l4_uint32_t cpacr;
61 l4_umword_t cp10_fpexc;
62
63 l4_umword_t pfs;
64 l4_umword_t pfa;
65 l4_umword_t exit_reason;
66
67 struct l4_vm_tz_state_irq_inject irq_inject;
68};
69
70enum L4_vm_exit_reason
71{
72 L4_vm_exit_reason_vmm_call = 1,
73 L4_vm_exit_reason_inst_abort = 2,
74 L4_vm_exit_reason_data_abort = 3,
75 L4_vm_exit_reason_irq = 4,
76 L4_vm_exit_reason_fiq = 5,
77 L4_vm_exit_reason_undef = 6,
78};
79
80L4_INLINE int
81l4_vm_tz_irq_inject(struct l4_vm_tz_state *state, unsigned irq);
82
83L4_INLINE int
84l4_vm_tz_irq_inject(struct l4_vm_tz_state *state, unsigned irq)
85{
86 if (irq > sizeof(state->irq_inject.irqs) * 8)
87 return -L4_EINVAL;
88
89 unsigned g = irq / 32;
90 state->irq_inject.group |= 1 << g;
91 state->irq_inject.irqs[g] |= 1 << (irq & 31);
92
93 return 0;
94}
unsigned long l4_umword_t
Unsigned machine word.
Definition l4int.h:40
unsigned int l4_uint32_t
Unsigned 32bit value.
Definition l4int.h:29
@ L4_EINVAL
Invalid argument.
Definition err.h:46
#define L4_INLINE
L4 Inline function attribute.
Definition compiler.h:51
state structure for TrustZone VMs
Definition vm.h:42