Pip
Architecture-dependent parts of Pip: MAL, IAL and boot
armv7/MAL/include/maldefines.h
Go to the documentation of this file.
1 /*******************************************************************************/
2 /* © Université de Lille, The Pip Development Team (2015-2021) */
3 /* */
4 /* This software is a computer program whose purpose is to run a minimal, */
5 /* hypervisor relying on proven properties such as memory isolation. */
6 /* */
7 /* This software is governed by the CeCILL license under French law and */
8 /* abiding by the rules of distribution of free software. You can use, */
9 /* modify and/ or redistribute the software under the terms of the CeCILL */
10 /* license as circulated by CEA, CNRS and INRIA at the following URL */
11 /* "http://www.cecill.info". */
12 /* */
13 /* As a counterpart to the access to the source code and rights to copy, */
14 /* modify and redistribute granted by the license, users are provided only */
15 /* with a limited warranty and the software's author, the holder of the */
16 /* economic rights, and the successive licensors have only limited */
17 /* liability. */
18 /* */
19 /* In this respect, the user's attention is drawn to the risks associated */
20 /* with loading, using, modifying and/or developing or reproducing the */
21 /* software by the user in light of its specific status of free software, */
22 /* that may mean that it is complicated to manipulate, and that also */
23 /* therefore means that it is reserved for developers and experienced */
24 /* professionals having in-depth computer knowledge. Users are therefore */
25 /* encouraged to load and test the software's suitability as regards their */
26 /* requirements in conditions enabling the security of their systems and/or */
27 /* data to be ensured and, more generally, to use and operate it in the */
28 /* same conditions as regards security. */
29 /* */
30 /* The fact that you are presently reading this means that you have had */
31 /* knowledge of the CeCILL license and that you accept its terms. */
32 /*******************************************************************************/
33 
39 #ifndef __MAL_DEFINES__
40 #define __MAL_DEFINES__
41 
42 #include "context.h"
43 #include "pip_interrupt_calls.h"
44 #include <stdint.h>
45 
46 /* bool */
47 typedef uint32_t bool;
48 
49 #define true 1
50 #define false 0
51 
52 /* Page */
53 typedef uintptr_t page;
54 
55 #define getDefaultPage defaultAddr
56 #define Page_eqb eqb
57 
58 /* VAddr */
59 typedef uintptr_t vaddr;
60 
61 #define getDefaultVAddr defaultAddr
62 #define VAddr_eqbList addressEquals
63 #define beqVAddr addressEquals
64 
65 extern vaddr getVidtVAddr(void);
66 
67 /* Index */
68 typedef uint32_t index;
69 
70 #define getSh1idx indexSh1
71 #define getSh2idx indexSh2
72 #define getSh3idx indexSh3
73 #define getPRidx zero
74 #define getPDidx indexPD
75 #define getPPRidx PPRidx
76 #define getNbLevel getNbIndex
77 #define getKidx kernelIndex
78 
79 #define Index_succ inc
80 #define Index_pred sub
81 #define Index_eqb eqb
82 #define Index_zero zero
83 #define Index_const3() 3
84 #define Index_geb geb
85 #define Index_gtb gtb
86 #define Index_leb leb
87 #define Index_ltb ltb
88 #define PreIndex_ltb ltb
89 #define PreLevel_eqb eqb
90 #define PreLevel_pred sub
91 
92 /* Level */
93 typedef uint32_t level;
94 
95 #define fstLevel 0
96 #define fstPreLevel 0
97 #define tableSize getTableSize()
98 
99 #define Level_succ inc
100 #define Level_pred sub
101 #define Level_eqb eqb
102 #define Level_gtb gtb
103 
104 /* Count */
105 typedef uint32_t count;
106 
107 #define Count_succ inc
108 #define Count_geb geb
109 #define Count_zero zero
110 #define Count_mul3 mul3
111 
112 /* Miscellaneous */
113 #define writeVirEntry writePhysical
114 #define writePhyEntry writePhysicalWithLotsOfFlags
115 #define mapKernel writeKernelPhysicalEntry
116 #define readVirtual readPhysical
117 #define readVirtualUser readPhysical
118 #define readVirEntry readPhysicalNoFlags
119 #define readPhyEntry readPhysicalNoFlags
120 #define writeVirtual writePhysical
121 #define getMultiplexer getRootPartition
122 #define getStoreFetchIndex zero
123 #define fetchVirtual readTableVirtual
124 
125 /* preVaddr */
126 typedef uint32_t preVaddr;
127 typedef uint32_t preIndex;
128 typedef uint32_t preLevel;
129 
130 /* Astucious defines */
131 #define preVaddrToVaddr(x) x
132 #define succNbLevel (nbLevel + 1)
133 #define maxprelevel (nbLevel - 1)
134 #define coq_N 1024*1024
135 
136 /* boolVAddr */
137 typedef uint32_t boolvaddr;
138 
139 /* FIXME */
140 #define maxFreeLL() ((tableSize / 2) - 2)
141 
142 typedef uint32_t interruptMask;
143 typedef enum yield_checks_e {
154 } yield_checks;
155 #define contextAddr user_ctx_t *
156 
157 #define contextSizeMinusOne (sizeof(user_ctx_t) - 1)
158 
159 #define userValue uint32_t
160 #define setInterruptMask kernel_set_int_state
161 
162 #endif
uint32_t level
Definition: armv7/MAL/include/maldefines.h:93
enum yield_checks_e yield_checks
Definition: armv7/MAL/include/maldefines.h:145
uint32_t index
Definition: armv7/MAL/include/maldefines.h:68
uintptr_t vaddr
Definition: armv7/MAL/include/maldefines.h:59
uint32_t preIndex
Definition: armv7/MAL/include/maldefines.h:127
uint32_t preLevel
Definition: armv7/MAL/include/maldefines.h:128
uint32_t bool
Definition: armv7/MAL/include/maldefines.h:47
uint32_t count
Definition: armv7/MAL/include/maldefines.h:105
Definition: armv7/MAL/include/maldefines.h:153
Definition: armv7/MAL/include/maldefines.h:149
Definition: armv7/MAL/include/maldefines.h:150
yield_checks_e
Definition: armv7/MAL/include/maldefines.h:143
Definition: armv7/MAL/include/maldefines.h:151
Definition: armv7/MAL/include/maldefines.h:152
uint32_t boolvaddr
Definition: armv7/MAL/include/maldefines.h:137
vaddr getVidtVAddr(void)
Definition: armv7/MAL/mal.c:393
Definition: armv7/MAL/include/maldefines.h:148
Definition: armv7/MAL/include/maldefines.h:144
Definition: armv7/MAL/include/maldefines.h:146
uint32_t interruptMask
Definition: armv7/MAL/include/maldefines.h:142
uint32_t preVaddr
Definition: armv7/MAL/include/maldefines.h:126
uintptr_t page
Definition: armv7/MAL/include/maldefines.h:53
Definition: armv7/MAL/include/maldefines.h:147