sel4/arch/arm/
mod.rs
1use crate::{const_helpers::u32_into_usize, sys};
8
9mod arch;
10mod invocations;
11mod object;
12mod vm_attributes;
13mod vspace;
14
15pub(crate) mod fault;
16
17pub(crate) mod top_level {
18 pub use super::{
19 arch::top_level::*,
20 object::{ObjectBlueprintArch, ObjectBlueprintArm, ObjectTypeArch, ObjectTypeArm},
21 vm_attributes::VmAttributes,
22 vspace::{FrameObjectType, TranslationTableObjectType},
23 NUM_FAST_MESSAGE_REGISTERS,
24 };
25}
26
27pub(crate) use vspace::vspace_levels;
28
29pub const NUM_FAST_MESSAGE_REGISTERS: usize = u32_into_usize(sys::seL4_FastMessageRegisters);
31
32pub(crate) mod cap_type_arch {
33 use crate::{declare_cap_type_for_object_of_fixed_size, sel4_cfg};
34
35 #[sel4_cfg(ARM_HYPERVISOR_SUPPORT)]
36 declare_cap_type_for_object_of_fixed_size! {
37 VCpu { ObjectTypeArch, ObjectBlueprintArch }
39 }
40
41 declare_cap_type_for_object_of_fixed_size! {
42 SmallPage { ObjectTypeArch, ObjectBlueprintArch }
44 }
45
46 declare_cap_type_for_object_of_fixed_size! {
47 LargePage { ObjectTypeArch, ObjectBlueprintArch }
49 }
50
51 #[sel4_cfg(ARCH_AARCH64)]
52 declare_cap_type_for_object_of_fixed_size! {
53 HugePage { ObjectTypeSeL4Arch, ObjectBlueprintSeL4Arch }
55 }
56
57 #[sel4_cfg(ARCH_AARCH32)]
58 declare_cap_type_for_object_of_fixed_size! {
59 Section { ObjectTypeSeL4Arch, ObjectBlueprintSeL4Arch }
61 }
62
63 #[sel4_cfg(ARCH_AARCH64)]
64 declare_cap_type_for_object_of_fixed_size! {
65 VSpace { ObjectTypeSeL4Arch, ObjectBlueprintSeL4Arch }
67 }
68
69 #[sel4_cfg(ARCH_AARCH32)]
70 declare_cap_type_for_object_of_fixed_size! {
71 PD { ObjectTypeSeL4Arch, ObjectBlueprintSeL4Arch }
73 }
74
75 declare_cap_type_for_object_of_fixed_size! {
76 PT { ObjectTypeArch, ObjectBlueprintArch }
78 }
79
80 pub type Granule = SmallPage;
82
83 #[sel4_cfg(ARCH_AARCH32)]
84 pub type VSpace = PD;
86}
87
88pub(crate) mod cap_arch {
89 use crate::{declare_cap_alias, sel4_cfg};
90
91 #[sel4_cfg(ARM_HYPERVISOR_SUPPORT)]
92 declare_cap_alias!(VCpu);
93
94 declare_cap_alias!(SmallPage);
95 declare_cap_alias!(LargePage);
96
97 #[sel4_cfg(ARCH_AARCH64)]
98 declare_cap_alias!(HugePage);
99
100 #[sel4_cfg(ARCH_AARCH32)]
101 declare_cap_alias!(PD);
102
103 declare_cap_alias!(PT);
104}