Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
google
GitHub Repository: google/crosvm
Path: blob/main/aarch64_sys_reg/src/tests.rs
5392 views
1
// Copyright 2025 The ChromiumOS Authors
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#![cfg_attr(rustfmt, rustfmt_skip)]
6
#![allow(non_snake_case, non_upper_case_globals)]
7
8
use crate::*;
9
10
#[test]
11
fn sysreg_new() {
12
let sysreg = AArch64SysRegId::new(1, 2, 3, 4, 5).unwrap();
13
assert_eq!(sysreg.op0(), 1);
14
assert_eq!(sysreg.op1(), 2);
15
assert_eq!(sysreg.crn(), 3);
16
assert_eq!(sysreg.crm(), 4);
17
assert_eq!(sysreg.op2(), 5);
18
assert_eq!(sysreg.encoded(), 0x51A5);
19
}
20
21
#[test]
22
fn sysreg_new_max() {
23
let sysreg = AArch64SysRegId::new(0b11, 0b111, 0b1111, 0b1111, 0b111).unwrap();
24
assert_eq!(sysreg.op0(), 3);
25
assert_eq!(sysreg.op1(), 7);
26
assert_eq!(sysreg.crn(), 15);
27
assert_eq!(sysreg.crm(), 15);
28
assert_eq!(sysreg.op2(), 7);
29
assert_eq!(sysreg.encoded(), 0xFFFF);
30
}
31
32
#[test]
33
fn sysreg_new_out_of_range() {
34
AArch64SysRegId::new(4, 0, 0, 0, 0).expect_err("invalid Op0");
35
AArch64SysRegId::new(0, 8, 0, 0, 0).expect_err("invalid Op1");
36
AArch64SysRegId::new(0, 0, 16, 0, 0).expect_err("invalid CRn");
37
AArch64SysRegId::new(0, 0, 0, 16, 0).expect_err("invalid CRm");
38
AArch64SysRegId::new(0, 0, 0, 0, 8).expect_err("invalid Op2");
39
}
40
41
#[test]
42
fn sysreg_encoding_mpidr_el1() {
43
assert_eq!(MPIDR_EL1.op0(), 3);
44
assert_eq!(MPIDR_EL1.op1(), 0);
45
assert_eq!(MPIDR_EL1.crn(), 0);
46
assert_eq!(MPIDR_EL1.crm(), 0);
47
assert_eq!(MPIDR_EL1.op2(), 5);
48
assert_eq!(MPIDR_EL1.encoded(), 0xC005);
49
assert_eq!(MPIDR_EL1, AArch64SysRegId::new(3, 0, 0, 0, 5).unwrap());
50
}
51
52
#[test]
53
fn sysreg_encoding_cntvct_el0() {
54
assert_eq!(CNTVCT_EL0.op0(), 3);
55
assert_eq!(CNTVCT_EL0.op1(), 3);
56
assert_eq!(CNTVCT_EL0.crn(), 14);
57
assert_eq!(CNTVCT_EL0.crm(), 0);
58
assert_eq!(CNTVCT_EL0.op2(), 2);
59
assert_eq!(CNTVCT_EL0.encoded(), 0xDF02);
60
assert_eq!(CNTVCT_EL0, AArch64SysRegId::new(3, 3, 14, 0, 2).unwrap());
61
}
62
63
#[test]
64
fn sysreg_encoding_cntv_cval_el0() {
65
assert_eq!(CNTV_CVAL_EL0.op0(), 3);
66
assert_eq!(CNTV_CVAL_EL0.op1(), 3);
67
assert_eq!(CNTV_CVAL_EL0.crn(), 14);
68
assert_eq!(CNTV_CVAL_EL0.crm(), 3);
69
assert_eq!(CNTV_CVAL_EL0.op2(), 2);
70
assert_eq!(CNTV_CVAL_EL0.encoded(), 0xDF1A);
71
assert_eq!(CNTV_CVAL_EL0, AArch64SysRegId::new(3, 3, 14, 3, 2).unwrap()
72
);
73
}
74
75
#[test]
76
fn sysreg_debug() {
77
assert_eq!(
78
format!("{MPIDR_EL1:?}"),
79
"AArch64SysRegId { Op0: 3, Op1: 0, CRn: 0, CRm: 0, Op2: 5 }"
80
);
81
}
82
83
fn sysreg(op0: u8, op1: u8, crn: u8, crm: u8, op2: u8) -> AArch64SysRegId {
84
AArch64SysRegId::new(op0, op1, crn, crm, op2).expect("invalid encoding")
85
}
86
87
#[test]
88
fn test_AMEVCNTR0n_EL0() {
89
assert_eq!(AMEVCNTR00_EL0, sysreg(0b11, 0b011, 0b1101, 0b0100, 0b000));
90
assert_eq!(AMEVCNTR01_EL0, sysreg(0b11, 0b011, 0b1101, 0b0100, 0b001));
91
assert_eq!(AMEVCNTR02_EL0, sysreg(0b11, 0b011, 0b1101, 0b0100, 0b010));
92
assert_eq!(AMEVCNTR03_EL0, sysreg(0b11, 0b011, 0b1101, 0b0100, 0b011));
93
}
94
95
#[test]
96
fn test_AMEVCNTR1n_EL0() {
97
assert_eq!(AMEVCNTR10_EL0, sysreg(0b11, 0b011, 0b1101, 0b1100, 0b000));
98
assert_eq!(AMEVCNTR11_EL0, sysreg(0b11, 0b011, 0b1101, 0b1100, 0b001));
99
assert_eq!(AMEVCNTR12_EL0, sysreg(0b11, 0b011, 0b1101, 0b1100, 0b010));
100
assert_eq!(AMEVCNTR13_EL0, sysreg(0b11, 0b011, 0b1101, 0b1100, 0b011));
101
assert_eq!(AMEVCNTR14_EL0, sysreg(0b11, 0b011, 0b1101, 0b1100, 0b100));
102
assert_eq!(AMEVCNTR15_EL0, sysreg(0b11, 0b011, 0b1101, 0b1100, 0b101));
103
assert_eq!(AMEVCNTR16_EL0, sysreg(0b11, 0b011, 0b1101, 0b1100, 0b110));
104
assert_eq!(AMEVCNTR17_EL0, sysreg(0b11, 0b011, 0b1101, 0b1100, 0b111));
105
assert_eq!(AMEVCNTR18_EL0, sysreg(0b11, 0b011, 0b1101, 0b1101, 0b000));
106
assert_eq!(AMEVCNTR19_EL0, sysreg(0b11, 0b011, 0b1101, 0b1101, 0b001));
107
assert_eq!(AMEVCNTR1A_EL0, sysreg(0b11, 0b011, 0b1101, 0b1101, 0b010));
108
assert_eq!(AMEVCNTR1B_EL0, sysreg(0b11, 0b011, 0b1101, 0b1101, 0b011));
109
assert_eq!(AMEVCNTR1C_EL0, sysreg(0b11, 0b011, 0b1101, 0b1101, 0b100));
110
assert_eq!(AMEVCNTR1D_EL0, sysreg(0b11, 0b011, 0b1101, 0b1101, 0b101));
111
assert_eq!(AMEVCNTR1E_EL0, sysreg(0b11, 0b011, 0b1101, 0b1101, 0b110));
112
assert_eq!(AMEVCNTR1F_EL0, sysreg(0b11, 0b011, 0b1101, 0b1101, 0b111));
113
}
114
115
#[test]
116
fn test_AMEVCNTVOFF0n_EL2() {
117
assert_eq!(AMEVCNTVOFF00_EL2, sysreg(0b11, 0b100, 0b1101, 0b1000, 0b000));
118
assert_eq!(AMEVCNTVOFF02_EL2, sysreg(0b11, 0b100, 0b1101, 0b1000, 0b010));
119
assert_eq!(AMEVCNTVOFF03_EL2, sysreg(0b11, 0b100, 0b1101, 0b1000, 0b011));
120
}
121
122
#[test]
123
fn test_AMEVCNTVOFF1n_EL2() {
124
assert_eq!(AMEVCNTVOFF10_EL2, sysreg(0b11, 0b100, 0b1101, 0b1010, 0b000));
125
assert_eq!(AMEVCNTVOFF11_EL2, sysreg(0b11, 0b100, 0b1101, 0b1010, 0b001));
126
assert_eq!(AMEVCNTVOFF12_EL2, sysreg(0b11, 0b100, 0b1101, 0b1010, 0b010));
127
assert_eq!(AMEVCNTVOFF13_EL2, sysreg(0b11, 0b100, 0b1101, 0b1010, 0b011));
128
assert_eq!(AMEVCNTVOFF14_EL2, sysreg(0b11, 0b100, 0b1101, 0b1010, 0b100));
129
assert_eq!(AMEVCNTVOFF15_EL2, sysreg(0b11, 0b100, 0b1101, 0b1010, 0b101));
130
assert_eq!(AMEVCNTVOFF16_EL2, sysreg(0b11, 0b100, 0b1101, 0b1010, 0b110));
131
assert_eq!(AMEVCNTVOFF17_EL2, sysreg(0b11, 0b100, 0b1101, 0b1010, 0b111));
132
assert_eq!(AMEVCNTVOFF18_EL2, sysreg(0b11, 0b100, 0b1101, 0b1011, 0b000));
133
assert_eq!(AMEVCNTVOFF19_EL2, sysreg(0b11, 0b100, 0b1101, 0b1011, 0b001));
134
assert_eq!(AMEVCNTVOFF1A_EL2, sysreg(0b11, 0b100, 0b1101, 0b1011, 0b010));
135
assert_eq!(AMEVCNTVOFF1B_EL2, sysreg(0b11, 0b100, 0b1101, 0b1011, 0b011));
136
assert_eq!(AMEVCNTVOFF1C_EL2, sysreg(0b11, 0b100, 0b1101, 0b1011, 0b100));
137
assert_eq!(AMEVCNTVOFF1D_EL2, sysreg(0b11, 0b100, 0b1101, 0b1011, 0b101));
138
assert_eq!(AMEVCNTVOFF1E_EL2, sysreg(0b11, 0b100, 0b1101, 0b1011, 0b110));
139
assert_eq!(AMEVCNTVOFF1F_EL2, sysreg(0b11, 0b100, 0b1101, 0b1011, 0b111));
140
}
141
142
#[test]
143
fn test_AMEVTYPER0n_EL0() {
144
assert_eq!(AMEVTYPER00_EL0, sysreg(0b11, 0b011, 0b1101, 0b0110, 0b000));
145
assert_eq!(AMEVTYPER01_EL0, sysreg(0b11, 0b011, 0b1101, 0b0110, 0b001));
146
assert_eq!(AMEVTYPER02_EL0, sysreg(0b11, 0b011, 0b1101, 0b0110, 0b010));
147
assert_eq!(AMEVTYPER03_EL0, sysreg(0b11, 0b011, 0b1101, 0b0110, 0b011));
148
}
149
150
#[test]
151
fn test_AMEVTYPER1n_EL0() {
152
assert_eq!(AMEVTYPER10_EL0, sysreg(0b11, 0b011, 0b1101, 0b1110, 0b000));
153
assert_eq!(AMEVTYPER11_EL0, sysreg(0b11, 0b011, 0b1101, 0b1110, 0b001));
154
assert_eq!(AMEVTYPER12_EL0, sysreg(0b11, 0b011, 0b1101, 0b1110, 0b010));
155
assert_eq!(AMEVTYPER13_EL0, sysreg(0b11, 0b011, 0b1101, 0b1110, 0b011));
156
assert_eq!(AMEVTYPER14_EL0, sysreg(0b11, 0b011, 0b1101, 0b1110, 0b100));
157
assert_eq!(AMEVTYPER15_EL0, sysreg(0b11, 0b011, 0b1101, 0b1110, 0b101));
158
assert_eq!(AMEVTYPER16_EL0, sysreg(0b11, 0b011, 0b1101, 0b1110, 0b110));
159
assert_eq!(AMEVTYPER17_EL0, sysreg(0b11, 0b011, 0b1101, 0b1110, 0b111));
160
assert_eq!(AMEVTYPER18_EL0, sysreg(0b11, 0b011, 0b1101, 0b1111, 0b000));
161
assert_eq!(AMEVTYPER19_EL0, sysreg(0b11, 0b011, 0b1101, 0b1111, 0b001));
162
assert_eq!(AMEVTYPER1A_EL0, sysreg(0b11, 0b011, 0b1101, 0b1111, 0b010));
163
assert_eq!(AMEVTYPER1B_EL0, sysreg(0b11, 0b011, 0b1101, 0b1111, 0b011));
164
assert_eq!(AMEVTYPER1C_EL0, sysreg(0b11, 0b011, 0b1101, 0b1111, 0b100));
165
assert_eq!(AMEVTYPER1D_EL0, sysreg(0b11, 0b011, 0b1101, 0b1111, 0b101));
166
assert_eq!(AMEVTYPER1E_EL0, sysreg(0b11, 0b011, 0b1101, 0b1111, 0b110));
167
assert_eq!(AMEVTYPER1F_EL0, sysreg(0b11, 0b011, 0b1101, 0b1111, 0b111));
168
}
169
170
#[test]
171
fn test_BRBINFn_EL1() {
172
assert_eq!(BRBINF0_EL1, sysreg(0b10, 0b001, 0b1000, 0b0000, 0b000));
173
assert_eq!(BRBINF1_EL1, sysreg(0b10, 0b001, 0b1000, 0b0001, 0b000));
174
assert_eq!(BRBINF15_EL1, sysreg(0b10, 0b001, 0b1000, 0b1111, 0b000));
175
assert_eq!(BRBINF16_EL1, sysreg(0b10, 0b001, 0b1000, 0b0000, 0b100));
176
assert_eq!(BRBINF31_EL1, sysreg(0b10, 0b001, 0b1000, 0b1111, 0b100));
177
}
178
179
#[test]
180
fn test_BRBSRCn_EL1() {
181
assert_eq!(BRBSRC0_EL1, sysreg(0b10, 0b001, 0b1000, 0b0000, 0b001));
182
assert_eq!(BRBSRC1_EL1, sysreg(0b10, 0b001, 0b1000, 0b0001, 0b001));
183
assert_eq!(BRBSRC15_EL1, sysreg(0b10, 0b001, 0b1000, 0b1111, 0b001));
184
assert_eq!(BRBSRC16_EL1, sysreg(0b10, 0b001, 0b1000, 0b0000, 0b101));
185
assert_eq!(BRBSRC31_EL1, sysreg(0b10, 0b001, 0b1000, 0b1111, 0b101));
186
}
187
188
#[test]
189
fn test_BRBTGTn_EL1() {
190
assert_eq!(BRBTGT0_EL1, sysreg(0b10, 0b001, 0b1000, 0b0000, 0b010));
191
assert_eq!(BRBTGT1_EL1, sysreg(0b10, 0b001, 0b1000, 0b0001, 0b010));
192
assert_eq!(BRBTGT15_EL1, sysreg(0b10, 0b001, 0b1000, 0b1111, 0b010));
193
assert_eq!(BRBTGT16_EL1, sysreg(0b10, 0b001, 0b1000, 0b0000, 0b110));
194
assert_eq!(BRBTGT31_EL1, sysreg(0b10, 0b001, 0b1000, 0b1111, 0b110));
195
}
196
197
#[test]
198
fn test_DBGBCRn_EL1() {
199
assert_eq!(DBGBCR0_EL1, sysreg(0b10, 0b000, 0b0000, 0b0000, 0b101));
200
assert_eq!(DBGBCR1_EL1, sysreg(0b10, 0b000, 0b0000, 0b0001, 0b101));
201
assert_eq!(DBGBCR2_EL1, sysreg(0b10, 0b000, 0b0000, 0b0010, 0b101));
202
assert_eq!(DBGBCR3_EL1, sysreg(0b10, 0b000, 0b0000, 0b0011, 0b101));
203
assert_eq!(DBGBCR4_EL1, sysreg(0b10, 0b000, 0b0000, 0b0100, 0b101));
204
assert_eq!(DBGBCR5_EL1, sysreg(0b10, 0b000, 0b0000, 0b0101, 0b101));
205
assert_eq!(DBGBCR6_EL1, sysreg(0b10, 0b000, 0b0000, 0b0110, 0b101));
206
assert_eq!(DBGBCR7_EL1, sysreg(0b10, 0b000, 0b0000, 0b0111, 0b101));
207
assert_eq!(DBGBCR8_EL1, sysreg(0b10, 0b000, 0b0000, 0b1000, 0b101));
208
assert_eq!(DBGBCR9_EL1, sysreg(0b10, 0b000, 0b0000, 0b1001, 0b101));
209
assert_eq!(DBGBCRA_EL1, sysreg(0b10, 0b000, 0b0000, 0b1010, 0b101));
210
assert_eq!(DBGBCRB_EL1, sysreg(0b10, 0b000, 0b0000, 0b1011, 0b101));
211
assert_eq!(DBGBCRC_EL1, sysreg(0b10, 0b000, 0b0000, 0b1100, 0b101));
212
assert_eq!(DBGBCRD_EL1, sysreg(0b10, 0b000, 0b0000, 0b1101, 0b101));
213
assert_eq!(DBGBCRE_EL1, sysreg(0b10, 0b000, 0b0000, 0b1110, 0b101));
214
assert_eq!(DBGBCRF_EL1, sysreg(0b10, 0b000, 0b0000, 0b1111, 0b101));
215
}
216
217
#[test]
218
fn test_DBGBVRn_EL1() {
219
assert_eq!(DBGBVR0_EL1, sysreg(0b10, 0b000, 0b0000, 0b0000, 0b100));
220
assert_eq!(DBGBVR1_EL1, sysreg(0b10, 0b000, 0b0000, 0b0001, 0b100));
221
assert_eq!(DBGBVR2_EL1, sysreg(0b10, 0b000, 0b0000, 0b0010, 0b100));
222
assert_eq!(DBGBVR3_EL1, sysreg(0b10, 0b000, 0b0000, 0b0011, 0b100));
223
assert_eq!(DBGBVR4_EL1, sysreg(0b10, 0b000, 0b0000, 0b0100, 0b100));
224
assert_eq!(DBGBVR5_EL1, sysreg(0b10, 0b000, 0b0000, 0b0101, 0b100));
225
assert_eq!(DBGBVR6_EL1, sysreg(0b10, 0b000, 0b0000, 0b0110, 0b100));
226
assert_eq!(DBGBVR7_EL1, sysreg(0b10, 0b000, 0b0000, 0b0111, 0b100));
227
assert_eq!(DBGBVR8_EL1, sysreg(0b10, 0b000, 0b0000, 0b1000, 0b100));
228
assert_eq!(DBGBVR9_EL1, sysreg(0b10, 0b000, 0b0000, 0b1001, 0b100));
229
assert_eq!(DBGBVRA_EL1, sysreg(0b10, 0b000, 0b0000, 0b1010, 0b100));
230
assert_eq!(DBGBVRB_EL1, sysreg(0b10, 0b000, 0b0000, 0b1011, 0b100));
231
assert_eq!(DBGBVRC_EL1, sysreg(0b10, 0b000, 0b0000, 0b1100, 0b100));
232
assert_eq!(DBGBVRD_EL1, sysreg(0b10, 0b000, 0b0000, 0b1101, 0b100));
233
assert_eq!(DBGBVRE_EL1, sysreg(0b10, 0b000, 0b0000, 0b1110, 0b100));
234
assert_eq!(DBGBVRF_EL1, sysreg(0b10, 0b000, 0b0000, 0b1111, 0b100));
235
}
236
237
#[test]
238
fn test_DBGWCRn_EL1() {
239
assert_eq!(DBGWCR0_EL1, sysreg(0b10, 0b000, 0b0000, 0b0000, 0b111));
240
assert_eq!(DBGWCR1_EL1, sysreg(0b10, 0b000, 0b0000, 0b0001, 0b111));
241
assert_eq!(DBGWCR2_EL1, sysreg(0b10, 0b000, 0b0000, 0b0010, 0b111));
242
assert_eq!(DBGWCR3_EL1, sysreg(0b10, 0b000, 0b0000, 0b0011, 0b111));
243
assert_eq!(DBGWCR4_EL1, sysreg(0b10, 0b000, 0b0000, 0b0100, 0b111));
244
assert_eq!(DBGWCR5_EL1, sysreg(0b10, 0b000, 0b0000, 0b0101, 0b111));
245
assert_eq!(DBGWCR6_EL1, sysreg(0b10, 0b000, 0b0000, 0b0110, 0b111));
246
assert_eq!(DBGWCR7_EL1, sysreg(0b10, 0b000, 0b0000, 0b0111, 0b111));
247
assert_eq!(DBGWCR8_EL1, sysreg(0b10, 0b000, 0b0000, 0b1000, 0b111));
248
assert_eq!(DBGWCR9_EL1, sysreg(0b10, 0b000, 0b0000, 0b1001, 0b111));
249
assert_eq!(DBGWCRA_EL1, sysreg(0b10, 0b000, 0b0000, 0b1010, 0b111));
250
assert_eq!(DBGWCRB_EL1, sysreg(0b10, 0b000, 0b0000, 0b1011, 0b111));
251
assert_eq!(DBGWCRC_EL1, sysreg(0b10, 0b000, 0b0000, 0b1100, 0b111));
252
assert_eq!(DBGWCRD_EL1, sysreg(0b10, 0b000, 0b0000, 0b1101, 0b111));
253
assert_eq!(DBGWCRE_EL1, sysreg(0b10, 0b000, 0b0000, 0b1110, 0b111));
254
assert_eq!(DBGWCRF_EL1, sysreg(0b10, 0b000, 0b0000, 0b1111, 0b111));
255
}
256
257
#[test]
258
fn test_DBGWVRn_EL1() {
259
assert_eq!(DBGWVR0_EL1, sysreg(0b10, 0b000, 0b0000, 0b0000, 0b110));
260
assert_eq!(DBGWVR1_EL1, sysreg(0b10, 0b000, 0b0000, 0b0001, 0b110));
261
assert_eq!(DBGWVR2_EL1, sysreg(0b10, 0b000, 0b0000, 0b0010, 0b110));
262
assert_eq!(DBGWVR3_EL1, sysreg(0b10, 0b000, 0b0000, 0b0011, 0b110));
263
assert_eq!(DBGWVR4_EL1, sysreg(0b10, 0b000, 0b0000, 0b0100, 0b110));
264
assert_eq!(DBGWVR5_EL1, sysreg(0b10, 0b000, 0b0000, 0b0101, 0b110));
265
assert_eq!(DBGWVR6_EL1, sysreg(0b10, 0b000, 0b0000, 0b0110, 0b110));
266
assert_eq!(DBGWVR7_EL1, sysreg(0b10, 0b000, 0b0000, 0b0111, 0b110));
267
assert_eq!(DBGWVR8_EL1, sysreg(0b10, 0b000, 0b0000, 0b1000, 0b110));
268
assert_eq!(DBGWVR9_EL1, sysreg(0b10, 0b000, 0b0000, 0b1001, 0b110));
269
assert_eq!(DBGWVRA_EL1, sysreg(0b10, 0b000, 0b0000, 0b1010, 0b110));
270
assert_eq!(DBGWVRB_EL1, sysreg(0b10, 0b000, 0b0000, 0b1011, 0b110));
271
assert_eq!(DBGWVRC_EL1, sysreg(0b10, 0b000, 0b0000, 0b1100, 0b110));
272
assert_eq!(DBGWVRD_EL1, sysreg(0b10, 0b000, 0b0000, 0b1101, 0b110));
273
assert_eq!(DBGWVRE_EL1, sysreg(0b10, 0b000, 0b0000, 0b1110, 0b110));
274
assert_eq!(DBGWVRF_EL1, sysreg(0b10, 0b000, 0b0000, 0b1111, 0b110));
275
}
276
277
#[test]
278
fn test_ICC_AP0Rn_EL1() {
279
assert_eq!(ICC_AP0R0_EL1, sysreg(0b11, 0b000, 0b1100, 0b1000, 0b100));
280
assert_eq!(ICC_AP0R1_EL1, sysreg(0b11, 0b000, 0b1100, 0b1000, 0b101));
281
assert_eq!(ICC_AP0R2_EL1, sysreg(0b11, 0b000, 0b1100, 0b1000, 0b110));
282
assert_eq!(ICC_AP0R3_EL1, sysreg(0b11, 0b000, 0b1100, 0b1000, 0b111));
283
}
284
285
#[test]
286
fn test_ICC_AP1Rn_EL1() {
287
assert_eq!(ICC_AP1R0_EL1, sysreg(0b11, 0b000, 0b1100, 0b1001, 0b000));
288
assert_eq!(ICC_AP1R1_EL1, sysreg(0b11, 0b000, 0b1100, 0b1001, 0b001));
289
assert_eq!(ICC_AP1R2_EL1, sysreg(0b11, 0b000, 0b1100, 0b1001, 0b010));
290
assert_eq!(ICC_AP1R3_EL1, sysreg(0b11, 0b000, 0b1100, 0b1001, 0b011));
291
}
292
293
#[test]
294
fn test_ICH_AP0Rn_EL2() {
295
assert_eq!(ICH_AP0R0_EL2, sysreg(0b11, 0b100, 0b1100, 0b1000, 0b000));
296
assert_eq!(ICH_AP0R1_EL2, sysreg(0b11, 0b100, 0b1100, 0b1000, 0b001));
297
assert_eq!(ICH_AP0R2_EL2, sysreg(0b11, 0b100, 0b1100, 0b1000, 0b010));
298
assert_eq!(ICH_AP0R3_EL2, sysreg(0b11, 0b100, 0b1100, 0b1000, 0b011));
299
}
300
301
#[test]
302
fn test_ICH_AP1Rn_EL2() {
303
assert_eq!(ICH_AP1R0_EL2, sysreg(0b11, 0b100, 0b1100, 0b1001, 0b000));
304
assert_eq!(ICH_AP1R1_EL2, sysreg(0b11, 0b100, 0b1100, 0b1001, 0b001));
305
assert_eq!(ICH_AP1R2_EL2, sysreg(0b11, 0b100, 0b1100, 0b1001, 0b010));
306
assert_eq!(ICH_AP1R3_EL2, sysreg(0b11, 0b100, 0b1100, 0b1001, 0b011));
307
}
308
309
#[test]
310
fn test_PMEVCNTRn_EL0() {
311
assert_eq!(PMEVCNTR0_EL0, sysreg(0b11, 0b011, 0b1110, 0b1000, 0b000));
312
assert_eq!(PMEVCNTR7_EL0, sysreg(0b11, 0b011, 0b1110, 0b1000, 0b111));
313
assert_eq!(PMEVCNTR8_EL0, sysreg(0b11, 0b011, 0b1110, 0b1001, 0b000));
314
assert_eq!(PMEVCNTR15_EL0, sysreg(0b11, 0b011, 0b1110, 0b1001, 0b111));
315
assert_eq!(PMEVCNTR30_EL0, sysreg(0b11, 0b011, 0b1110, 0b1011, 0b110));
316
}
317
318
#[test]
319
fn test_PMEVCNTSVRn_EL1() {
320
assert_eq!(PMEVCNTSVR0_EL1, sysreg(0b10, 0b000, 0b1110, 0b1000, 0b000));
321
assert_eq!(PMEVCNTSVR7_EL1, sysreg(0b10, 0b000, 0b1110, 0b1000, 0b111));
322
assert_eq!(PMEVCNTSVR8_EL1, sysreg(0b10, 0b000, 0b1110, 0b1001, 0b000));
323
assert_eq!(PMEVCNTSVR15_EL1, sysreg(0b10, 0b000, 0b1110, 0b1001, 0b111));
324
assert_eq!(PMEVCNTSVR30_EL1, sysreg(0b10, 0b000, 0b1110, 0b1011, 0b110));
325
}
326
327
#[test]
328
fn test_PMEVTYPERn_EL0() {
329
assert_eq!(PMEVTYPER0_EL0, sysreg(0b11, 0b011, 0b1110, 0b1100, 0b000));
330
assert_eq!(PMEVTYPER7_EL0, sysreg(0b11, 0b011, 0b1110, 0b1100, 0b111));
331
assert_eq!(PMEVTYPER8_EL0, sysreg(0b11, 0b011, 0b1110, 0b1101, 0b000));
332
assert_eq!(PMEVTYPER15_EL0, sysreg(0b11, 0b011, 0b1110, 0b1101, 0b111));
333
assert_eq!(PMEVTYPER30_EL0, sysreg(0b11, 0b011, 0b1110, 0b1111, 0b110));
334
}
335
336
#[test]
337
fn test_SPMCGCRn_EL1() {
338
assert_eq!(SPMCGCR0_EL1, sysreg(0b10, 0b000, 0b1001, 0b1101, 0b000));
339
assert_eq!(SPMCGCR1_EL1, sysreg(0b10, 0b000, 0b1001, 0b1101, 0b001));
340
}
341
342
#[test]
343
fn test_SPMEVCNTRn_EL0() {
344
assert_eq!(SPMEVCNTR0_EL0, sysreg(0b10, 0b011, 0b1110, 0b0000, 0b000));
345
assert_eq!(SPMEVCNTR1_EL0, sysreg(0b10, 0b011, 0b1110, 0b0000, 0b001));
346
assert_eq!(SPMEVCNTR2_EL0, sysreg(0b10, 0b011, 0b1110, 0b0000, 0b010));
347
assert_eq!(SPMEVCNTR3_EL0, sysreg(0b10, 0b011, 0b1110, 0b0000, 0b011));
348
assert_eq!(SPMEVCNTR4_EL0, sysreg(0b10, 0b011, 0b1110, 0b0000, 0b100));
349
assert_eq!(SPMEVCNTR5_EL0, sysreg(0b10, 0b011, 0b1110, 0b0000, 0b101));
350
assert_eq!(SPMEVCNTR6_EL0, sysreg(0b10, 0b011, 0b1110, 0b0000, 0b110));
351
assert_eq!(SPMEVCNTR7_EL0, sysreg(0b10, 0b011, 0b1110, 0b0000, 0b111));
352
assert_eq!(SPMEVCNTR8_EL0, sysreg(0b10, 0b011, 0b1110, 0b0001, 0b000));
353
assert_eq!(SPMEVCNTR9_EL0, sysreg(0b10, 0b011, 0b1110, 0b0001, 0b001));
354
assert_eq!(SPMEVCNTRA_EL0, sysreg(0b10, 0b011, 0b1110, 0b0001, 0b010));
355
assert_eq!(SPMEVCNTRB_EL0, sysreg(0b10, 0b011, 0b1110, 0b0001, 0b011));
356
assert_eq!(SPMEVCNTRC_EL0, sysreg(0b10, 0b011, 0b1110, 0b0001, 0b100));
357
assert_eq!(SPMEVCNTRD_EL0, sysreg(0b10, 0b011, 0b1110, 0b0001, 0b101));
358
assert_eq!(SPMEVCNTRE_EL0, sysreg(0b10, 0b011, 0b1110, 0b0001, 0b110));
359
assert_eq!(SPMEVCNTRF_EL0, sysreg(0b10, 0b011, 0b1110, 0b0001, 0b111));
360
}
361
362
#[test]
363
fn test_SPMEVFILT2Rn_EL0() {
364
assert_eq!(SPMEVFILT2R0_EL0, sysreg(0b10, 0b011, 0b1110, 0b0110, 0b000));
365
assert_eq!(SPMEVFILT2R1_EL0, sysreg(0b10, 0b011, 0b1110, 0b0110, 0b001));
366
assert_eq!(SPMEVFILT2R2_EL0, sysreg(0b10, 0b011, 0b1110, 0b0110, 0b010));
367
assert_eq!(SPMEVFILT2R3_EL0, sysreg(0b10, 0b011, 0b1110, 0b0110, 0b011));
368
assert_eq!(SPMEVFILT2R4_EL0, sysreg(0b10, 0b011, 0b1110, 0b0110, 0b100));
369
assert_eq!(SPMEVFILT2R5_EL0, sysreg(0b10, 0b011, 0b1110, 0b0110, 0b101));
370
assert_eq!(SPMEVFILT2R6_EL0, sysreg(0b10, 0b011, 0b1110, 0b0110, 0b110));
371
assert_eq!(SPMEVFILT2R7_EL0, sysreg(0b10, 0b011, 0b1110, 0b0110, 0b111));
372
assert_eq!(SPMEVFILT2R8_EL0, sysreg(0b10, 0b011, 0b1110, 0b0111, 0b000));
373
assert_eq!(SPMEVFILT2R9_EL0, sysreg(0b10, 0b011, 0b1110, 0b0111, 0b001));
374
assert_eq!(SPMEVFILT2RA_EL0, sysreg(0b10, 0b011, 0b1110, 0b0111, 0b010));
375
assert_eq!(SPMEVFILT2RB_EL0, sysreg(0b10, 0b011, 0b1110, 0b0111, 0b011));
376
assert_eq!(SPMEVFILT2RC_EL0, sysreg(0b10, 0b011, 0b1110, 0b0111, 0b100));
377
assert_eq!(SPMEVFILT2RD_EL0, sysreg(0b10, 0b011, 0b1110, 0b0111, 0b101));
378
assert_eq!(SPMEVFILT2RE_EL0, sysreg(0b10, 0b011, 0b1110, 0b0111, 0b110));
379
assert_eq!(SPMEVFILT2RF_EL0, sysreg(0b10, 0b011, 0b1110, 0b0111, 0b111));
380
}
381
382
#[test]
383
fn test_SPMEVFILTRn_EL0() {
384
assert_eq!(SPMEVFILTR0_EL0, sysreg(0b10, 0b011, 0b1110, 0b0100, 0b000));
385
assert_eq!(SPMEVFILTR1_EL0, sysreg(0b10, 0b011, 0b1110, 0b0100, 0b001));
386
assert_eq!(SPMEVFILTR2_EL0, sysreg(0b10, 0b011, 0b1110, 0b0100, 0b010));
387
assert_eq!(SPMEVFILTR3_EL0, sysreg(0b10, 0b011, 0b1110, 0b0100, 0b011));
388
assert_eq!(SPMEVFILTR4_EL0, sysreg(0b10, 0b011, 0b1110, 0b0100, 0b100));
389
assert_eq!(SPMEVFILTR5_EL0, sysreg(0b10, 0b011, 0b1110, 0b0100, 0b101));
390
assert_eq!(SPMEVFILTR6_EL0, sysreg(0b10, 0b011, 0b1110, 0b0100, 0b110));
391
assert_eq!(SPMEVFILTR7_EL0, sysreg(0b10, 0b011, 0b1110, 0b0100, 0b111));
392
assert_eq!(SPMEVFILTR8_EL0, sysreg(0b10, 0b011, 0b1110, 0b0101, 0b000));
393
assert_eq!(SPMEVFILTR9_EL0, sysreg(0b10, 0b011, 0b1110, 0b0101, 0b001));
394
assert_eq!(SPMEVFILTRA_EL0, sysreg(0b10, 0b011, 0b1110, 0b0101, 0b010));
395
assert_eq!(SPMEVFILTRB_EL0, sysreg(0b10, 0b011, 0b1110, 0b0101, 0b011));
396
assert_eq!(SPMEVFILTRC_EL0, sysreg(0b10, 0b011, 0b1110, 0b0101, 0b100));
397
assert_eq!(SPMEVFILTRD_EL0, sysreg(0b10, 0b011, 0b1110, 0b0101, 0b101));
398
assert_eq!(SPMEVFILTRE_EL0, sysreg(0b10, 0b011, 0b1110, 0b0101, 0b110));
399
assert_eq!(SPMEVFILTRF_EL0, sysreg(0b10, 0b011, 0b1110, 0b0101, 0b111));
400
}
401
402
#[test]
403
fn test_SPMEVTYPERn_EL0() {
404
assert_eq!(SPMEVTYPER0_EL0, sysreg(0b10, 0b011, 0b1110, 0b0010, 0b000));
405
assert_eq!(SPMEVTYPER1_EL0, sysreg(0b10, 0b011, 0b1110, 0b0010, 0b001));
406
assert_eq!(SPMEVTYPER2_EL0, sysreg(0b10, 0b011, 0b1110, 0b0010, 0b010));
407
assert_eq!(SPMEVTYPER3_EL0, sysreg(0b10, 0b011, 0b1110, 0b0010, 0b011));
408
assert_eq!(SPMEVTYPER4_EL0, sysreg(0b10, 0b011, 0b1110, 0b0010, 0b100));
409
assert_eq!(SPMEVTYPER5_EL0, sysreg(0b10, 0b011, 0b1110, 0b0010, 0b101));
410
assert_eq!(SPMEVTYPER6_EL0, sysreg(0b10, 0b011, 0b1110, 0b0010, 0b110));
411
assert_eq!(SPMEVTYPER7_EL0, sysreg(0b10, 0b011, 0b1110, 0b0010, 0b111));
412
assert_eq!(SPMEVTYPER8_EL0, sysreg(0b10, 0b011, 0b1110, 0b0011, 0b000));
413
assert_eq!(SPMEVTYPER9_EL0, sysreg(0b10, 0b011, 0b1110, 0b0011, 0b001));
414
assert_eq!(SPMEVTYPERA_EL0, sysreg(0b10, 0b011, 0b1110, 0b0011, 0b010));
415
assert_eq!(SPMEVTYPERB_EL0, sysreg(0b10, 0b011, 0b1110, 0b0011, 0b011));
416
assert_eq!(SPMEVTYPERC_EL0, sysreg(0b10, 0b011, 0b1110, 0b0011, 0b100));
417
assert_eq!(SPMEVTYPERD_EL0, sysreg(0b10, 0b011, 0b1110, 0b0011, 0b101));
418
assert_eq!(SPMEVTYPERE_EL0, sysreg(0b10, 0b011, 0b1110, 0b0011, 0b110));
419
assert_eq!(SPMEVTYPERF_EL0, sysreg(0b10, 0b011, 0b1110, 0b0011, 0b111));
420
}
421
422
#[test]
423
fn test_TRCACATRn() {
424
assert_eq!(TRCACATR0, sysreg(0b10, 0b001, 0b0010, 0b0000, 0b010));
425
assert_eq!(TRCACATR1, sysreg(0b10, 0b001, 0b0010, 0b0010, 0b010));
426
assert_eq!(TRCACATR2, sysreg(0b10, 0b001, 0b0010, 0b0100, 0b010));
427
assert_eq!(TRCACATR3, sysreg(0b10, 0b001, 0b0010, 0b0110, 0b010));
428
assert_eq!(TRCACATR4, sysreg(0b10, 0b001, 0b0010, 0b1000, 0b010));
429
assert_eq!(TRCACATR5, sysreg(0b10, 0b001, 0b0010, 0b1010, 0b010));
430
assert_eq!(TRCACATR6, sysreg(0b10, 0b001, 0b0010, 0b1100, 0b010));
431
assert_eq!(TRCACATR7, sysreg(0b10, 0b001, 0b0010, 0b1110, 0b010));
432
assert_eq!(TRCACATR8, sysreg(0b10, 0b001, 0b0010, 0b0000, 0b011));
433
assert_eq!(TRCACATR9, sysreg(0b10, 0b001, 0b0010, 0b0010, 0b011));
434
assert_eq!(TRCACATRA, sysreg(0b10, 0b001, 0b0010, 0b0100, 0b011));
435
assert_eq!(TRCACATRB, sysreg(0b10, 0b001, 0b0010, 0b0110, 0b011));
436
assert_eq!(TRCACATRC, sysreg(0b10, 0b001, 0b0010, 0b1000, 0b011));
437
assert_eq!(TRCACATRD, sysreg(0b10, 0b001, 0b0010, 0b1010, 0b011));
438
assert_eq!(TRCACATRE, sysreg(0b10, 0b001, 0b0010, 0b1100, 0b011));
439
assert_eq!(TRCACATRF, sysreg(0b10, 0b001, 0b0010, 0b1110, 0b011));
440
}
441
442
#[test]
443
fn test_TRCACVRn() {
444
assert_eq!(TRCACVR0, sysreg(0b10, 0b001, 0b0010, 0b0000, 0b000));
445
assert_eq!(TRCACVR1, sysreg(0b10, 0b001, 0b0010, 0b0010, 0b000));
446
assert_eq!(TRCACVR2, sysreg(0b10, 0b001, 0b0010, 0b0100, 0b000));
447
assert_eq!(TRCACVR3, sysreg(0b10, 0b001, 0b0010, 0b0110, 0b000));
448
assert_eq!(TRCACVR4, sysreg(0b10, 0b001, 0b0010, 0b1000, 0b000));
449
assert_eq!(TRCACVR5, sysreg(0b10, 0b001, 0b0010, 0b1010, 0b000));
450
assert_eq!(TRCACVR6, sysreg(0b10, 0b001, 0b0010, 0b1100, 0b000));
451
assert_eq!(TRCACVR7, sysreg(0b10, 0b001, 0b0010, 0b1110, 0b000));
452
assert_eq!(TRCACVR8, sysreg(0b10, 0b001, 0b0010, 0b0000, 0b001));
453
assert_eq!(TRCACVR9, sysreg(0b10, 0b001, 0b0010, 0b0010, 0b001));
454
assert_eq!(TRCACVRA, sysreg(0b10, 0b001, 0b0010, 0b0100, 0b001));
455
assert_eq!(TRCACVRB, sysreg(0b10, 0b001, 0b0010, 0b0110, 0b001));
456
assert_eq!(TRCACVRC, sysreg(0b10, 0b001, 0b0010, 0b1000, 0b001));
457
assert_eq!(TRCACVRD, sysreg(0b10, 0b001, 0b0010, 0b1010, 0b001));
458
assert_eq!(TRCACVRE, sysreg(0b10, 0b001, 0b0010, 0b1100, 0b001));
459
assert_eq!(TRCACVRF, sysreg(0b10, 0b001, 0b0010, 0b1110, 0b001));
460
}
461
462
#[test]
463
fn test_TRCCIDCVRn() {
464
assert_eq!(TRCCIDCVR0, sysreg(0b10, 0b001, 0b0011, 0b0000, 0b000));
465
assert_eq!(TRCCIDCVR1, sysreg(0b10, 0b001, 0b0011, 0b0010, 0b000));
466
assert_eq!(TRCCIDCVR2, sysreg(0b10, 0b001, 0b0011, 0b0100, 0b000));
467
assert_eq!(TRCCIDCVR3, sysreg(0b10, 0b001, 0b0011, 0b0110, 0b000));
468
assert_eq!(TRCCIDCVR4, sysreg(0b10, 0b001, 0b0011, 0b1000, 0b000));
469
assert_eq!(TRCCIDCVR5, sysreg(0b10, 0b001, 0b0011, 0b1010, 0b000));
470
assert_eq!(TRCCIDCVR6, sysreg(0b10, 0b001, 0b0011, 0b1100, 0b000));
471
assert_eq!(TRCCIDCVR7, sysreg(0b10, 0b001, 0b0011, 0b1110, 0b000));
472
}
473
474
#[test]
475
fn test_TRCCNTCTLRn() {
476
assert_eq!(TRCCNTCTLR0, sysreg(0b10, 0b001, 0b0000, 0b0100, 0b101));
477
assert_eq!(TRCCNTCTLR1, sysreg(0b10, 0b001, 0b0000, 0b0101, 0b101));
478
assert_eq!(TRCCNTCTLR2, sysreg(0b10, 0b001, 0b0000, 0b0110, 0b101));
479
assert_eq!(TRCCNTCTLR3, sysreg(0b10, 0b001, 0b0000, 0b0111, 0b101));
480
}
481
482
#[test]
483
fn test_TRCCNTRLDVRn() {
484
assert_eq!(TRCCNTRLDVR0, sysreg(0b10, 0b001, 0b0000, 0b0000, 0b101));
485
assert_eq!(TRCCNTRLDVR1, sysreg(0b10, 0b001, 0b0000, 0b0001, 0b101));
486
assert_eq!(TRCCNTRLDVR2, sysreg(0b10, 0b001, 0b0000, 0b0010, 0b101));
487
assert_eq!(TRCCNTRLDVR3, sysreg(0b10, 0b001, 0b0000, 0b0011, 0b101));
488
}
489
490
#[test]
491
fn test_TRCCNTVRn() {
492
assert_eq!(TRCCNTVR0, sysreg(0b10, 0b001, 0b0000, 0b1000, 0b101));
493
assert_eq!(TRCCNTVR1, sysreg(0b10, 0b001, 0b0000, 0b1001, 0b101));
494
assert_eq!(TRCCNTVR2, sysreg(0b10, 0b001, 0b0000, 0b1010, 0b101));
495
assert_eq!(TRCCNTVR3, sysreg(0b10, 0b001, 0b0000, 0b1011, 0b101));
496
}
497
498
#[test]
499
fn test_TRCEXTINSELRn() {
500
assert_eq!(TRCEXTINSELR0, sysreg(0b10, 0b001, 0b0000, 0b1000, 0b100));
501
assert_eq!(TRCEXTINSELR1, sysreg(0b10, 0b001, 0b0000, 0b1001, 0b100));
502
assert_eq!(TRCEXTINSELR2, sysreg(0b10, 0b001, 0b0000, 0b1010, 0b100));
503
assert_eq!(TRCEXTINSELR3, sysreg(0b10, 0b001, 0b0000, 0b1011, 0b100));
504
}
505
506
#[test]
507
fn test_TRCIMSPECn() {
508
assert_eq!(TRCIMSPEC1, sysreg(0b10, 0b001, 0b0000, 0b0001, 0b111));
509
assert_eq!(TRCIMSPEC2, sysreg(0b10, 0b001, 0b0000, 0b0010, 0b111));
510
assert_eq!(TRCIMSPEC3, sysreg(0b10, 0b001, 0b0000, 0b0011, 0b111));
511
assert_eq!(TRCIMSPEC4, sysreg(0b10, 0b001, 0b0000, 0b0100, 0b111));
512
assert_eq!(TRCIMSPEC5, sysreg(0b10, 0b001, 0b0000, 0b0101, 0b111));
513
assert_eq!(TRCIMSPEC6, sysreg(0b10, 0b001, 0b0000, 0b0110, 0b111));
514
assert_eq!(TRCIMSPEC7, sysreg(0b10, 0b001, 0b0000, 0b0111, 0b111));
515
}
516
517
#[test]
518
fn test_TRCRSCTLRn() {
519
assert_eq!(TRCRSCTLR2, sysreg(0b10, 0b001, 0b0001, 0b0010, 0b000));
520
assert_eq!(TRCRSCTLR3, sysreg(0b10, 0b001, 0b0001, 0b0011, 0b000));
521
assert_eq!(TRCRSCTLR4, sysreg(0b10, 0b001, 0b0001, 0b0100, 0b000));
522
assert_eq!(TRCRSCTLR5, sysreg(0b10, 0b001, 0b0001, 0b0101, 0b000));
523
assert_eq!(TRCRSCTLR6, sysreg(0b10, 0b001, 0b0001, 0b0110, 0b000));
524
assert_eq!(TRCRSCTLR7, sysreg(0b10, 0b001, 0b0001, 0b0111, 0b000));
525
assert_eq!(TRCRSCTLR8, sysreg(0b10, 0b001, 0b0001, 0b1000, 0b000));
526
assert_eq!(TRCRSCTLR9, sysreg(0b10, 0b001, 0b0001, 0b1001, 0b000));
527
assert_eq!(TRCRSCTLR10, sysreg(0b10, 0b001, 0b0001, 0b1010, 0b000));
528
assert_eq!(TRCRSCTLR11, sysreg(0b10, 0b001, 0b0001, 0b1011, 0b000));
529
assert_eq!(TRCRSCTLR12, sysreg(0b10, 0b001, 0b0001, 0b1100, 0b000));
530
assert_eq!(TRCRSCTLR13, sysreg(0b10, 0b001, 0b0001, 0b1101, 0b000));
531
assert_eq!(TRCRSCTLR14, sysreg(0b10, 0b001, 0b0001, 0b1110, 0b000));
532
assert_eq!(TRCRSCTLR15, sysreg(0b10, 0b001, 0b0001, 0b1111, 0b000));
533
assert_eq!(TRCRSCTLR16, sysreg(0b10, 0b001, 0b0001, 0b0000, 0b001));
534
assert_eq!(TRCRSCTLR17, sysreg(0b10, 0b001, 0b0001, 0b0001, 0b001));
535
assert_eq!(TRCRSCTLR18, sysreg(0b10, 0b001, 0b0001, 0b0010, 0b001));
536
assert_eq!(TRCRSCTLR19, sysreg(0b10, 0b001, 0b0001, 0b0011, 0b001));
537
assert_eq!(TRCRSCTLR20, sysreg(0b10, 0b001, 0b0001, 0b0100, 0b001));
538
assert_eq!(TRCRSCTLR21, sysreg(0b10, 0b001, 0b0001, 0b0101, 0b001));
539
assert_eq!(TRCRSCTLR22, sysreg(0b10, 0b001, 0b0001, 0b0110, 0b001));
540
assert_eq!(TRCRSCTLR23, sysreg(0b10, 0b001, 0b0001, 0b0111, 0b001));
541
assert_eq!(TRCRSCTLR24, sysreg(0b10, 0b001, 0b0001, 0b1000, 0b001));
542
assert_eq!(TRCRSCTLR25, sysreg(0b10, 0b001, 0b0001, 0b1001, 0b001));
543
assert_eq!(TRCRSCTLR26, sysreg(0b10, 0b001, 0b0001, 0b1010, 0b001));
544
assert_eq!(TRCRSCTLR27, sysreg(0b10, 0b001, 0b0001, 0b1011, 0b001));
545
assert_eq!(TRCRSCTLR28, sysreg(0b10, 0b001, 0b0001, 0b1100, 0b001));
546
assert_eq!(TRCRSCTLR29, sysreg(0b10, 0b001, 0b0001, 0b1101, 0b001));
547
assert_eq!(TRCRSCTLR30, sysreg(0b10, 0b001, 0b0001, 0b1110, 0b001));
548
assert_eq!(TRCRSCTLR31, sysreg(0b10, 0b001, 0b0001, 0b1111, 0b001));
549
}
550
551
#[test]
552
fn test_TRCSEQEVRn() {
553
assert_eq!(TRCSEQEVR0, sysreg(0b10, 0b001, 0b0000, 0b0000, 0b100));
554
assert_eq!(TRCSEQEVR1, sysreg(0b10, 0b001, 0b0000, 0b0001, 0b100));
555
assert_eq!(TRCSEQEVR2, sysreg(0b10, 0b001, 0b0000, 0b0010, 0b100));
556
}
557
558
#[test]
559
fn test_TRCSSCCRn() {
560
assert_eq!(TRCSSCCR0, sysreg(0b10, 0b001, 0b0001, 0b0000, 0b010));
561
assert_eq!(TRCSSCCR1, sysreg(0b10, 0b001, 0b0001, 0b0001, 0b010));
562
assert_eq!(TRCSSCCR2, sysreg(0b10, 0b001, 0b0001, 0b0010, 0b010));
563
assert_eq!(TRCSSCCR3, sysreg(0b10, 0b001, 0b0001, 0b0011, 0b010));
564
assert_eq!(TRCSSCCR4, sysreg(0b10, 0b001, 0b0001, 0b0100, 0b010));
565
assert_eq!(TRCSSCCR5, sysreg(0b10, 0b001, 0b0001, 0b0101, 0b010));
566
assert_eq!(TRCSSCCR6, sysreg(0b10, 0b001, 0b0001, 0b0110, 0b010));
567
assert_eq!(TRCSSCCR7, sysreg(0b10, 0b001, 0b0001, 0b0111, 0b010));
568
}
569
570
#[test]
571
fn test_TRCSSCSRn() {
572
assert_eq!(TRCSSCSR0, sysreg(0b10, 0b001, 0b0001, 0b1000, 0b010));
573
assert_eq!(TRCSSCSR1, sysreg(0b10, 0b001, 0b0001, 0b1001, 0b010));
574
assert_eq!(TRCSSCSR2, sysreg(0b10, 0b001, 0b0001, 0b1010, 0b010));
575
assert_eq!(TRCSSCSR3, sysreg(0b10, 0b001, 0b0001, 0b1011, 0b010));
576
assert_eq!(TRCSSCSR4, sysreg(0b10, 0b001, 0b0001, 0b1100, 0b010));
577
assert_eq!(TRCSSCSR5, sysreg(0b10, 0b001, 0b0001, 0b1101, 0b010));
578
assert_eq!(TRCSSCSR6, sysreg(0b10, 0b001, 0b0001, 0b1110, 0b010));
579
assert_eq!(TRCSSCSR7, sysreg(0b10, 0b001, 0b0001, 0b1111, 0b010));
580
}
581
582
#[test]
583
fn test_TRCSSPCICRn() {
584
assert_eq!(TRCSSPCICR0, sysreg(0b10, 0b001, 0b0001, 0b0000, 0b011));
585
assert_eq!(TRCSSPCICR1, sysreg(0b10, 0b001, 0b0001, 0b0001, 0b011));
586
assert_eq!(TRCSSPCICR2, sysreg(0b10, 0b001, 0b0001, 0b0010, 0b011));
587
assert_eq!(TRCSSPCICR3, sysreg(0b10, 0b001, 0b0001, 0b0011, 0b011));
588
assert_eq!(TRCSSPCICR4, sysreg(0b10, 0b001, 0b0001, 0b0100, 0b011));
589
assert_eq!(TRCSSPCICR5, sysreg(0b10, 0b001, 0b0001, 0b0101, 0b011));
590
assert_eq!(TRCSSPCICR6, sysreg(0b10, 0b001, 0b0001, 0b0110, 0b011));
591
assert_eq!(TRCSSPCICR7, sysreg(0b10, 0b001, 0b0001, 0b0111, 0b011));
592
}
593
594
#[test]
595
fn test_TRCVMIDCVRn() {
596
assert_eq!(TRCVMIDCVR0, sysreg(0b10, 0b001, 0b0011, 0b0000, 0b001));
597
assert_eq!(TRCVMIDCVR1, sysreg(0b10, 0b001, 0b0011, 0b0010, 0b001));
598
assert_eq!(TRCVMIDCVR2, sysreg(0b10, 0b001, 0b0011, 0b0100, 0b001));
599
assert_eq!(TRCVMIDCVR3, sysreg(0b10, 0b001, 0b0011, 0b0110, 0b001));
600
assert_eq!(TRCVMIDCVR4, sysreg(0b10, 0b001, 0b0011, 0b1000, 0b001));
601
assert_eq!(TRCVMIDCVR5, sysreg(0b10, 0b001, 0b0011, 0b1010, 0b001));
602
assert_eq!(TRCVMIDCVR6, sysreg(0b10, 0b001, 0b0011, 0b1100, 0b001));
603
assert_eq!(TRCVMIDCVR7, sysreg(0b10, 0b001, 0b0011, 0b1110, 0b001));
604
}
605
606