1pub mod barrier;
12
13#[cfg(feature = "nightly")]
14pub mod random;
15
16#[inline(always)]
18pub fn nop() {
19 #[cfg(target_arch = "aarch64")]
20 unsafe {
21 core::arch::asm!("nop", options(nomem, nostack))
22 }
23
24 #[cfg(not(target_arch = "aarch64"))]
25 unimplemented!()
26}
27
28#[inline(always)]
32pub fn wfi() {
33 #[cfg(target_arch = "aarch64")]
34 unsafe {
35 core::arch::asm!("wfi", options(nomem, nostack))
36 }
37
38 #[cfg(not(target_arch = "aarch64"))]
39 unimplemented!()
40}
41
42#[inline(always)]
46pub fn wfe() {
47 #[cfg(target_arch = "aarch64")]
48 unsafe {
49 core::arch::asm!("wfe", options(nomem, nostack))
50 }
51
52 #[cfg(not(target_arch = "aarch64"))]
53 unimplemented!()
54}
55
56#[inline(always)]
62pub fn sevl() {
63 #[cfg(target_arch = "aarch64")]
64 unsafe {
65 core::arch::asm!("sevl", options(nomem, nostack))
66 }
67
68 #[cfg(not(target_arch = "aarch64"))]
69 unimplemented!()
70}
71
72#[inline(always)]
78pub fn sev() {
79 #[cfg(target_arch = "aarch64")]
80 unsafe {
81 core::arch::asm!("sev", options(nomem, nostack))
82 }
83
84 #[cfg(not(target_arch = "aarch64"))]
85 unimplemented!()
86}
87
88#[inline(always)]
92pub fn eret() -> ! {
93 #[cfg(target_arch = "aarch64")]
94 unsafe {
95 core::arch::asm!("eret", options(nomem, nostack));
96 core::hint::unreachable_unchecked()
97 }
98
99 #[cfg(not(target_arch = "aarch64"))]
100 unimplemented!()
101}
102
103#[inline(always)]
107pub fn ret() -> ! {
108 #[cfg(target_arch = "aarch64")]
109 unsafe {
110 core::arch::asm!("ret", options(nomem, nostack));
111 core::hint::unreachable_unchecked()
112 }
113
114 #[cfg(not(target_arch = "aarch64"))]
115 unimplemented!()
116}