Skip to main content

hermit/arch/
mod.rs

1//! Architecture-specific architecture abstraction.
2
3cfg_select! {
4	target_arch = "aarch64" => {
5		pub(crate) mod aarch64;
6		pub(crate) use self::aarch64::*;
7
8		#[cfg(target_os = "none")]
9		pub(crate) use self::aarch64::kernel::boot_processor_init;
10		pub(crate) use self::aarch64::kernel::core_local;
11		pub(crate) use self::aarch64::kernel::interrupts;
12		pub(crate) use self::aarch64::kernel::interrupts::wakeup_core;
13		#[cfg(feature = "pci")]
14		pub(crate) use self::aarch64::kernel::pci;
15		pub(crate) use self::aarch64::kernel::processor;
16		pub(crate) use self::aarch64::kernel::serial::SerialDevice;
17		pub(crate) use self::aarch64::kernel::processor::set_oneshot_timer;
18		pub(crate) use self::aarch64::kernel::scheduler;
19		#[cfg(feature = "smp")]
20		pub(crate) use self::aarch64::kernel::application_processor_init;
21		pub(crate) use self::aarch64::kernel::{
22			get_processor_count,
23		};
24		pub use self::aarch64::mm::paging::{BasePageSize, PageSize};
25	}
26	target_arch = "x86_64" => {
27		pub(crate) mod x86_64;
28		pub(crate) use self::x86_64::*;
29
30		pub(crate) use self::x86_64::kernel::apic::{
31			set_oneshot_timer,
32			wakeup_core,
33		};
34		#[cfg(all(target_os = "none", feature = "smp"))]
35		pub(crate) use self::x86_64::kernel::application_processor_init;
36		pub(crate) use self::x86_64::kernel::core_local;
37		pub(crate) use self::x86_64::kernel::gdt::set_current_kernel_stack;
38		pub(crate) use self::x86_64::kernel::interrupts;
39		#[cfg(feature = "pci")]
40		pub(crate) use self::x86_64::kernel::pci;
41		pub(crate) use self::x86_64::kernel::processor;
42		pub(crate) use self::x86_64::kernel::serial::SerialDevice;
43		pub(crate) use self::x86_64::kernel::scheduler;
44		pub(crate) use self::x86_64::kernel::switch;
45		#[cfg(target_os = "none")]
46		pub(crate) use self::x86_64::kernel::boot_processor_init;
47		pub(crate) use self::x86_64::kernel::{
48			get_processor_count,
49		};
50		pub use self::x86_64::mm::paging::{BasePageSize, PageSize};
51		#[cfg(feature = "common-os")]
52		pub use self::x86_64::mm::create_new_root_page_table;
53		#[cfg(feature = "common-os")]
54		pub use self::x86_64::kernel::{load_application, jump_to_user_land};
55	}
56	target_arch = "riscv64" => {
57		pub(crate) mod riscv64;
58		pub(crate) use self::riscv64::*;
59
60		#[cfg(feature = "smp")]
61		pub(crate) use self::riscv64::kernel::application_processor_init;
62		#[cfg(feature = "pci")]
63		pub(crate) use self::riscv64::kernel::pci;
64		pub(crate) use self::riscv64::kernel::processor::{self, set_oneshot_timer, wakeup_core};
65		pub(crate) use self::riscv64::kernel::serial::SerialDevice;
66		pub(crate) use self::riscv64::kernel::{
67			boot_processor_init,
68			core_local,
69			get_processor_count,
70			interrupts,
71			scheduler,
72			switch,
73		};
74		pub use self::riscv64::mm::paging::{BasePageSize, PageSize};
75	}
76}