L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
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
14#include <l4/sys/err.h>
15#include <l4/sys/types.h>
16
22
27struct l4_vm_tz_state_mode
28{
29 l4_umword_t sp;
30 l4_umword_t lr;
31 l4_umword_t spsr;
32};
33
34struct l4_vm_tz_state_irq_inject
35{
36 l4_uint32_t group;
37 l4_uint32_t irqs[8];
38};
39
45{
46 l4_umword_t r[13]; // r0 - r12
47
48 l4_umword_t sp_usr;
49 l4_umword_t lr_usr;
50
51 struct l4_vm_tz_state_mode irq;
52
53 l4_umword_t r_fiq[5]; // r8 - r12
54 struct l4_vm_tz_state_mode fiq;
55 struct l4_vm_tz_state_mode abt;
56 struct l4_vm_tz_state_mode und;
57 struct l4_vm_tz_state_mode svc;
58
59 l4_umword_t pc;
60 l4_umword_t cpsr;
61
62 l4_umword_t pending_events;
63 l4_uint32_t cpacr;
64 l4_umword_t cp10_fpexc;
65
66 l4_umword_t pfs;
67 l4_umword_t pfa;
68 l4_umword_t exit_reason;
69
70 struct l4_vm_tz_state_irq_inject irq_inject;
71};
72
73enum L4_vm_exit_reason
74{
75 L4_vm_exit_reason_vmm_call = 1,
76 L4_vm_exit_reason_inst_abort = 2,
77 L4_vm_exit_reason_data_abort = 3,
78 L4_vm_exit_reason_irq = 4,
79 L4_vm_exit_reason_fiq = 5,
80 L4_vm_exit_reason_undef = 6,
81};
82
83L4_INLINE int
84l4_vm_tz_irq_inject(struct l4_vm_tz_state *state, unsigned irq);
85
86L4_INLINE int
87l4_vm_tz_irq_inject(struct l4_vm_tz_state *state, unsigned irq)
88{
89 if (irq > sizeof(state->irq_inject.irqs) * 8)
90 return -L4_EINVAL;
91
92 unsigned g = irq / 32;
93 state->irq_inject.group |= 1 << g;
94 state->irq_inject.irqs[g] |= 1 << (irq & 31);
95
96 return 0;
97}
Error codes.
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:47
#define L4_INLINE
L4 Inline function attribute.
Definition compiler.h:51
Common L4 ABI Data Types.
state structure for TrustZone VMs
Definition vm.h:45