1use crate::{
5 Amcfgr, Amcgcr, Amcntenclr0, Amcntenclr1, Amcntenset0, Amcntenset1, Amcr, Amuserenr, Ccsidr,
6 Ccsidr2, Clidr, Cntfrq, CntfrqEl0, Cnthctl, CnthpCtl, CnthpCval, CnthpTval, CnthpsCtl,
7 CnthpsCval, CnthpsTval, CnthvCtl, CnthvCval, CnthvTval, CnthvsCtl, CnthvsCval, CnthvsTval,
8 Cntkctl, CntpCtl, CntpCval, CntpTval, Cntpct, CntpctEl0, Cntpctss, CntvCtl, CntvCval, CntvTval,
9 Cntvct, Cntvctss, Cntvoff, Contextidr, Cpacr, Csselr, Ctr, CtrEl0, Currentel, Dacr,
10 Dbgauthstatus, Dbgclaimclr, Dbgclaimset, Dbgdccint, Dbgdevid, Dbgdevid1, Dbgdidr, Dbgdrar,
11 Dbgdscrext, Dbgdscrint, Dbgdtrrxext, Dbgdtrrxint, Dbgdtrtxext, Dbgdtrtxint, Dbgosdlr,
12 Dbgoseccr, Dbgoslar, Dbgoslsr, Dbgprcr, Dbgvcr, Dfar, Dfsr, Disr, Dit, Dlr, Dspsr, Dspsr2,
13 Erridr, Errselr, Erxaddr, Erxaddr2, Erxctlr, Erxctlr2, Erxfr, Erxfr2, Erxmisc0, Erxmisc1,
14 Erxmisc2, Erxmisc3, Erxmisc4, Erxmisc5, Erxmisc6, Erxmisc7, Erxstatus, Hcptr, Hcr, Hcr2, Hdcr,
15 Hdfar, Hifar, Hmair0, Hmair1, Hpfar, Hrmr, Hsctlr, Hsr, Htcr, Htpidr, Htrfcr, Httbr, Hvbar,
16 IdDfr0, IdDfr1, IdIsar0, IdIsar1, IdIsar2, IdIsar3, IdIsar4, IdIsar5, IdIsar6, IdMmfr0,
17 IdMmfr1, IdMmfr2, IdMmfr3, IdMmfr4, IdMmfr5, IdPfr0, IdPfr1, IdPfr2, Ifar, Ifsr, Isr, Mair0,
18 Mair1, Midr, Mpidr, Mvbar, Nmrr, Nsacr, Par, Pmccfiltr, Pmccntr, Pmceid0, Pmceid1, Pmceid2,
19 Pmceid3, Pmcntenclr, Pmcntenset, Pmcr, PmcrEl0, Pmintenclr, Pmintenset, Pmmir, Pmovsr,
20 Pmovsset, Pmselr, Pmswinc, Pmuserenr, Pmxevtyper, Prrr, Rmr, Rvbar, Scr, Sctlr, Sdcr, Sder,
21 Tlbtr, TpidrEl0, Tpidrprw, TpidrroEl0, Tpidruro, Tpidrurw, Trfcr, Ttbcr, Ttbcr2, Ttbr0, Ttbr1,
22 Vbar, Vdfsr, Vdisr, Vmpidr, Vpidr, Vtcr, Vttbr,
23};
24#[cfg(feature = "el1")]
25use crate::{
26 ApiakeyhiEl1, ApiakeyloEl1, CcsidrEl1, ClidrEl1, ContextidrEl1, CpacrEl1, CsselrEl1, DisrEl1,
27 ElrEl1, EsrEl1, FarEl1, GcrEl1, GcscrEl1, IccSreEl1, IdAa64dfr0El1, IdAa64dfr1El1,
28 IdAa64isar1El1, IdAa64isar2El1, IdAa64mmfr0El1, IdAa64mmfr1El1, IdAa64mmfr2El1, IdAa64mmfr3El1,
29 IdAa64pfr0El1, IdAa64pfr1El1, IdAa64smfr0El1, IsrEl1, MairEl1, MdccintEl1, MdscrEl1, MidrEl1,
30 MpamidrEl1, MpidrEl1, ParEl1, RgsrEl1, SctlrEl1, SpEl1, SpsrEl1, Tcr2El1, TcrEl1, TfsrEl1,
31 Tfsre0El1, TpidrEl1, Ttbr0El1, Ttbr1El1, VbarEl1,
32};
33#[cfg(feature = "el2")]
34use crate::{
35 CnthctlEl2, CntvoffEl2, ContextidrEl2, CptrEl2, ElrEl2, ElrHyp, EsrEl2, FarEl2, GcscrEl2,
36 HcrEl2, HcrxEl2, Hdfgrtr2El2, Hdfgwtr2El2, Hfgitr2El2, Hfgrtr2El2, Hfgwtr2El2, HfgwtrEl2,
37 HpfarEl2, IccSreEl2, IchHcrEl2, IchVmcrEl2, MairEl2, MdcrEl2, Mpam2El2, MpamhcrEl2,
38 Mpamvpm0El2, Mpamvpm1El2, Mpamvpm2El2, Mpamvpm3El2, Mpamvpm4El2, Mpamvpm5El2, Mpamvpm6El2,
39 Mpamvpm7El2, MpamvpmvEl2, SctlrEl2, SpEl2, SpsrEl2, Tcr2El2, TcrEl2, TfsrEl2, TpidrEl2,
40 Ttbr0El2, Ttbr1El2, VbarEl2, VdisrEl2, VmpidrEl2, VpidrEl2, VsesrEl2, VtcrEl2, VttbrEl2,
41};
42#[cfg(feature = "el3")]
43use crate::{
44 CptrEl3, EsrEl3, GpccrEl3, GptbrEl3, IccSreEl3, MairEl3, MdcrEl3, Mpam3El3, ScrEl3, Sctlr2El3,
45 SctlrEl3, SmcrEl3, SpsrEl3, TcrEl3, Ttbr0El3, ZcrEl3,
46};
47
48#[derive(Clone, Debug, Eq, PartialEq)]
50#[non_exhaustive]
51pub struct SystemRegisters {
52 pub actlr: u32,
54 pub actlr2: u32,
56 #[cfg(feature = "el1")]
57 pub actlr_el1: u64,
59 #[cfg(feature = "el2")]
60 pub actlr_el2: u64,
62 pub adfsr: u32,
64 #[cfg(feature = "el1")]
65 pub afsr0_el1: u64,
67 #[cfg(feature = "el2")]
68 pub afsr0_el2: u64,
70 #[cfg(feature = "el1")]
71 pub afsr1_el1: u64,
73 #[cfg(feature = "el2")]
74 pub afsr1_el2: u64,
76 pub aidr: u32,
78 pub aifsr: u32,
80 pub amair0: u32,
82 pub amair1: u32,
84 #[cfg(feature = "el1")]
85 pub amair_el1: u64,
87 #[cfg(feature = "el2")]
88 pub amair_el2: u64,
90 pub amcfgr: Amcfgr,
92 pub amcgcr: Amcgcr,
94 pub amcntenclr0: Amcntenclr0,
96 pub amcntenclr1: Amcntenclr1,
98 pub amcntenset0: Amcntenset0,
100 pub amcntenset1: Amcntenset1,
102 pub amcr: Amcr,
104 pub amuserenr: Amuserenr,
106 #[cfg(feature = "el1")]
107 pub apiakeyhi_el1: ApiakeyhiEl1,
109 #[cfg(feature = "el1")]
110 pub apiakeylo_el1: ApiakeyloEl1,
112 pub ccsidr: Ccsidr,
114 pub ccsidr2: Ccsidr2,
116 #[cfg(feature = "el1")]
117 pub ccsidr_el1: CcsidrEl1,
119 pub clidr: Clidr,
121 #[cfg(feature = "el1")]
122 pub clidr_el1: ClidrEl1,
124 pub cntfrq: Cntfrq,
126 pub cntfrq_el0: CntfrqEl0,
128 pub cnthctl: Cnthctl,
130 #[cfg(feature = "el2")]
131 pub cnthctl_el2: CnthctlEl2,
133 pub cnthps_ctl: CnthpsCtl,
135 pub cnthps_cval: CnthpsCval,
137 pub cnthps_tval: CnthpsTval,
139 pub cnthp_ctl: CnthpCtl,
141 pub cnthp_cval: CnthpCval,
143 pub cnthp_tval: CnthpTval,
145 pub cnthvs_ctl: CnthvsCtl,
147 pub cnthvs_cval: CnthvsCval,
149 pub cnthvs_tval: CnthvsTval,
151 pub cnthv_ctl: CnthvCtl,
153 pub cnthv_cval: CnthvCval,
155 pub cnthv_tval: CnthvTval,
157 pub cntkctl: Cntkctl,
159 pub cntpct: Cntpct,
161 pub cntpctss: Cntpctss,
163 pub cntpct_el0: CntpctEl0,
165 pub cntp_ctl: CntpCtl,
167 pub cntp_cval: CntpCval,
169 pub cntp_tval: CntpTval,
171 pub cntvct: Cntvct,
173 pub cntvctss: Cntvctss,
175 pub cntvoff: Cntvoff,
177 #[cfg(feature = "el2")]
178 pub cntvoff_el2: CntvoffEl2,
180 pub cntv_ctl: CntvCtl,
182 pub cntv_cval: CntvCval,
184 pub cntv_tval: CntvTval,
186 pub contextidr: Contextidr,
188 #[cfg(feature = "el1")]
189 pub contextidr_el1: ContextidrEl1,
191 #[cfg(feature = "el2")]
192 pub contextidr_el2: ContextidrEl2,
194 pub cpacr: Cpacr,
196 #[cfg(feature = "el1")]
197 pub cpacr_el1: CpacrEl1,
199 #[cfg(feature = "el2")]
200 pub cptr_el2: CptrEl2,
202 #[cfg(feature = "el3")]
203 pub cptr_el3: CptrEl3,
205 pub csselr: Csselr,
207 #[cfg(feature = "el1")]
208 pub csselr_el1: CsselrEl1,
210 pub ctr: Ctr,
212 pub ctr_el0: CtrEl0,
214 pub currentel: Currentel,
216 pub dacr: Dacr,
218 pub dbgauthstatus: Dbgauthstatus,
220 pub dbgclaimclr: Dbgclaimclr,
222 pub dbgclaimset: Dbgclaimset,
224 pub dbgdccint: Dbgdccint,
226 pub dbgdevid: Dbgdevid,
228 pub dbgdevid1: Dbgdevid1,
230 pub dbgdevid2: u32,
232 pub dbgdidr: Dbgdidr,
234 pub dbgdrar: Dbgdrar,
236 pub dbgdsar: u64,
238 pub dbgdscrext: Dbgdscrext,
240 pub dbgdscrint: Dbgdscrint,
242 pub dbgdtrrxext: Dbgdtrrxext,
244 pub dbgdtrrxint: Dbgdtrrxint,
246 pub dbgdtrtxext: Dbgdtrtxext,
248 pub dbgdtrtxint: Dbgdtrtxint,
250 pub dbgosdlr: Dbgosdlr,
252 pub dbgoseccr: Dbgoseccr,
254 pub dbgoslar: Dbgoslar,
256 pub dbgoslsr: Dbgoslsr,
258 pub dbgprcr: Dbgprcr,
260 pub dbgvcr: Dbgvcr,
262 pub dbgwfar: u32,
264 pub dfar: Dfar,
266 pub dfsr: Dfsr,
268 pub disr: Disr,
270 #[cfg(feature = "el1")]
271 pub disr_el1: DisrEl1,
273 pub dit: Dit,
275 pub dlr: Dlr,
277 pub dspsr: Dspsr,
279 pub dspsr2: Dspsr2,
281 #[cfg(feature = "el1")]
282 pub elr_el1: ElrEl1,
284 #[cfg(feature = "el2")]
285 pub elr_el2: ElrEl2,
287 #[cfg(feature = "el2")]
288 pub elr_hyp: ElrHyp,
290 pub erridr: Erridr,
292 pub errselr: Errselr,
294 pub erxaddr: Erxaddr,
296 pub erxaddr2: Erxaddr2,
298 pub erxctlr: Erxctlr,
300 pub erxctlr2: Erxctlr2,
302 pub erxfr: Erxfr,
304 pub erxfr2: Erxfr2,
306 pub erxmisc0: Erxmisc0,
308 pub erxmisc1: Erxmisc1,
310 pub erxmisc2: Erxmisc2,
312 pub erxmisc3: Erxmisc3,
314 pub erxmisc4: Erxmisc4,
316 pub erxmisc5: Erxmisc5,
318 pub erxmisc6: Erxmisc6,
320 pub erxmisc7: Erxmisc7,
322 pub erxstatus: Erxstatus,
324 #[cfg(feature = "el1")]
325 pub esr_el1: EsrEl1,
327 #[cfg(feature = "el2")]
328 pub esr_el2: EsrEl2,
330 #[cfg(feature = "el3")]
331 pub esr_el3: EsrEl3,
333 #[cfg(feature = "el1")]
334 pub far_el1: FarEl1,
336 #[cfg(feature = "el2")]
337 pub far_el2: FarEl2,
339 pub fcseidr: u32,
341 #[cfg(feature = "el1")]
342 pub gcr_el1: GcrEl1,
344 #[cfg(feature = "el1")]
345 pub gcscr_el1: GcscrEl1,
347 #[cfg(feature = "el2")]
348 pub gcscr_el2: GcscrEl2,
350 #[cfg(feature = "el3")]
351 pub gpccr_el3: GpccrEl3,
353 #[cfg(feature = "el3")]
354 pub gptbr_el3: GptbrEl3,
356 pub hacr: u32,
358 #[cfg(feature = "el2")]
359 pub hacr_el2: u64,
361 pub hactlr: u32,
363 pub hactlr2: u32,
365 pub hadfsr: u32,
367 pub haifsr: u32,
369 pub hamair0: u32,
371 pub hamair1: u32,
373 pub hcptr: Hcptr,
375 pub hcr: Hcr,
377 pub hcr2: Hcr2,
379 #[cfg(feature = "el2")]
380 pub hcrx_el2: HcrxEl2,
382 #[cfg(feature = "el2")]
383 pub hcr_el2: HcrEl2,
385 pub hdcr: Hdcr,
387 pub hdfar: Hdfar,
389 #[cfg(feature = "el2")]
390 pub hdfgrtr2_el2: Hdfgrtr2El2,
392 #[cfg(feature = "el2")]
393 pub hdfgwtr2_el2: Hdfgwtr2El2,
395 #[cfg(feature = "el2")]
396 pub hfgitr2_el2: Hfgitr2El2,
398 #[cfg(feature = "el2")]
399 pub hfgrtr2_el2: Hfgrtr2El2,
401 #[cfg(feature = "el2")]
402 pub hfgwtr2_el2: Hfgwtr2El2,
404 #[cfg(feature = "el2")]
405 pub hfgwtr_el2: HfgwtrEl2,
407 pub hifar: Hifar,
409 pub hmair0: Hmair0,
411 pub hmair1: Hmair1,
413 pub hpfar: Hpfar,
415 #[cfg(feature = "el2")]
416 pub hpfar_el2: HpfarEl2,
418 pub hrmr: Hrmr,
420 pub hsctlr: Hsctlr,
422 pub hsr: Hsr,
424 pub hstr: u32,
426 #[cfg(feature = "el2")]
427 pub hstr_el2: u64,
429 pub htcr: Htcr,
431 pub htpidr: Htpidr,
433 pub htrfcr: Htrfcr,
435 pub httbr: Httbr,
437 pub hvbar: Hvbar,
439 #[cfg(feature = "el1")]
440 pub icc_sre_el1: IccSreEl1,
442 #[cfg(feature = "el2")]
443 pub icc_sre_el2: IccSreEl2,
445 #[cfg(feature = "el3")]
446 pub icc_sre_el3: IccSreEl3,
448 #[cfg(feature = "el2")]
449 pub ich_hcr_el2: IchHcrEl2,
451 #[cfg(feature = "el2")]
452 pub ich_vmcr_el2: IchVmcrEl2,
454 #[cfg(feature = "el1")]
455 pub id_aa64dfr0_el1: IdAa64dfr0El1,
457 #[cfg(feature = "el1")]
458 pub id_aa64dfr1_el1: IdAa64dfr1El1,
460 #[cfg(feature = "el1")]
461 pub id_aa64isar1_el1: IdAa64isar1El1,
463 #[cfg(feature = "el1")]
464 pub id_aa64isar2_el1: IdAa64isar2El1,
466 #[cfg(feature = "el1")]
467 pub id_aa64mmfr0_el1: IdAa64mmfr0El1,
469 #[cfg(feature = "el1")]
470 pub id_aa64mmfr1_el1: IdAa64mmfr1El1,
472 #[cfg(feature = "el1")]
473 pub id_aa64mmfr2_el1: IdAa64mmfr2El1,
475 #[cfg(feature = "el1")]
476 pub id_aa64mmfr3_el1: IdAa64mmfr3El1,
478 #[cfg(feature = "el1")]
479 pub id_aa64pfr0_el1: IdAa64pfr0El1,
481 #[cfg(feature = "el1")]
482 pub id_aa64pfr1_el1: IdAa64pfr1El1,
484 #[cfg(feature = "el1")]
485 pub id_aa64smfr0_el1: IdAa64smfr0El1,
487 pub id_afr0: u32,
489 pub id_dfr0: IdDfr0,
491 pub id_dfr1: IdDfr1,
493 pub id_isar0: IdIsar0,
495 pub id_isar1: IdIsar1,
497 pub id_isar2: IdIsar2,
499 pub id_isar3: IdIsar3,
501 pub id_isar4: IdIsar4,
503 pub id_isar5: IdIsar5,
505 pub id_isar6: IdIsar6,
507 pub id_mmfr0: IdMmfr0,
509 pub id_mmfr1: IdMmfr1,
511 pub id_mmfr2: IdMmfr2,
513 pub id_mmfr3: IdMmfr3,
515 pub id_mmfr4: IdMmfr4,
517 pub id_mmfr5: IdMmfr5,
519 pub id_pfr0: IdPfr0,
521 pub id_pfr1: IdPfr1,
523 pub id_pfr2: IdPfr2,
525 pub ifar: Ifar,
527 pub ifsr: Ifsr,
529 pub isr: Isr,
531 #[cfg(feature = "el1")]
532 pub isr_el1: IsrEl1,
534 pub jidr: u32,
536 pub jmcr: u32,
538 pub joscr: u32,
540 pub mair0: Mair0,
542 pub mair1: Mair1,
544 #[cfg(feature = "el1")]
545 pub mair_el1: MairEl1,
547 #[cfg(feature = "el2")]
548 pub mair_el2: MairEl2,
550 #[cfg(feature = "el3")]
551 pub mair_el3: MairEl3,
553 #[cfg(feature = "el1")]
554 pub mdccint_el1: MdccintEl1,
556 #[cfg(feature = "el2")]
557 pub mdcr_el2: MdcrEl2,
559 #[cfg(feature = "el3")]
560 pub mdcr_el3: MdcrEl3,
562 #[cfg(feature = "el1")]
563 pub mdscr_el1: MdscrEl1,
565 pub midr: Midr,
567 #[cfg(feature = "el1")]
568 pub midr_el1: MidrEl1,
570 #[cfg(feature = "el2")]
571 pub mpam2_el2: Mpam2El2,
573 #[cfg(feature = "el3")]
574 pub mpam3_el3: Mpam3El3,
576 #[cfg(feature = "el2")]
577 pub mpamhcr_el2: MpamhcrEl2,
579 #[cfg(feature = "el1")]
580 pub mpamidr_el1: MpamidrEl1,
582 #[cfg(feature = "el2")]
583 pub mpamvpm0_el2: Mpamvpm0El2,
585 #[cfg(feature = "el2")]
586 pub mpamvpm1_el2: Mpamvpm1El2,
588 #[cfg(feature = "el2")]
589 pub mpamvpm2_el2: Mpamvpm2El2,
591 #[cfg(feature = "el2")]
592 pub mpamvpm3_el2: Mpamvpm3El2,
594 #[cfg(feature = "el2")]
595 pub mpamvpm4_el2: Mpamvpm4El2,
597 #[cfg(feature = "el2")]
598 pub mpamvpm5_el2: Mpamvpm5El2,
600 #[cfg(feature = "el2")]
601 pub mpamvpm6_el2: Mpamvpm6El2,
603 #[cfg(feature = "el2")]
604 pub mpamvpm7_el2: Mpamvpm7El2,
606 #[cfg(feature = "el2")]
607 pub mpamvpmv_el2: MpamvpmvEl2,
609 pub mpidr: Mpidr,
611 #[cfg(feature = "el1")]
612 pub mpidr_el1: MpidrEl1,
614 pub mvbar: Mvbar,
616 pub nmrr: Nmrr,
618 pub nsacr: Nsacr,
620 pub par: Par,
622 #[cfg(feature = "el1")]
623 pub par_el1: ParEl1,
625 pub pmccfiltr: Pmccfiltr,
627 pub pmccntr: Pmccntr,
629 pub pmceid0: Pmceid0,
631 pub pmceid1: Pmceid1,
633 pub pmceid2: Pmceid2,
635 pub pmceid3: Pmceid3,
637 pub pmcntenclr: Pmcntenclr,
639 pub pmcntenset: Pmcntenset,
641 pub pmcr: Pmcr,
643 pub pmcr_el0: PmcrEl0,
645 pub pmintenclr: Pmintenclr,
647 pub pmintenset: Pmintenset,
649 pub pmmir: Pmmir,
651 pub pmovsr: Pmovsr,
653 pub pmovsset: Pmovsset,
655 pub pmselr: Pmselr,
657 pub pmswinc: Pmswinc,
659 pub pmuserenr: Pmuserenr,
661 pub pmxevtyper: Pmxevtyper,
663 pub prrr: Prrr,
665 pub revidr: u32,
667 #[cfg(feature = "el1")]
668 pub rgsr_el1: RgsrEl1,
670 pub rmr: Rmr,
672 pub rvbar: Rvbar,
674 pub scr: Scr,
676 #[cfg(feature = "el3")]
677 pub scr_el3: ScrEl3,
679 pub sctlr: Sctlr,
681 #[cfg(feature = "el3")]
682 pub sctlr2_el3: Sctlr2El3,
684 #[cfg(feature = "el1")]
685 pub sctlr_el1: SctlrEl1,
687 #[cfg(feature = "el2")]
688 pub sctlr_el2: SctlrEl2,
690 #[cfg(feature = "el3")]
691 pub sctlr_el3: SctlrEl3,
693 pub sdcr: Sdcr,
695 pub sder: Sder,
697 #[cfg(feature = "el3")]
698 pub smcr_el3: SmcrEl3,
700 #[cfg(feature = "el1")]
701 pub spsr_el1: SpsrEl1,
703 #[cfg(feature = "el2")]
704 pub spsr_el2: SpsrEl2,
706 #[cfg(feature = "el3")]
707 pub spsr_el3: SpsrEl3,
709 #[cfg(feature = "el1")]
710 pub sp_el1: SpEl1,
712 #[cfg(feature = "el2")]
713 pub sp_el2: SpEl2,
715 pub tcmtr: u32,
717 #[cfg(feature = "el1")]
718 pub tcr2_el1: Tcr2El1,
720 #[cfg(feature = "el2")]
721 pub tcr2_el2: Tcr2El2,
723 #[cfg(feature = "el1")]
724 pub tcr_el1: TcrEl1,
726 #[cfg(feature = "el2")]
727 pub tcr_el2: TcrEl2,
729 #[cfg(feature = "el3")]
730 pub tcr_el3: TcrEl3,
732 #[cfg(feature = "el1")]
733 pub tfsre0_el1: Tfsre0El1,
735 #[cfg(feature = "el1")]
736 pub tfsr_el1: TfsrEl1,
738 #[cfg(feature = "el2")]
739 pub tfsr_el2: TfsrEl2,
741 pub tlbtr: Tlbtr,
743 pub tpidrprw: Tpidrprw,
745 pub tpidrro_el0: TpidrroEl0,
747 pub tpidruro: Tpidruro,
749 pub tpidrurw: Tpidrurw,
751 pub tpidr_el0: TpidrEl0,
753 #[cfg(feature = "el1")]
754 pub tpidr_el1: TpidrEl1,
756 #[cfg(feature = "el2")]
757 pub tpidr_el2: TpidrEl2,
759 pub trfcr: Trfcr,
761 pub ttbcr: Ttbcr,
763 pub ttbcr2: Ttbcr2,
765 pub ttbr0: Ttbr0,
767 #[cfg(feature = "el1")]
768 pub ttbr0_el1: Ttbr0El1,
770 #[cfg(feature = "el2")]
771 pub ttbr0_el2: Ttbr0El2,
773 #[cfg(feature = "el3")]
774 pub ttbr0_el3: Ttbr0El3,
776 pub ttbr1: Ttbr1,
778 #[cfg(feature = "el1")]
779 pub ttbr1_el1: Ttbr1El1,
781 #[cfg(feature = "el2")]
782 pub ttbr1_el2: Ttbr1El2,
784 pub vbar: Vbar,
786 #[cfg(feature = "el1")]
787 pub vbar_el1: VbarEl1,
789 #[cfg(feature = "el2")]
790 pub vbar_el2: VbarEl2,
792 pub vdfsr: Vdfsr,
794 pub vdisr: Vdisr,
796 #[cfg(feature = "el2")]
797 pub vdisr_el2: VdisrEl2,
799 pub vmpidr: Vmpidr,
801 #[cfg(feature = "el2")]
802 pub vmpidr_el2: VmpidrEl2,
804 pub vpidr: Vpidr,
806 #[cfg(feature = "el2")]
807 pub vpidr_el2: VpidrEl2,
809 #[cfg(feature = "el2")]
810 pub vsesr_el2: VsesrEl2,
812 pub vtcr: Vtcr,
814 #[cfg(feature = "el2")]
815 pub vtcr_el2: VtcrEl2,
817 pub vttbr: Vttbr,
819 #[cfg(feature = "el2")]
820 pub vttbr_el2: VttbrEl2,
822 #[cfg(feature = "el3")]
823 pub zcr_el3: ZcrEl3,
825}
826
827impl SystemRegisters {
828 pub(crate) const fn new() -> Self {
829 Self {
830 actlr: 0,
831 actlr2: 0,
832 #[cfg(feature = "el1")]
833 actlr_el1: 0,
834 #[cfg(feature = "el2")]
835 actlr_el2: 0,
836 adfsr: 0,
837 #[cfg(feature = "el1")]
838 afsr0_el1: 0,
839 #[cfg(feature = "el2")]
840 afsr0_el2: 0,
841 #[cfg(feature = "el1")]
842 afsr1_el1: 0,
843 #[cfg(feature = "el2")]
844 afsr1_el2: 0,
845 aidr: 0,
846 aifsr: 0,
847 amair0: 0,
848 amair1: 0,
849 #[cfg(feature = "el1")]
850 amair_el1: 0,
851 #[cfg(feature = "el2")]
852 amair_el2: 0,
853 amcfgr: Amcfgr::empty(),
854 amcgcr: Amcgcr::empty(),
855 amcntenclr0: Amcntenclr0::empty(),
856 amcntenclr1: Amcntenclr1::empty(),
857 amcntenset0: Amcntenset0::empty(),
858 amcntenset1: Amcntenset1::empty(),
859 amcr: Amcr::empty(),
860 amuserenr: Amuserenr::empty(),
861 #[cfg(feature = "el1")]
862 apiakeyhi_el1: ApiakeyhiEl1::empty(),
863 #[cfg(feature = "el1")]
864 apiakeylo_el1: ApiakeyloEl1::empty(),
865 ccsidr: Ccsidr::empty(),
866 ccsidr2: Ccsidr2::empty(),
867 #[cfg(feature = "el1")]
868 ccsidr_el1: CcsidrEl1::empty(),
869 clidr: Clidr::empty(),
870 #[cfg(feature = "el1")]
871 clidr_el1: ClidrEl1::empty(),
872 cntfrq: Cntfrq::empty(),
873 cntfrq_el0: CntfrqEl0::empty(),
874 cnthctl: Cnthctl::empty(),
875 #[cfg(feature = "el2")]
876 cnthctl_el2: CnthctlEl2::empty(),
877 cnthps_ctl: CnthpsCtl::empty(),
878 cnthps_cval: CnthpsCval::empty(),
879 cnthps_tval: CnthpsTval::empty(),
880 cnthp_ctl: CnthpCtl::empty(),
881 cnthp_cval: CnthpCval::empty(),
882 cnthp_tval: CnthpTval::empty(),
883 cnthvs_ctl: CnthvsCtl::empty(),
884 cnthvs_cval: CnthvsCval::empty(),
885 cnthvs_tval: CnthvsTval::empty(),
886 cnthv_ctl: CnthvCtl::empty(),
887 cnthv_cval: CnthvCval::empty(),
888 cnthv_tval: CnthvTval::empty(),
889 cntkctl: Cntkctl::empty(),
890 cntpct: Cntpct::empty(),
891 cntpctss: Cntpctss::empty(),
892 cntpct_el0: CntpctEl0::empty(),
893 cntp_ctl: CntpCtl::empty(),
894 cntp_cval: CntpCval::empty(),
895 cntp_tval: CntpTval::empty(),
896 cntvct: Cntvct::empty(),
897 cntvctss: Cntvctss::empty(),
898 cntvoff: Cntvoff::empty(),
899 #[cfg(feature = "el2")]
900 cntvoff_el2: CntvoffEl2::empty(),
901 cntv_ctl: CntvCtl::empty(),
902 cntv_cval: CntvCval::empty(),
903 cntv_tval: CntvTval::empty(),
904 contextidr: Contextidr::empty(),
905 #[cfg(feature = "el1")]
906 contextidr_el1: ContextidrEl1::empty(),
907 #[cfg(feature = "el2")]
908 contextidr_el2: ContextidrEl2::empty(),
909 cpacr: Cpacr::empty(),
910 #[cfg(feature = "el1")]
911 cpacr_el1: CpacrEl1::empty(),
912 #[cfg(feature = "el2")]
913 cptr_el2: CptrEl2::empty(),
914 #[cfg(feature = "el3")]
915 cptr_el3: CptrEl3::empty(),
916 csselr: Csselr::empty(),
917 #[cfg(feature = "el1")]
918 csselr_el1: CsselrEl1::empty(),
919 ctr: Ctr::empty(),
920 ctr_el0: CtrEl0::empty(),
921 currentel: Currentel::empty(),
922 dacr: Dacr::empty(),
923 dbgauthstatus: Dbgauthstatus::empty(),
924 dbgclaimclr: Dbgclaimclr::empty(),
925 dbgclaimset: Dbgclaimset::empty(),
926 dbgdccint: Dbgdccint::empty(),
927 dbgdevid: Dbgdevid::empty(),
928 dbgdevid1: Dbgdevid1::empty(),
929 dbgdevid2: 0,
930 dbgdidr: Dbgdidr::empty(),
931 dbgdrar: Dbgdrar::empty(),
932 dbgdsar: 0,
933 dbgdscrext: Dbgdscrext::empty(),
934 dbgdscrint: Dbgdscrint::empty(),
935 dbgdtrrxext: Dbgdtrrxext::empty(),
936 dbgdtrrxint: Dbgdtrrxint::empty(),
937 dbgdtrtxext: Dbgdtrtxext::empty(),
938 dbgdtrtxint: Dbgdtrtxint::empty(),
939 dbgosdlr: Dbgosdlr::empty(),
940 dbgoseccr: Dbgoseccr::empty(),
941 dbgoslar: Dbgoslar::empty(),
942 dbgoslsr: Dbgoslsr::empty(),
943 dbgprcr: Dbgprcr::empty(),
944 dbgvcr: Dbgvcr::empty(),
945 dbgwfar: 0,
946 dfar: Dfar::empty(),
947 dfsr: Dfsr::empty(),
948 disr: Disr::empty(),
949 #[cfg(feature = "el1")]
950 disr_el1: DisrEl1::empty(),
951 dit: Dit::empty(),
952 dlr: Dlr::empty(),
953 dspsr: Dspsr::empty(),
954 dspsr2: Dspsr2::empty(),
955 #[cfg(feature = "el1")]
956 elr_el1: ElrEl1::empty(),
957 #[cfg(feature = "el2")]
958 elr_el2: ElrEl2::empty(),
959 #[cfg(feature = "el2")]
960 elr_hyp: ElrHyp::empty(),
961 erridr: Erridr::empty(),
962 errselr: Errselr::empty(),
963 erxaddr: Erxaddr::empty(),
964 erxaddr2: Erxaddr2::empty(),
965 erxctlr: Erxctlr::empty(),
966 erxctlr2: Erxctlr2::empty(),
967 erxfr: Erxfr::empty(),
968 erxfr2: Erxfr2::empty(),
969 erxmisc0: Erxmisc0::empty(),
970 erxmisc1: Erxmisc1::empty(),
971 erxmisc2: Erxmisc2::empty(),
972 erxmisc3: Erxmisc3::empty(),
973 erxmisc4: Erxmisc4::empty(),
974 erxmisc5: Erxmisc5::empty(),
975 erxmisc6: Erxmisc6::empty(),
976 erxmisc7: Erxmisc7::empty(),
977 erxstatus: Erxstatus::empty(),
978 #[cfg(feature = "el1")]
979 esr_el1: EsrEl1::empty(),
980 #[cfg(feature = "el2")]
981 esr_el2: EsrEl2::empty(),
982 #[cfg(feature = "el3")]
983 esr_el3: EsrEl3::empty(),
984 #[cfg(feature = "el1")]
985 far_el1: FarEl1::empty(),
986 #[cfg(feature = "el2")]
987 far_el2: FarEl2::empty(),
988 fcseidr: 0,
989 #[cfg(feature = "el1")]
990 gcr_el1: GcrEl1::empty(),
991 #[cfg(feature = "el1")]
992 gcscr_el1: GcscrEl1::empty(),
993 #[cfg(feature = "el2")]
994 gcscr_el2: GcscrEl2::empty(),
995 #[cfg(feature = "el3")]
996 gpccr_el3: GpccrEl3::empty(),
997 #[cfg(feature = "el3")]
998 gptbr_el3: GptbrEl3::empty(),
999 hacr: 0,
1000 #[cfg(feature = "el2")]
1001 hacr_el2: 0,
1002 hactlr: 0,
1003 hactlr2: 0,
1004 hadfsr: 0,
1005 haifsr: 0,
1006 hamair0: 0,
1007 hamair1: 0,
1008 hcptr: Hcptr::empty(),
1009 hcr: Hcr::empty(),
1010 hcr2: Hcr2::empty(),
1011 #[cfg(feature = "el2")]
1012 hcrx_el2: HcrxEl2::empty(),
1013 #[cfg(feature = "el2")]
1014 hcr_el2: HcrEl2::empty(),
1015 hdcr: Hdcr::empty(),
1016 hdfar: Hdfar::empty(),
1017 #[cfg(feature = "el2")]
1018 hdfgrtr2_el2: Hdfgrtr2El2::empty(),
1019 #[cfg(feature = "el2")]
1020 hdfgwtr2_el2: Hdfgwtr2El2::empty(),
1021 #[cfg(feature = "el2")]
1022 hfgitr2_el2: Hfgitr2El2::empty(),
1023 #[cfg(feature = "el2")]
1024 hfgrtr2_el2: Hfgrtr2El2::empty(),
1025 #[cfg(feature = "el2")]
1026 hfgwtr2_el2: Hfgwtr2El2::empty(),
1027 #[cfg(feature = "el2")]
1028 hfgwtr_el2: HfgwtrEl2::empty(),
1029 hifar: Hifar::empty(),
1030 hmair0: Hmair0::empty(),
1031 hmair1: Hmair1::empty(),
1032 hpfar: Hpfar::empty(),
1033 #[cfg(feature = "el2")]
1034 hpfar_el2: HpfarEl2::empty(),
1035 hrmr: Hrmr::empty(),
1036 hsctlr: Hsctlr::empty(),
1037 hsr: Hsr::empty(),
1038 hstr: 0,
1039 #[cfg(feature = "el2")]
1040 hstr_el2: 0,
1041 htcr: Htcr::empty(),
1042 htpidr: Htpidr::empty(),
1043 htrfcr: Htrfcr::empty(),
1044 httbr: Httbr::empty(),
1045 hvbar: Hvbar::empty(),
1046 #[cfg(feature = "el1")]
1047 icc_sre_el1: IccSreEl1::empty(),
1048 #[cfg(feature = "el2")]
1049 icc_sre_el2: IccSreEl2::empty(),
1050 #[cfg(feature = "el3")]
1051 icc_sre_el3: IccSreEl3::empty(),
1052 #[cfg(feature = "el2")]
1053 ich_hcr_el2: IchHcrEl2::empty(),
1054 #[cfg(feature = "el2")]
1055 ich_vmcr_el2: IchVmcrEl2::empty(),
1056 #[cfg(feature = "el1")]
1057 id_aa64dfr0_el1: IdAa64dfr0El1::empty(),
1058 #[cfg(feature = "el1")]
1059 id_aa64dfr1_el1: IdAa64dfr1El1::empty(),
1060 #[cfg(feature = "el1")]
1061 id_aa64isar1_el1: IdAa64isar1El1::empty(),
1062 #[cfg(feature = "el1")]
1063 id_aa64isar2_el1: IdAa64isar2El1::empty(),
1064 #[cfg(feature = "el1")]
1065 id_aa64mmfr0_el1: IdAa64mmfr0El1::empty(),
1066 #[cfg(feature = "el1")]
1067 id_aa64mmfr1_el1: IdAa64mmfr1El1::empty(),
1068 #[cfg(feature = "el1")]
1069 id_aa64mmfr2_el1: IdAa64mmfr2El1::empty(),
1070 #[cfg(feature = "el1")]
1071 id_aa64mmfr3_el1: IdAa64mmfr3El1::empty(),
1072 #[cfg(feature = "el1")]
1073 id_aa64pfr0_el1: IdAa64pfr0El1::empty(),
1074 #[cfg(feature = "el1")]
1075 id_aa64pfr1_el1: IdAa64pfr1El1::empty(),
1076 #[cfg(feature = "el1")]
1077 id_aa64smfr0_el1: IdAa64smfr0El1::empty(),
1078 id_afr0: 0,
1079 id_dfr0: IdDfr0::empty(),
1080 id_dfr1: IdDfr1::empty(),
1081 id_isar0: IdIsar0::empty(),
1082 id_isar1: IdIsar1::empty(),
1083 id_isar2: IdIsar2::empty(),
1084 id_isar3: IdIsar3::empty(),
1085 id_isar4: IdIsar4::empty(),
1086 id_isar5: IdIsar5::empty(),
1087 id_isar6: IdIsar6::empty(),
1088 id_mmfr0: IdMmfr0::empty(),
1089 id_mmfr1: IdMmfr1::empty(),
1090 id_mmfr2: IdMmfr2::empty(),
1091 id_mmfr3: IdMmfr3::empty(),
1092 id_mmfr4: IdMmfr4::empty(),
1093 id_mmfr5: IdMmfr5::empty(),
1094 id_pfr0: IdPfr0::empty(),
1095 id_pfr1: IdPfr1::empty(),
1096 id_pfr2: IdPfr2::empty(),
1097 ifar: Ifar::empty(),
1098 ifsr: Ifsr::empty(),
1099 isr: Isr::empty(),
1100 #[cfg(feature = "el1")]
1101 isr_el1: IsrEl1::empty(),
1102 jidr: 0,
1103 jmcr: 0,
1104 joscr: 0,
1105 mair0: Mair0::empty(),
1106 mair1: Mair1::empty(),
1107 #[cfg(feature = "el1")]
1108 mair_el1: MairEl1::empty(),
1109 #[cfg(feature = "el2")]
1110 mair_el2: MairEl2::empty(),
1111 #[cfg(feature = "el3")]
1112 mair_el3: MairEl3::empty(),
1113 #[cfg(feature = "el1")]
1114 mdccint_el1: MdccintEl1::empty(),
1115 #[cfg(feature = "el2")]
1116 mdcr_el2: MdcrEl2::empty(),
1117 #[cfg(feature = "el3")]
1118 mdcr_el3: MdcrEl3::empty(),
1119 #[cfg(feature = "el1")]
1120 mdscr_el1: MdscrEl1::empty(),
1121 midr: Midr::empty(),
1122 #[cfg(feature = "el1")]
1123 midr_el1: MidrEl1::empty(),
1124 #[cfg(feature = "el2")]
1125 mpam2_el2: Mpam2El2::empty(),
1126 #[cfg(feature = "el3")]
1127 mpam3_el3: Mpam3El3::empty(),
1128 #[cfg(feature = "el2")]
1129 mpamhcr_el2: MpamhcrEl2::empty(),
1130 #[cfg(feature = "el1")]
1131 mpamidr_el1: MpamidrEl1::empty(),
1132 #[cfg(feature = "el2")]
1133 mpamvpm0_el2: Mpamvpm0El2::empty(),
1134 #[cfg(feature = "el2")]
1135 mpamvpm1_el2: Mpamvpm1El2::empty(),
1136 #[cfg(feature = "el2")]
1137 mpamvpm2_el2: Mpamvpm2El2::empty(),
1138 #[cfg(feature = "el2")]
1139 mpamvpm3_el2: Mpamvpm3El2::empty(),
1140 #[cfg(feature = "el2")]
1141 mpamvpm4_el2: Mpamvpm4El2::empty(),
1142 #[cfg(feature = "el2")]
1143 mpamvpm5_el2: Mpamvpm5El2::empty(),
1144 #[cfg(feature = "el2")]
1145 mpamvpm6_el2: Mpamvpm6El2::empty(),
1146 #[cfg(feature = "el2")]
1147 mpamvpm7_el2: Mpamvpm7El2::empty(),
1148 #[cfg(feature = "el2")]
1149 mpamvpmv_el2: MpamvpmvEl2::empty(),
1150 mpidr: Mpidr::empty(),
1151 #[cfg(feature = "el1")]
1152 mpidr_el1: MpidrEl1::empty(),
1153 mvbar: Mvbar::empty(),
1154 nmrr: Nmrr::empty(),
1155 nsacr: Nsacr::empty(),
1156 par: Par::empty(),
1157 #[cfg(feature = "el1")]
1158 par_el1: ParEl1::empty(),
1159 pmccfiltr: Pmccfiltr::empty(),
1160 pmccntr: Pmccntr::empty(),
1161 pmceid0: Pmceid0::empty(),
1162 pmceid1: Pmceid1::empty(),
1163 pmceid2: Pmceid2::empty(),
1164 pmceid3: Pmceid3::empty(),
1165 pmcntenclr: Pmcntenclr::empty(),
1166 pmcntenset: Pmcntenset::empty(),
1167 pmcr: Pmcr::empty(),
1168 pmcr_el0: PmcrEl0::empty(),
1169 pmintenclr: Pmintenclr::empty(),
1170 pmintenset: Pmintenset::empty(),
1171 pmmir: Pmmir::empty(),
1172 pmovsr: Pmovsr::empty(),
1173 pmovsset: Pmovsset::empty(),
1174 pmselr: Pmselr::empty(),
1175 pmswinc: Pmswinc::empty(),
1176 pmuserenr: Pmuserenr::empty(),
1177 pmxevtyper: Pmxevtyper::empty(),
1178 prrr: Prrr::empty(),
1179 revidr: 0,
1180 #[cfg(feature = "el1")]
1181 rgsr_el1: RgsrEl1::empty(),
1182 rmr: Rmr::empty(),
1183 rvbar: Rvbar::empty(),
1184 scr: Scr::empty(),
1185 #[cfg(feature = "el3")]
1186 scr_el3: ScrEl3::empty(),
1187 sctlr: Sctlr::empty(),
1188 #[cfg(feature = "el3")]
1189 sctlr2_el3: Sctlr2El3::empty(),
1190 #[cfg(feature = "el1")]
1191 sctlr_el1: SctlrEl1::empty(),
1192 #[cfg(feature = "el2")]
1193 sctlr_el2: SctlrEl2::empty(),
1194 #[cfg(feature = "el3")]
1195 sctlr_el3: SctlrEl3::empty(),
1196 sdcr: Sdcr::empty(),
1197 sder: Sder::empty(),
1198 #[cfg(feature = "el3")]
1199 smcr_el3: SmcrEl3::empty(),
1200 #[cfg(feature = "el1")]
1201 spsr_el1: SpsrEl1::empty(),
1202 #[cfg(feature = "el2")]
1203 spsr_el2: SpsrEl2::empty(),
1204 #[cfg(feature = "el3")]
1205 spsr_el3: SpsrEl3::empty(),
1206 #[cfg(feature = "el1")]
1207 sp_el1: SpEl1::empty(),
1208 #[cfg(feature = "el2")]
1209 sp_el2: SpEl2::empty(),
1210 tcmtr: 0,
1211 #[cfg(feature = "el1")]
1212 tcr2_el1: Tcr2El1::empty(),
1213 #[cfg(feature = "el2")]
1214 tcr2_el2: Tcr2El2::empty(),
1215 #[cfg(feature = "el1")]
1216 tcr_el1: TcrEl1::empty(),
1217 #[cfg(feature = "el2")]
1218 tcr_el2: TcrEl2::empty(),
1219 #[cfg(feature = "el3")]
1220 tcr_el3: TcrEl3::empty(),
1221 #[cfg(feature = "el1")]
1222 tfsre0_el1: Tfsre0El1::empty(),
1223 #[cfg(feature = "el1")]
1224 tfsr_el1: TfsrEl1::empty(),
1225 #[cfg(feature = "el2")]
1226 tfsr_el2: TfsrEl2::empty(),
1227 tlbtr: Tlbtr::empty(),
1228 tpidrprw: Tpidrprw::empty(),
1229 tpidrro_el0: TpidrroEl0::empty(),
1230 tpidruro: Tpidruro::empty(),
1231 tpidrurw: Tpidrurw::empty(),
1232 tpidr_el0: TpidrEl0::empty(),
1233 #[cfg(feature = "el1")]
1234 tpidr_el1: TpidrEl1::empty(),
1235 #[cfg(feature = "el2")]
1236 tpidr_el2: TpidrEl2::empty(),
1237 trfcr: Trfcr::empty(),
1238 ttbcr: Ttbcr::empty(),
1239 ttbcr2: Ttbcr2::empty(),
1240 ttbr0: Ttbr0::empty(),
1241 #[cfg(feature = "el1")]
1242 ttbr0_el1: Ttbr0El1::empty(),
1243 #[cfg(feature = "el2")]
1244 ttbr0_el2: Ttbr0El2::empty(),
1245 #[cfg(feature = "el3")]
1246 ttbr0_el3: Ttbr0El3::empty(),
1247 ttbr1: Ttbr1::empty(),
1248 #[cfg(feature = "el1")]
1249 ttbr1_el1: Ttbr1El1::empty(),
1250 #[cfg(feature = "el2")]
1251 ttbr1_el2: Ttbr1El2::empty(),
1252 vbar: Vbar::empty(),
1253 #[cfg(feature = "el1")]
1254 vbar_el1: VbarEl1::empty(),
1255 #[cfg(feature = "el2")]
1256 vbar_el2: VbarEl2::empty(),
1257 vdfsr: Vdfsr::empty(),
1258 vdisr: Vdisr::empty(),
1259 #[cfg(feature = "el2")]
1260 vdisr_el2: VdisrEl2::empty(),
1261 vmpidr: Vmpidr::empty(),
1262 #[cfg(feature = "el2")]
1263 vmpidr_el2: VmpidrEl2::empty(),
1264 vpidr: Vpidr::empty(),
1265 #[cfg(feature = "el2")]
1266 vpidr_el2: VpidrEl2::empty(),
1267 #[cfg(feature = "el2")]
1268 vsesr_el2: VsesrEl2::empty(),
1269 vtcr: Vtcr::empty(),
1270 #[cfg(feature = "el2")]
1271 vtcr_el2: VtcrEl2::empty(),
1272 vttbr: Vttbr::empty(),
1273 #[cfg(feature = "el2")]
1274 vttbr_el2: VttbrEl2::empty(),
1275 #[cfg(feature = "el3")]
1276 zcr_el3: ZcrEl3::empty(),
1277 }
1278 }
1279}