Skip to content

Commit 513e246

Browse files
committed
4-byte align the arrays in the unit tests
1 parent ea74f2a commit 513e246

File tree

2 files changed

+107
-37
lines changed

2 files changed

+107
-37
lines changed

tests/aeabi_memclr.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ extern crate utest_cortex_m_qemu;
1414
#[macro_use]
1515
extern crate utest_macros;
1616

17+
use core::mem;
18+
1719
macro_rules! panic {
1820
($($tt:tt)*) => {
1921
upanic!($($tt)*);
@@ -25,9 +27,25 @@ extern "C" {
2527
fn __aeabi_memset4(dest: *mut u8, n: usize, c: u32);
2628
}
2729

30+
struct Aligned {
31+
array: [u8; 8],
32+
_alignment: [u32; 0],
33+
}
34+
35+
impl Aligned {
36+
fn new() -> Self {
37+
Aligned {
38+
array: [0; 8],
39+
_alignment: [],
40+
}
41+
}
42+
}
43+
2844
#[test]
2945
fn memclr4() {
30-
let mut xs = [0u8; 8];
46+
let mut aligned = Aligned::new();;
47+
assert_eq!(mem::align_of_val(&aligned), 4);
48+
let xs = &mut aligned.array;
3149

3250
for n in 0..9 {
3351
unsafe {

tests/aeabi_memset.rs

Lines changed: 88 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ extern crate utest_cortex_m_qemu;
1414
#[macro_use]
1515
extern crate utest_macros;
1616

17+
use core::mem;
18+
1719
macro_rules! panic {
1820
($($tt:tt)*) => {
1921
upanic!($($tt)*);
@@ -24,199 +26,249 @@ extern "C" {
2426
fn __aeabi_memset4(dest: *mut u8, n: usize, c: u32);
2527
}
2628

29+
struct Aligned {
30+
array: [u8; 8],
31+
_alignment: [u32; 0],
32+
}
33+
34+
impl Aligned {
35+
fn new(array: [u8; 8]) -> Self {
36+
Aligned {
37+
array: array,
38+
_alignment: [],
39+
}
40+
}
41+
}
42+
2743
#[test]
2844
fn zero() {
29-
let mut xs = [0u8; 8];
45+
let mut aligned = Aligned::new([0u8; 8]);;
46+
assert_eq!(mem::align_of_val(&aligned), 4);
47+
let xs = &mut aligned.array;
3048
let c = 0xdeadbeef;
3149

3250
unsafe {
3351
__aeabi_memset4(xs.as_mut_ptr(), 0, c)
3452
}
3553

36-
assert_eq!(xs, [0; 8]);
54+
assert_eq!(*xs, [0; 8]);
3755

38-
let mut xs = [1u8; 8];
56+
let mut aligned = Aligned::new([1u8; 8]);;
57+
assert_eq!(mem::align_of_val(&aligned), 4);
58+
let xs = &mut aligned.array;
3959
let c = 0xdeadbeef;
4060

4161
unsafe {
4262
__aeabi_memset4(xs.as_mut_ptr(), 0, c)
4363
}
4464

45-
assert_eq!(xs, [1; 8]);
65+
assert_eq!(*xs, [1; 8]);
4666
}
4767

4868
#[test]
4969
fn one() {
50-
let mut xs = [0u8; 8];
70+
let mut aligned = Aligned::new([0u8; 8]);;
71+
assert_eq!(mem::align_of_val(&aligned), 4);
72+
let xs = &mut aligned.array;
5173
let n = 1;
5274
let c = 0xdeadbeef;
5375

5476
unsafe {
5577
__aeabi_memset4(xs.as_mut_ptr(), n, c)
5678
}
5779

58-
assert_eq!(xs, [0xef, 0, 0, 0, 0, 0, 0, 0]);
80+
assert_eq!(*xs, [0xef, 0, 0, 0, 0, 0, 0, 0]);
5981

60-
let mut xs = [1u8; 8];
82+
let mut aligned = Aligned::new([1u8; 8]);;
83+
assert_eq!(mem::align_of_val(&aligned), 4);
84+
let xs = &mut aligned.array;
6185
let c = 0xdeadbeef;
6286

6387
unsafe {
6488
__aeabi_memset4(xs.as_mut_ptr(), n, c)
6589
}
6690

67-
assert_eq!(xs, [0xef, 1, 1, 1, 1, 1, 1, 1]);
91+
assert_eq!(*xs, [0xef, 1, 1, 1, 1, 1, 1, 1]);
6892
}
6993

7094
#[test]
7195
fn two() {
72-
let mut xs = [0u8; 8];
96+
let mut aligned = Aligned::new([0u8; 8]);;
97+
assert_eq!(mem::align_of_val(&aligned), 4);
98+
let xs = &mut aligned.array;
7399
let n = 2;
74100
let c = 0xdeadbeef;
75101

76102
unsafe {
77103
__aeabi_memset4(xs.as_mut_ptr(), n, c)
78104
}
79105

80-
assert_eq!(xs, [0xef, 0xef, 0, 0, 0, 0, 0, 0]);
106+
assert_eq!(*xs, [0xef, 0xef, 0, 0, 0, 0, 0, 0]);
81107

82-
let mut xs = [1u8; 8];
108+
let mut aligned = Aligned::new([1u8; 8]);;
109+
assert_eq!(mem::align_of_val(&aligned), 4);
110+
let xs = &mut aligned.array;
83111
let c = 0xdeadbeef;
84112

85113
unsafe {
86114
__aeabi_memset4(xs.as_mut_ptr(), n, c)
87115
}
88116

89-
assert_eq!(xs, [0xef, 0xef, 1, 1, 1, 1, 1, 1]);
117+
assert_eq!(*xs, [0xef, 0xef, 1, 1, 1, 1, 1, 1]);
90118
}
91119

92120
#[test]
93121
fn three() {
94-
let mut xs = [0u8; 8];
122+
let mut aligned = Aligned::new([0u8; 8]);;
123+
assert_eq!(mem::align_of_val(&aligned), 4);
124+
let xs = &mut aligned.array;
95125
let n = 3;
96126
let c = 0xdeadbeef;
97127

98128
unsafe {
99129
__aeabi_memset4(xs.as_mut_ptr(), n, c)
100130
}
101131

102-
assert_eq!(xs, [0xef, 0xef, 0xef, 0, 0, 0, 0, 0]);
132+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0, 0, 0, 0, 0]);
103133

104-
let mut xs = [1u8; 8];
134+
let mut aligned = Aligned::new([1u8; 8]);;
135+
assert_eq!(mem::align_of_val(&aligned), 4);
136+
let xs = &mut aligned.array;
105137
let c = 0xdeadbeef;
106138

107139
unsafe {
108140
__aeabi_memset4(xs.as_mut_ptr(), n, c)
109141
}
110142

111-
assert_eq!(xs, [0xef, 0xef, 0xef, 1, 1, 1, 1, 1]);
143+
assert_eq!(*xs, [0xef, 0xef, 0xef, 1, 1, 1, 1, 1]);
112144
}
113145

114146
#[test]
115147
fn four() {
116-
let mut xs = [0u8; 8];
148+
let mut aligned = Aligned::new([0u8; 8]);;
149+
assert_eq!(mem::align_of_val(&aligned), 4);
150+
let xs = &mut aligned.array;
117151
let n = 4;
118152
let c = 0xdeadbeef;
119153

120154
unsafe {
121155
__aeabi_memset4(xs.as_mut_ptr(), n, c)
122156
}
123157

124-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0, 0, 0, 0]);
158+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0, 0, 0, 0]);
125159

126-
let mut xs = [1u8; 8];
160+
let mut aligned = Aligned::new([1u8; 8]);;
161+
assert_eq!(mem::align_of_val(&aligned), 4);
162+
let xs = &mut aligned.array;
127163
let c = 0xdeadbeef;
128164

129165
unsafe {
130166
__aeabi_memset4(xs.as_mut_ptr(), n, c)
131167
}
132168

133-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 1, 1, 1, 1]);
169+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 1, 1, 1, 1]);
134170
}
135171

136172
#[test]
137173
fn five() {
138-
let mut xs = [0u8; 8];
174+
let mut aligned = Aligned::new([0u8; 8]);;
175+
assert_eq!(mem::align_of_val(&aligned), 4);
176+
let xs = &mut aligned.array;
139177
let n = 5;
140178
let c = 0xdeadbeef;
141179

142180
unsafe {
143181
__aeabi_memset4(xs.as_mut_ptr(), n, c)
144182
}
145183

146-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0, 0, 0]);
184+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0, 0, 0]);
147185

148-
let mut xs = [1u8; 8];
186+
let mut aligned = Aligned::new([1u8; 8]);;
187+
assert_eq!(mem::align_of_val(&aligned), 4);
188+
let xs = &mut aligned.array;
149189
let c = 0xdeadbeef;
150190

151191
unsafe {
152192
__aeabi_memset4(xs.as_mut_ptr(), n, c)
153193
}
154194

155-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0xef, 1, 1, 1]);
195+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0xef, 1, 1, 1]);
156196
}
157197

158198
#[test]
159199
fn six() {
160-
let mut xs = [0u8; 8];
200+
let mut aligned = Aligned::new([0u8; 8]);;
201+
assert_eq!(mem::align_of_val(&aligned), 4);
202+
let xs = &mut aligned.array;
161203
let n = 6;
162204
let c = 0xdeadbeef;
163205

164206
unsafe {
165207
__aeabi_memset4(xs.as_mut_ptr(), n, c)
166208
}
167209

168-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0, 0]);
210+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0, 0]);
169211

170-
let mut xs = [1u8; 8];
212+
let mut aligned = Aligned::new([1u8; 8]);;
213+
assert_eq!(mem::align_of_val(&aligned), 4);
214+
let xs = &mut aligned.array;
171215
let c = 0xdeadbeef;
172216

173217
unsafe {
174218
__aeabi_memset4(xs.as_mut_ptr(), n, c)
175219
}
176220

177-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 1, 1]);
221+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 1, 1]);
178222
}
179223

180224
#[test]
181225
fn seven() {
182-
let mut xs = [0u8; 8];
226+
let mut aligned = Aligned::new([0u8; 8]);;
227+
assert_eq!(mem::align_of_val(&aligned), 4);
228+
let xs = &mut aligned.array;
183229
let n = 7;
184230
let c = 0xdeadbeef;
185231

186232
unsafe {
187233
__aeabi_memset4(xs.as_mut_ptr(), n, c)
188234
}
189235

190-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0]);
236+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0]);
191237

192-
let mut xs = [1u8; 8];
238+
let mut aligned = Aligned::new([1u8; 8]);;
239+
assert_eq!(mem::align_of_val(&aligned), 4);
240+
let xs = &mut aligned.array;
193241
let c = 0xdeadbeef;
194242

195243
unsafe {
196244
__aeabi_memset4(xs.as_mut_ptr(), n, c)
197245
}
198246

199-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 1]);
247+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 1]);
200248
}
201249

202250
#[test]
203251
fn eight() {
204-
let mut xs = [0u8; 8];
252+
let mut aligned = Aligned::new([0u8; 8]);;
253+
assert_eq!(mem::align_of_val(&aligned), 4);
254+
let xs = &mut aligned.array;
205255
let n = 8;
206256
let c = 0xdeadbeef;
207257

208258
unsafe {
209259
__aeabi_memset4(xs.as_mut_ptr(), n, c)
210260
}
211261

212-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef]);
262+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef]);
213263

214-
let mut xs = [1u8; 8];
264+
let mut aligned = Aligned::new([1u8; 8]);;
265+
assert_eq!(mem::align_of_val(&aligned), 4);
266+
let xs = &mut aligned.array;
215267
let c = 0xdeadbeef;
216268

217269
unsafe {
218270
__aeabi_memset4(xs.as_mut_ptr(), n, c)
219271
}
220272

221-
assert_eq!(xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef]);
273+
assert_eq!(*xs, [0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef]);
222274
}

0 commit comments

Comments
 (0)