L4Re Operating System Framework
Interface and Usage Documentation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
__vcpu-arm.h
1/*
2 * (c) 2017 Alexander Warg <alexander.warg@kernkonzept.com>
3 *
4 * License: see LICENSE.spdx (in this directory or the directories above)
5 */
6#pragma once
7
8typedef struct l4_arm_vcpu_e_info_t
9{
10 l4_uint8_t version; // must be 0
11 l4_uint8_t gic_version;
12 l4_uint8_t _rsvd0[2];
13 l4_uint32_t features;
14 l4_uint32_t _rsvd1[14];
15 l4_umword_t user[8];
16} l4_arm_vcpu_e_info_t;
17
18L4_INLINE void *l4_vcpu_e_ptr(void const *vcpu, unsigned id) L4_NOTHROW;
19
20enum L4_vcpu_e_consts
21{
22 L4_VCPU_E_NUM_LR = 4,
23};
24
25L4_INLINE l4_arm_vcpu_e_info_t const *
26l4_vcpu_e_info(void const *vcpu) L4_NOTHROW;
27
29l4_vcpu_e_info_user(void *vcpu) L4_NOTHROW;
30
32l4_vcpu_e_info_user(void *vcpu) L4_NOTHROW
33{
34 return ((l4_arm_vcpu_e_info_t *)l4_vcpu_e_info(vcpu))->user;
35}
36
37
46l4_vcpu_e_read_32(void const *vcpu, unsigned id) L4_NOTHROW;
47
49l4_vcpu_e_read_32(void const *vcpu, unsigned id) L4_NOTHROW
50{ return *(l4_uint32_t const *)l4_vcpu_e_ptr(vcpu, id); }
51
59L4_INLINE void
60l4_vcpu_e_write_32(void *vcpu, unsigned id, l4_uint32_t val) L4_NOTHROW;
61
62L4_INLINE void
63l4_vcpu_e_write_32(void *vcpu, unsigned id, l4_uint32_t val) L4_NOTHROW
64{ *((l4_uint32_t *)l4_vcpu_e_ptr(vcpu, + id)) = val; }
65
74l4_vcpu_e_read_64(void const *vcpu, unsigned id) L4_NOTHROW;
75
77l4_vcpu_e_read_64(void const *vcpu, unsigned id) L4_NOTHROW
78{ return *(l4_uint64_t const *)l4_vcpu_e_ptr(vcpu, id); }
79
87L4_INLINE void
88l4_vcpu_e_write_64(void *vcpu, unsigned id, l4_uint64_t val) L4_NOTHROW;
89
90L4_INLINE void
91l4_vcpu_e_write_64(void *vcpu, unsigned id, l4_uint64_t val) L4_NOTHROW
92{ *((l4_uint64_t *)l4_vcpu_e_ptr(vcpu, id)) = val; }
93
102l4_vcpu_e_read(void const *vcpu, unsigned id) L4_NOTHROW;
103
105l4_vcpu_e_read(void const *vcpu, unsigned id) L4_NOTHROW
106{ return *(l4_umword_t const *)l4_vcpu_e_ptr(vcpu, id); }
107
115L4_INLINE void
116l4_vcpu_e_write(void *vcpu, unsigned id, l4_umword_t val) L4_NOTHROW;
117
118L4_INLINE void
119l4_vcpu_e_write(void *vcpu, unsigned id, l4_umword_t val) L4_NOTHROW
120{ *((l4_umword_t *)l4_vcpu_e_ptr(vcpu, id)) = val; }
unsigned long l4_umword_t
Unsigned machine word.
Definition l4int.h:40
unsigned char l4_uint8_t
Unsigned 8bit value.
Definition l4int.h:25
unsigned int l4_uint32_t
Unsigned 32bit value.
Definition l4int.h:29
unsigned long long l4_uint64_t
Unsigned 64bit value.
Definition l4int.h:31
#define L4_NOTHROW
Mark a function declaration and definition as never throwing an exception.
Definition compiler.h:159
#define L4_INLINE
L4 Inline function attribute.
Definition compiler.h:51