hermit/arch/
mod.rs

1//! Architecture-specific architecture abstraction.
2
3cfg_if::cfg_if! {
4	if #[cfg(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::processor::set_oneshot_timer;
17		pub(crate) use self::aarch64::kernel::scheduler;
18		#[cfg(not(feature = "common-os"))]
19		pub(crate) use self::aarch64::kernel::switch;
20		#[cfg(feature = "smp")]
21		pub(crate) use self::aarch64::kernel::application_processor_init;
22		pub(crate) use self::aarch64::kernel::{
23			get_processor_count,
24		};
25		pub use self::aarch64::mm::paging::{BasePageSize, PageSize};
26	} else if #[cfg(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::scheduler;
43		pub(crate) use self::x86_64::kernel::switch;
44		#[cfg(target_os = "none")]
45		pub(crate) use self::x86_64::kernel::boot_processor_init;
46		pub(crate) use self::x86_64::kernel::{
47			get_processor_count,
48		};
49		pub use self::x86_64::mm::paging::{BasePageSize, PageSize};
50		#[cfg(feature = "common-os")]
51		pub use self::x86_64::mm::create_new_root_page_table;
52		#[cfg(feature = "common-os")]
53		pub use self::x86_64::kernel::{load_application, jump_to_user_land};
54	} else if #[cfg(target_arch = "riscv64")] {
55		pub(crate) mod riscv64;
56		pub(crate) use self::riscv64::*;
57
58		#[cfg(feature = "smp")]
59		pub(crate) use self::riscv64::kernel::application_processor_init;
60		#[cfg(feature = "pci")]
61		pub(crate) use self::riscv64::kernel::pci;
62		pub(crate) use self::riscv64::kernel::processor::{self, set_oneshot_timer, wakeup_core};
63		pub(crate) use self::riscv64::kernel::{
64			boot_processor_init,
65			core_local,
66			get_processor_count,
67			interrupts,
68			scheduler,
69			switch,
70		};
71		pub use self::riscv64::mm::paging::{BasePageSize, PageSize};
72	}
73}