Skip to content

Commit 4b0e874

Browse files
committed
Add tracking issue for ARM barrier intrinsics
1 parent 5f8416f commit 4b0e874

File tree

6 files changed

+29
-25
lines changed

6 files changed

+29
-25
lines changed

crates/core_arch/src/arm_shared/barrier/common.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
33
/// Full system is the required shareability domain, reads and writes are the
44
/// required access types
5+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
56
pub struct SY;
67

78
dmb_dsb!(SY);
89

10+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
911
impl super::super::sealed::Isb for SY {
1012
#[inline(always)]
1113
unsafe fn __isb(&self) {

crates/core_arch/src/arm_shared/barrier/cp15.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ use crate::arch::asm;
55

66
/// Full system is the required shareability domain, reads and writes are the
77
/// required access types
8+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
89
pub struct SY;
910

11+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
1012
impl super::super::sealed::Dmb for SY {
1113
#[inline(always)]
1214
unsafe fn __dmb(&self) {
@@ -18,6 +20,7 @@ impl super::super::sealed::Dmb for SY {
1820
}
1921
}
2022

23+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
2124
impl super::super::sealed::Dsb for SY {
2225
#[inline(always)]
2326
unsafe fn __dsb(&self) {
@@ -29,6 +32,7 @@ impl super::super::sealed::Dsb for SY {
2932
}
3033
}
3134

35+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
3236
impl super::super::sealed::Isb for SY {
3337
#[inline(always)]
3438
unsafe fn __isb(&self) {

crates/core_arch/src/arm_shared/barrier/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@ pub use self::cp15::*;
2626
))]
2727
macro_rules! dmb_dsb {
2828
($A:ident) => {
29+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
2930
impl super::super::sealed::Dmb for $A {
3031
#[inline(always)]
3132
unsafe fn __dmb(&self) {
3233
super::dmb(super::arg::$A)
3334
}
3435
}
3536

37+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
3638
impl super::super::sealed::Dsb for $A {
3739
#[inline(always)]
3840
unsafe fn __dsb(&self) {
@@ -54,18 +56,21 @@ mod common;
5456
target_feature = "v7",
5557
target_feature = "mclass"
5658
))]
59+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
5760
pub use self::common::*;
5861

5962
#[cfg(any(target_arch = "aarch64", target_feature = "v7",))]
6063
mod not_mclass;
6164

6265
#[cfg(any(target_arch = "aarch64", target_feature = "v7",))]
66+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
6367
pub use self::not_mclass::*;
6468

6569
#[cfg(target_arch = "aarch64")]
6670
mod v8;
6771

6872
#[cfg(target_arch = "aarch64")]
73+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
6974
pub use self::v8::*;
7075

7176
/// Generates a DMB (data memory barrier) instruction or equivalent CP15 instruction.
@@ -79,6 +84,7 @@ pub use self::v8::*;
7984
///
8085
/// The __dmb() intrinsic also acts as a compiler memory barrier of the appropriate type.
8186
#[inline(always)]
87+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
8288
pub unsafe fn __dmb<A>(arg: A)
8389
where
8490
A: super::sealed::Dmb,
@@ -94,6 +100,7 @@ where
94100
///
95101
/// The __dsb() intrinsic also acts as a compiler memory barrier of the appropriate type.
96102
#[inline(always)]
103+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
97104
pub unsafe fn __dsb<A>(arg: A)
98105
where
99106
A: super::sealed::Dsb,
@@ -115,6 +122,7 @@ where
115122
/// The only supported argument for the __isb() intrinsic is 15, corresponding to the SY (full
116123
/// system) scope of the ISB instruction.
117124
#[inline(always)]
125+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
118126
pub unsafe fn __isb<A>(arg: A)
119127
where
120128
A: super::sealed::Isb,

crates/core_arch/src/arm_shared/barrier/not_mclass.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,49 @@
22
33
/// Full system is the required shareability domain, writes are the required
44
/// access type
5+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
56
pub struct ST;
67

78
dmb_dsb!(ST);
89

910
/// Inner Shareable is the required shareability domain, reads and writes are
1011
/// the required access types
12+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
1113
pub struct ISH;
1214

1315
dmb_dsb!(ISH);
1416

1517
/// Inner Shareable is the required shareability domain, writes are the required
1618
/// access type
19+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
1720
pub struct ISHST;
1821

1922
dmb_dsb!(ISHST);
2023

2124
/// Non-shareable is the required shareability domain, reads and writes are the
2225
/// required access types
26+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
2327
pub struct NSH;
2428

2529
dmb_dsb!(NSH);
2630

2731
/// Non-shareable is the required shareability domain, writes are the required
2832
/// access type
33+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
2934
pub struct NSHST;
3035

3136
dmb_dsb!(NSHST);
3237

3338
/// Outer Shareable is the required shareability domain, reads and writes are
3439
/// the required access types
40+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
3541
pub struct OSH;
3642

3743
dmb_dsb!(OSH);
3844

3945
/// Outer Shareable is the required shareability domain, writes are the required
4046
/// access type
47+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
4148
pub struct OSHST;
4249

4350
dmb_dsb!(OSHST);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
/// Full system is the required shareability domain, reads are the required
22
/// access type
3+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
34
pub struct LD;
45

56
dmb_dsb!(LD);
67

78
/// Inner Shareable is the required shareability domain, reads are the required
89
/// access type
10+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
911
pub struct ISHLD;
1012

1113
dmb_dsb!(ISHLD);
1214

1315
/// Non-shareable is the required shareability domain, reads are the required
1416
/// access type
17+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
1518
pub struct NSHLD;
1619

1720
dmb_dsb!(NSHLD);
1821

1922
/// Outer Shareable is the required shareability domain, reads are the required
2023
/// access type
24+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
2125
pub struct OSHLD;
2226

2327
dmb_dsb!(OSHLD);

crates/core_arch/src/arm_shared/mod.rs

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
// 8, 7 and 6-M are supported via dedicated instructions like DMB. All other arches are supported
5454
// via CP15 instructions. See Section 10.1 of ACLE
5555
mod barrier;
56-
56+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
5757
pub use self::barrier::*;
5858

5959
mod hints;
@@ -102,39 +102,18 @@ pub use self::neon::*;
102102
pub(crate) mod test_support;
103103

104104
mod sealed {
105+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
105106
pub trait Dmb {
106107
unsafe fn __dmb(&self);
107108
}
108109

110+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
109111
pub trait Dsb {
110112
unsafe fn __dsb(&self);
111113
}
112114

115+
#[unstable(feature = "stdarch_arm_barrier", issue = "117219")]
113116
pub trait Isb {
114117
unsafe fn __isb(&self);
115118
}
116-
117-
pub trait Rsr {
118-
unsafe fn __rsr(&self) -> u32;
119-
}
120-
121-
pub trait Rsr64 {
122-
unsafe fn __rsr64(&self) -> u64;
123-
}
124-
125-
pub trait Rsrp {
126-
unsafe fn __rsrp(&self) -> *const u8;
127-
}
128-
129-
pub trait Wsr {
130-
unsafe fn __wsr(&self, value: u32);
131-
}
132-
133-
pub trait Wsr64 {
134-
unsafe fn __wsr64(&self, value: u64);
135-
}
136-
137-
pub trait Wsrp {
138-
unsafe fn __wsrp(&self, value: *const u8);
139-
}
140119
}

0 commit comments

Comments
 (0)