The SCR_EL3 characteristics are:
Defines the configuration of the current Security state. It specifies:
AArch64 System register SCR_EL3 bits [31:0] can be mapped to AArch32 System register SCR[31:0], but this is not architecturally mandated.
This register is present only when EL3 is implemented. Otherwise, direct accesses to SCR_EL3 are UNDEFINED.
SCR_EL3 is a 64-bit register.
63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RES0 | NSE | RES0 | GPF | RES0 | EnTP2 | RES0 | HXEn | ADEn | EnAS0 | AMVOFFEN | TME | TWEDEL | |||||||||||||||||||
TWEDEL | TWEDEn | ECVEn | FGTEn | ATA | EnSCXT | RES0 | FIEN | NMEA | EASE | EEL2 | API | APK | TERR | TLOR | TWE | TWI | ST | RW | SIF | HCE | SMD | RES0 | RES1 | EA | FIQ | IRQ | NS |
Reserved, RES0.
This field, evaluated with SCR_EL3.NS, selects the Security state of EL2 and lower Exception levels.
For a description of the values derived by evaluating NS and NSE together, see SCR_EL3.NS.
The reset behaviour of this field is:
Reserved, RES0.
Reserved, RES0.
Controls the reporting of Granule protection faults at EL0, EL1 and EL2.
GPF | Meaning |
---|---|
0b0 |
This control does not cause exceptions to be routed from EL0, EL1 or EL2 to EL3. |
0b1 |
GPFs at EL0, EL1 and EL2 are routed to EL3 and reported as Granule Protection Check exceptions. |
The reset behaviour of this field is:
Reserved, RES0.
Reserved, RES0.
Traps instructions executed at EL2, EL1, and EL0 that access TPIDR2_EL0 to EL3. The exception is reported using ESR_ELx.EC value 0x18.
EnTP2 | Meaning |
---|---|
0b0 |
This control causes execution of these instructions at EL2, EL1, and EL0 to be trapped. |
0b1 |
This control does not cause execution of any instructions to be trapped. |
The reset behaviour of this field is:
Reserved, RES0.
Reserved, RES0.
Enables access to the HCRX_EL2 register at EL2 from EL3.
HXEn | Meaning |
---|---|
0b0 |
Accesses at EL2 to HCRX_EL2 are trapped to EL3. Indirect reads of HCRX_EL2 return 0. |
0b1 |
This control does not cause any instructions to be trapped. |
The reset behaviour of this field is:
Reserved, RES0.
Enables access to the ACCDATA_EL1 register at EL1 and EL2.
ADEn | Meaning |
---|---|
0b0 |
Accesses to ACCDATA_EL1 at EL1 and EL2 are trapped to EL3, unless the accesses are trapped to EL2 by the EL2 fine-grained trap. |
0b1 |
This control does not cause accesses to ACCDATA_EL1 to be trapped. |
If the HFGWTR_EL2.nACCDATA_EL1 or HFGRTR_EL2.nACCDATA_EL1 traps are enabled, they take priority over this trap.
The reset behaviour of this field is:
Reserved, RES0.
Traps execution of an ST64BV0 instruction at EL0, EL1, or EL2 to EL3.
EnAS0 | Meaning |
---|---|
0b0 | EL0 execution of an ST64BV0 instruction is trapped to EL3, unless it is trapped to EL1 by SCTLR_EL1.EnAS0, or to EL2 by either HCRX_EL2.EnAS0 or SCTLR_EL2.EnAS0. EL1 execution of an ST64BV0 instruction is trapped to EL3, unless it is trapped to EL2 by HCRX_EL2.EnAS0. EL2 execution of an ST64BV0 instruction is trapped to EL3. |
0b1 |
This control does not cause any instructions to be trapped. |
A trap of an ST64BV0 instruction is reported using an ESR_ELx.EC value of 0x0A, with an ISS code of 0x0000001.
The reset behaviour of this field is:
Reserved, RES0.
Activity Monitors Virtual Offsets Enable.
AMVOFFEN | Meaning |
---|---|
0b0 |
Accesses to AMEVCNTVOFF0<n>_EL2 and AMEVCNTVOFF1<n>_EL2 at EL2 are trapped to EL3. Indirect reads of the virtual offset registers are zero. |
0b1 |
Accesses to AMEVCNTVOFF0<n>_EL2 and AMEVCNTVOFF1<n>_EL2 are not affected by this field. |
The reset behaviour of this field is:
Reserved, RES0.
Enables access to the TSTART, TCOMMIT, TTEST and TCANCEL instructions at EL0, EL1 and EL2.
TME | Meaning |
---|---|
0b0 |
EL0, EL1 and EL2 accesses to TSTART, TCOMMIT, TTEST and TCANCEL instructions are UNDEFINED. |
0b1 |
This control does not cause any instruction to be UNDEFINED. |
The reset behaviour of this field is:
Reserved, RES0.
TWE Delay. A 4-bit unsigned number that, when SCR_EL3.TWEDEn is 1, encodes the minimum delay in taking a trap of WFE* caused by SCR_EL3.TWE as 2(TWEDEL + 8) cycles.
The reset behaviour of this field is:
Reserved, RES0.
TWE Delay Enable. Enables a configurable delayed trap of the WFE* instruction caused by SCR_EL3.TWE.
Traps are reported using an ESR_ELx.EC value of 0x01.
TWEDEn | Meaning |
---|---|
0b0 |
The delay for taking the trap is IMPLEMENTATION DEFINED. |
0b1 |
The delay for taking the trap is at least the number of cycles defined in SCR_EL3.TWEDEL. |
The reset behaviour of this field is:
Reserved, RES0.
ECV Enable. Enables access to the CNTPOFF_EL2 register.
ECVEn | Meaning |
---|---|
0b0 |
EL2 accesses to CNTPOFF_EL2 are trapped to EL3, and the value of CNTPOFF_EL2 is treated as 0 for all purposes other than direct reads or writes to the register from EL3. |
0b1 |
EL2 accesses to CNTPOFF_EL2 are not trapped to EL3 by this mechanism. |
The reset behaviour of this field is:
Reserved, RES0.
Fine-Grained Traps Enable. When EL2 is implemented, enables the traps to EL2 controlled by HAFGRTR_EL2, HDFGRTR_EL2, HDFGWTR_EL2, HFGRTR_EL2, HFGITR_EL2, and HFGWTR_EL2, and controls access to those registers.
If EL2 is not implemented but EL3 is implemented, FEAT_FGT implements the MDCR_EL3.TDCC traps.
FGTEn | Meaning |
---|---|
0b0 |
EL2 accesses to HAFGRTR_EL2, HDFGRTR_EL2, HDFGWTR_EL2, HFGRTR_EL2, HFGITR_EL2 and HFGWTR_EL2 registers are trapped to EL3, and the traps to EL2 controlled by those registers are disabled. |
0b1 |
EL2 accesses to HAFGRTR_EL2, HDFGRTR_EL2, HDFGWTR_EL2, HFGRTR_EL2, HFGITR_EL2 and HFGWTR_EL2 registers are not trapped to EL3 by this mechanism. |
Traps caused by accesses to the fine-grained trap registers are reported using an ESR_ELx.EC value of 0x18 and its associated ISS.
Reserved, RES0.
Allocation Tag Access. Controls access at EL2, EL1 and EL0 to Allocation Tags.
ATA | Meaning |
---|---|
0b0 |
Access to Allocation Tags is prevented. Accesses at EL1 and EL2 to GCR_EL1, RGSR_EL1, TFSR_EL1, TFSR_EL2 or TFSRE0_EL1 that are not UNDEFINED or trapped to a lower Exception level are trapped to EL3. Accesses at EL2 to TFSR_EL12 that are not UNDEFINED are trapped to EL3. |
0b1 |
This control does not prevent access to Allocation Tags. |
The reset behaviour of this field is:
Reserved, RES0.
Enable access to the SCXTNUM_EL2, SCXTNUM_EL1, and SCXTNUM_EL0 registers.
EnSCXT | Meaning |
---|---|
0b0 |
Accesses at EL0, EL1 and EL2 to SCXTNUM_EL0, SCXTNUM_EL1, or SCXTNUM_EL2 registers are trapped to EL3 if they are not trapped by a higher priority exception, and the values of these registers are treated as 0. |
0b1 |
This control does not cause any accesses to be trapped, or register values to be treated as 0. |
The reset behaviour of this field is:
Reserved, RES0.
Reserved, RES0.
Fault Injection enable. Trap accesses to the registers ERXPFGCDN_EL1, ERXPFGCTL_EL1, and ERXPFGF_EL1 from EL1 and EL2 to EL3, reported using an ESR_ELx.EC value of 0x18.
FIEN | Meaning |
---|---|
0b0 |
Accesses to the specified registers from EL1 and EL2 generate a Trap exception to EL3. |
0b1 |
This control does not cause any instructions to be trapped. |
If EL3 is not implemented, the Effective value of SCR_EL3.FIEN is 0b1.
If ERRIDR_EL1.NUM is zero, meaning no error records are implemented, or no error record accessible using System registers is owned by a node that implements the RAS Common Fault Injection Model Extension, then this bit might be RES0.
The reset behaviour of this field is:
Reserved, RES0.
Non-maskable External Aborts. When SCR_EL3.EA == 1, controls whether PSTATE.A masks SError interrupts at EL3.
NMEA | Meaning |
---|---|
0b0 |
If SCR_EL3.EA == 1, asserted SError interrupts are not taken at EL3 if PSTATE.A == 1. |
0b1 |
If SCR_EL3.EA == 1, asserted SError interrupts are taken at EL3 regardless of the value of PSTATE.A. |
When SCR_EL3.EA == 0:
The reset behaviour of this field is:
Reserved, RES0.
External aborts to SError interrupt vector.
EASE | Meaning |
---|---|
0b0 |
Synchronous External abort exceptions taken to EL3 are taken to the appropriate synchronous exception vector offset from VBAR_EL3. |
0b1 |
Synchronous External abort exceptions taken to EL3 are taken to the appropriate SError interrupt vector offset from VBAR_EL3. |
The reset behaviour of this field is:
Reserved, RES0.
Secure EL2 Enable.
EEL2 | Meaning |
---|---|
0b0 |
All behaviors associated with Secure EL2 are disabled. All registers, including timer registers, defined by FEAT_SEL2 are UNDEFINED, and those timers are disabled. |
0b1 |
All behaviors associated with Secure EL2 are enabled. |
When the value of this bit is 1, then:
When SCR_EL3.NS == 0, the SCR_EL3.RW bit is treated as 1 for all purposes other than reading or writing the register.
If Secure EL1 is using AArch32, then any of the following operations, executed in Secure EL1, is trapped to Secure EL2, using the EC value of ESR_EL2.EC== 0x3 :
If Secure EL1 is using AArch32, then any of the following operations, executed in Secure EL1, is trapped to Secure EL2 using the EC value of ESR_EL2.EC== 0x0 :
If the Effective value of SCR_EL3.EEL2 is 0, then these operations executed in Secure EL1 using AArch32 are trapped to EL3.
A Secure only implementation that does not implement EL3 but implements EL2, behaves as if SCR_EL3.EEL2 == 1.
This bit is permitted to be cached in a TLB.
The reset behaviour of this field is:
Reserved, RES0.
Controls the use of the following instructions related to Pointer Authentication. Traps are reported using an ESR_ELx.EC value of 0x09:
API | Meaning |
---|---|
0b0 |
The use of any instruction related to pointer authentication in any Exception level except EL3 when the instructions are enabled are trapped to EL3 unless they are trapped to EL2 as a result of the HCR_EL2.API bit. |
0b1 |
This control does not cause any instructions to be trapped. |
An instruction is trapped only if Pointer Authentication is enabled for that instruction, for more information, see 'System register control of pointer authentication'.
If FEAT_PAuth is implemented but EL3 is not implemented, the system behaves as if this bit is 1.
The reset behaviour of this field is:
Controls the use of instructions related to Pointer Authentication:
API | Meaning |
---|---|
0b0 |
The use of any instruction related to pointer authentication in any Exception level except EL3 when the instructions are enabled are trapped to EL3 unless they are trapped to EL2 as a result of the HCR_EL2.API bit. |
0b1 |
This control does not cause any instructions to be trapped. |
If FEAT_PAuth is implemented but EL3 is not implemented, the system behaves as if this bit is 1.
The reset behaviour of this field is:
Reserved, RES0.
Trap registers holding "key" values for Pointer Authentication. Traps accesses to the following registers, using an ESR_ELx.EC value of 0x18, from EL1 or EL2 to EL3 unless they are trapped to EL2 as a result of the HCR_EL2.APK bit or other traps:
APGAKeyLo_EL1, and APGAKeyHi_EL1.
APK | Meaning |
---|---|
0b0 |
Access to the registers holding "key" values for pointer authentication from EL1 or EL2 are trapped to EL3 unless they are trapped to EL2 as a result of the HCR_EL2.APK bit or other traps. |
0b1 |
This control does not cause any instructions to be trapped. |
For more information, see 'System register control of pointer authentication'.
If FEAT_PAuth is implemented but EL3 is not implemented, the system behaves as if this bit is 1.
The reset behaviour of this field is:
Reserved, RES0.
Trap Error record accesses. Accesses to the RAS ERR* and RAS ERX* registers from EL1 and EL2 to EL3 are trapped as follows:
Accesses from EL1 and EL2 using AArch64 to the following registers are trapped and reported using an ESR_ELx.EC value of 0x18:
If FEAT_RASv1p1 is implemented, accesses from EL1 and EL2 using AArch64 to ERXMISC2_EL1, and ERXMISC3_EL1, are trapped and reported using an ESR_ELx.EC value of 0x18.
Accesses from EL1 and EL2 using AArch32, to the following registers are trapped and reported using an ESR_ELx.EC value of 0x03:
If FEAT_RASv1p1 is implemented, accesses from EL1 and EL2 using AArch32 to the following registers are trapped and reported using an ESR_ELx.EC value of 0x03:
TERR | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
Accesses to the specified registers from EL1 and EL2 generate a Trap exception to EL3. |
The reset behaviour of this field is:
Reserved, RES0.
Trap LOR registers. Traps accesses to the LORSA_EL1, LOREA_EL1, LORN_EL1, LORC_EL1, and LORID_EL1 registers from EL1 and EL2 to EL3, unless the access has been trapped to EL2.
TLOR | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
EL1 and EL2 accesses to the LOR registers that are not UNDEFINED are trapped to EL3, unless it is trapped HCR_EL2.TLOR. |
The reset behaviour of this field is:
Reserved, RES0.
Traps EL2, EL1, and EL0 execution of WFE instructions to EL3, from any Security state and both Execution states, reported using an ESR_ELx.EC value of 0x01.
When FEAT_WFxT or FEAT_WFxT2 is implemented, this trap also applies to the WFET instruction.
TWE | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
Any attempt to execute a WFE instruction at any Exception level lower than EL3 is trapped to EL3, if the instruction would otherwise have caused the PE to enter a low-power state and it is not trapped by SCTLR.nTWE, HCR.TWE, SCTLR_EL1.nTWE, SCTLR_EL2.nTWE, or HCR_EL2.TWE. |
In AArch32 state, the attempted execution of a conditional WFE instruction is only trapped if the instruction passes its condition code check.
Since a WFE or WFI can complete at any time, even without a Wakeup event, the traps on WFE of WFI are not guaranteed to be taken, even if the WFE or WFI is executed when there is no Wakeup event. The only guarantee is that if the instruction does not complete in finite time in the absence of a Wakeup event, the trap will be taken.
For more information about when WFE instructions can cause the PE to enter a low-power state, see 'Wait for Event mechanism and Send event'.
The reset behaviour of this field is:
Traps EL2, EL1, and EL0 execution of WFI instructions to EL3, from any Security state and both Execution states, reported using an ESR_ELx.EC value of 0x01.
When FEAT_WFxT or FEAT_WFxT2 is implemented, this trap also applies to the WFIT instruction.
TWI | Meaning |
---|---|
0b0 |
This control does not cause any instructions to be trapped. |
0b1 |
Any attempt to execute a WFI instruction at any Exception level lower than EL3 is trapped to EL3, if the instruction would otherwise have caused the PE to enter a low-power state and it is not trapped by SCTLR.nTWI, HCR.TWI, SCTLR_EL1.nTWI, SCTLR_EL2.nTWI, or HCR_EL2.TWI. |
In AArch32 state, the attempted execution of a conditional WFI instruction is only trapped if the instruction passes its condition code check.
Since a WFE or WFI can complete at any time, even without a Wakeup event, the traps on WFE of WFI are not guaranteed to be taken, even if the WFE or WFI is executed when there is no Wakeup event. The only guarantee is that if the instruction does not complete in finite time in the absence of a Wakeup event, the trap will be taken.
For more information about when WFI instructions can cause the PE to enter a low-power state, see 'Wait for Interrupt'.
The reset behaviour of this field is:
Traps Secure EL1 accesses to the Counter-timer Physical Secure timer registers to EL3, from AArch64 state only, reported using an ESR_ELx.EC value of 0x18.
ST | Meaning |
---|---|
0b0 |
Secure EL1 using AArch64 accesses to the CNTPS_TVAL_EL1, CNTPS_CTL_EL1, and CNTPS_CVAL_EL1 are trapped to EL3 when Secure EL2 is disabled. If Secure EL2 is enabled, the behavior is as if the value of this field was 0b1. |
0b1 |
This control does not cause any instructions to be trapped. |
Accesses to the Counter-timer Physical Secure timer registers are always enabled at EL3. These registers are not accessible at EL0.
The reset behaviour of this field is:
Execution state control for lower Exception levels.
RW | Meaning |
---|---|
0b0 |
Lower levels are all AArch32. |
0b1 | The next lower level is AArch64. If EL2 is present:
If EL2 is not present:
|
If AArch32 state is supported by the implementation at EL1, SCR_EL3.NS == 1 and AArch32 state is not supported by the implementation at EL2, the Effective value of this bit is 1.
If AArch32 state is supported by the implementation at EL1, FEAT_SEL2 is implemented and SCR_EL3.{EEL2, NS} == {1, 0}, the Effective value of this bit is 1.
This bit is permitted to be cached in a TLB.
The reset behaviour of this field is:
Reserved, RAO/WI.
Secure instruction fetch. When the PE is in Secure state, this bit disables instruction fetch from memory marked in the first stage of translation as being Non-secure. The possible values for this bit are:
SIF | Meaning |
---|---|
0b0 |
Secure state instruction fetches from memory marked in the first stage of translation as being Non-secure are permitted. |
0b1 |
Secure state instruction fetches from memory marked in the first stage of translation as being Non-secure are not permitted. |
When FEAT_PAN3 is implemented, it is IMPLEMENTATION DEFINED whether SCR_EL3.SIF is also used to determine instruction access permission for the purpose of PAN.
This bit is permitted to be cached in a TLB.
The reset behaviour of this field is:
Secure instruction fetch. When the PE is in Secure state, this bit disables instruction fetch from Non-secure memory.
SIF | Meaning |
---|---|
0b0 |
Secure state instruction fetches from Non-secure memory are permitted. |
0b1 |
Secure state instruction fetches from Non-secure memory are not permitted. |
This bit is permitted to be cached in a TLB.
The reset behaviour of this field is:
Hypervisor Call instruction enable. Enables HVC instructions at EL3 and, if EL2 is enabled in the current Security state, at EL2 and EL1, in both Execution states, reported using an ESR_ELx.EC value of 0x00.
HCE | Meaning |
---|---|
0b0 |
HVC instructions are UNDEFINED. |
0b1 |
HVC instructions are enabled at EL3, EL2, and EL1. |
HVC instructions are always UNDEFINED at EL0 and, if Secure EL2 is disabled, at Secure EL1. Any resulting exception is taken from the current Exception level to the current Exception level.
If EL2 is not implemented, this bit is RES0.
The reset behaviour of this field is:
Secure Monitor Call disable. Disables SMC instructions at EL1 and above, from any Security state and both Execution states, reported using an ESR_ELx.EC value of 0x00.
SMD | Meaning |
---|---|
0b0 |
SMC instructions are enabled at EL3, EL2 and EL1. |
0b1 |
SMC instructions are UNDEFINED. |
SMC instructions are always UNDEFINED at EL0. Any resulting exception is taken from the current Exception level to the current Exception level.
If HCR_EL2.TSC or HCR.TSC traps attempted EL1 execution of SMC instructions to EL2, that trap has priority over this disable.
The reset behaviour of this field is:
Reserved, RES0.
Reserved, RES1.
External Abort and SError interrupt routing.
EA | Meaning |
---|---|
0b0 | When executing at Exception levels below EL3, External aborts and SError interrupts are not taken to EL3. In addition, when executing at EL3:
|
0b1 |
When executing at any Exception level, External aborts and SError interrupts are taken to EL3. |
For more information, see 'Asynchronous exception routing'.
The reset behaviour of this field is:
Physical FIQ Routing.
FIQ | Meaning |
---|---|
0b0 | When executing at Exception levels below EL3, physical FIQ interrupts are not taken to EL3. When executing at EL3, physical FIQ interrupts are not taken. |
0b1 |
When executing at any Exception level, physical FIQ interrupts are taken to EL3. |
For more information, see 'Asynchronous exception routing'.
The reset behaviour of this field is:
Physical IRQ Routing.
IRQ | Meaning |
---|---|
0b0 | When executing at Exception levels below EL3, physical IRQ interrupts are not taken to EL3. When executing at EL3, physical IRQ interrupts are not taken. |
0b1 |
When executing at any Exception level, physical IRQ interrupts are taken to EL3. |
For more information, see 'Asynchronous exception routing'.
The reset behaviour of this field is:
Non-secure bit. This field is used in combination with SCR_EL3.NSE to select the Security state of EL2 and lower Exception levels.
NSE | NS | Meaning |
---|---|---|
0b0 | 0b0 | Secure. |
0b0 | 0b1 | Non-secure. |
0b1 | 0b0 | Reserved. |
0b1 | 0b1 | Realm. |
The reset behaviour of this field is:
Non-secure bit.
NS | Meaning |
---|---|
0b0 |
Indicates that EL0 and EL1 are in Secure state. |
0b1 |
Indicates that Exception levels lower than EL3 are in Non-secure state, so memory accesses from those Exception levels cannot access Secure memory. |
When SCR_EL3.{EEL2, NS} == {1, 0}, then EL2 is using AArch64 and in Secure state.
The reset behaviour of this field is:
Accesses to this register use the following encodings in the System register encoding space:
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b110 | 0b0001 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then UNDEFINED; elsif PSTATE.EL == EL2 then UNDEFINED; elsif PSTATE.EL == EL3 then return SCR_EL3;
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b110 | 0b0001 | 0b0001 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then UNDEFINED; elsif PSTATE.EL == EL2 then UNDEFINED; elsif PSTATE.EL == EL3 then SCR_EL3 = X[t];
30/06/2021 15:22; 2a17f7750cfd1ab239f20f6cf29877ba8041794f
Copyright © 2010-2021 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.