The HSCTLR characteristics are:
Provides top level control of the system operation in Hyp mode.
This register is part of:
AArch32 System register HSCTLR is architecturally mapped to AArch64 System register SCTLR_EL2.
If EL2 is not implemented, this register is RES0 from EL3.
Some or all RW fields of this register have defined reset values. These apply only if the PE resets into EL2 with EL2 using AArch32. Otherwise, RW fields in this register reset to architecturally UNKNOWN values.
HSCTLR is a 32-bit register.
The HSCTLR bit assignments are:
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 |
0 | TE | 1 | 1 | 0 | 0 | EE | 0 | 1 | 1 | 0 | 0 | WXN | 1 | 0 | 1 | 0 | 0 | 0 | I | 1 | 0 | 0 | SED | ITD | 0 | CP15BEN | LSMAOE | nTLSMD | C | A | M |
Reserved, RES0.
T32 Exception Enable. This bit controls whether exceptions to EL2 are taken to A32 or T32 state:
TE | Meaning |
---|---|
0 |
Exceptions, including reset, taken to A32 state. |
1 |
Exceptions, including reset, taken to T32 state. |
When this register has an architecturally-defined reset value, this field resets to a value that is architecturally UNKNOWN.
Reserved, RES1.
Reserved, RES0.
The value of the PSTATE.E bit on entry to Hyp mode, the endianness of stage 1 translation table walks in the EL2 translation regime, and the endianness of stage 2 translation table walks in the PL1&0 translation regime.
The possible values of this bit are:
EE | Meaning |
---|---|
0 |
Little-endian. PSTATE.E is cleared to 0 on entry to Hyp mode. Stage 1 translation table walks in the EL2 translation regime, and stage 2 translation table walks in the PL1&0 translation regime are little-endian. |
1 |
Big-endian. PSTATE.E is set to 1 on entry to Hyp mode. Stage 1 translation table walks in the EL2 translation regime, and stage 2 translation table walks in the PL1&0 translation regime are big-endian. |
If an implementation does not provide Big-endian support at Exception Levels higher than EL0, this bit is RES0.
If an implementation does not provide Little-endian support at Exception Levels higher than EL0, this bit is RES1.
When this register has an architecturally-defined reset value, if this field is implemented as an RW field, it resets to an IMPLEMENTATION DEFINED value.
Reserved, RES0.
Reserved, RES1.
Reserved, RES0.
Write permission implies XN (Execute-never). For the EL2 translation regime, this bit can force all memory regions that are writable to be treated as XN. The possible values of this bit are:
WXN | Meaning |
---|---|
0 |
This control has no effect on memory access permissions. |
1 |
Any region that is writable in the EL2 translation regime is forced to XN for accesses from software executing at EL2. |
The WXN bit is permitted to be cached in a TLB.
When this register has an architecturally-defined reset value, this field resets to a value that is architecturally UNKNOWN.
Reserved, RES1.
Reserved, RES0.
Reserved, RES1.
Reserved, RES0.
Instruction access Cacheability control, for accesses at EL2:
I | Meaning |
---|---|
0 |
All instruction access to Normal memory from EL2 are Non-cacheable for all levels of instruction and unified cache. If the value of HSCTLR.M is 0, instruction accesses from stage 1 of the EL2 translation regime are to Normal, Outer Shareable, Inner Non-cacheable, Outer Non-cacheable memory. |
1 |
All instruction access to Normal memory from EL2 can be cached at all levels of instruction and unified cache. If the value of HSCTLR.M is 0, instruction accesses from stage 1 of the EL2 translation regime are to Normal, Outer Shareable, Inner Write-Through, Outer Write-Through memory. |
This bit has no effect on the PL1&0 translation regime.
When this register has an architecturally-defined reset value, this field resets to 0.
Reserved, RES1.
Reserved, RES0.
SETEND instruction disable. Disables SETEND instructions at EL2.
SED | Meaning |
---|---|
0 |
SETEND instruction execution is enabled at EL2. |
1 |
SETEND instructions are UNDEFINED at EL2. |
If the implementation does not support mixed-endian operation at EL2, this bit is RES1.
When this register has an architecturally-defined reset value, if this field is implemented as an RW field, it resets to a value that is architecturally UNKNOWN.
IT Disable. Disables some uses of IT instructions at EL2.
ITD | Meaning |
---|---|
0 |
All IT instruction functionality is enabled at EL2. |
1 |
Any attempt at EL2 to execute any of the following is UNDEFINED:
These instructions are always UNDEFINED, regardless of whether they would pass or fail the condition code check that applies to them as a result of being in an IT block. It is IMPLEMENTATION DEFINED whether the IT instruction is treated as:
This means that, for the situations that are UNDEFINED, either the second 16-bit instruction or the 32-bit instruction is UNDEFINED. An implementation might vary dynamically as to whether IT is treated as a 16-bit instruction or the first half of a 32-bit instruction. |
If an instruction in an active IT block that would be disabled by this field sets this field to 1 then behavior is CONSTRAINED UNPREDICTABLE. For more information see 'Changes to an ITD control by an instruction in an IT block' in the ARMv8 ARM, section E1.2.4
ITD is optional, but if it is implemented in the SCTLR then it must also be implemented in the HSCTLR. If it is not implemented then this bit is RAZ/WI.
When this register has an architecturally-defined reset value, if this field is implemented as an RW field, it resets to a value that is architecturally UNKNOWN.
Reserved, RES0.
System instruction memory barrier enable. Enables accesses to the DMB, DSB, and ISB System instructions in the (coproc==1111) encoding space from EL2:
CP15BEN | Meaning |
---|---|
0 |
EL2 execution of the CP15DMB, CP15DSB, and CP15ISB instructions is UNDEFINED. |
1 |
EL2 execution of the CP15DMB, CP15DSB, and CP15ISB instructions is enabled. |
CP15BEN is optional, but if it is implemented in the SCTLR then it must also be implemented in the HSCTLR. If it is not implemented then this bit is RAO/WI.
When this register has an architecturally-defined reset value, if this field is implemented as an RW field, it resets to a value that is architecturally UNKNOWN.
Load Multiple and Store Multiple Atomicity and Ordering Enable. When the OPTIONAL feature ARMv8.2-LSMAOC is implemented, defined values are:
LSMAOE | Meaning |
---|---|
0 |
For all memory accesses at EL2, A32 and T32 Load Multiple and Store Multiple can have an interrupt taken during the sequence memory accesses, and the memory accesses are not required to be ordered. |
1 |
The ordering and interrupt behavior of A32 and T32 Load Multiple and Store Multiple at EL2 is as defined for ARMv8.0. |
This bit is permitted to be cached in a TLB.
If this bit is not implemented, it is RES1.
When this register has an architecturally-defined reset value, this field resets to 1.
Reserved, RES1.
No Trap Load Multiple and Store Multiple to Device-nGRE/Device-nGnRE/Device-nGnRnE memory. When the OPTIONAL feature ARMv8.2-LSMAOC is implemented, defined values are:
nTLSMD | Meaning |
---|---|
0 |
All memory accesses by A32 and T32 Load Multiple and Store Multiple at EL2 that are marked at stage 1 as Device-nGRE/Device-nGnRE/Device-nGnRnE memory are trapped and generate a stage 1 Alignment fault. |
1 |
All memory accesses by A32 and T32 Load Multiple and Store Multiple at EL2 that are marked at stage 1 as Device-nGRE/Device-nGnRE/Device-nGnRnE memory are not trapped. |
This bit is permitted to be cached in a TLB.
If this bit is not implemented, it is RES1.
When this register has an architecturally-defined reset value, this field resets to 1.
Reserved, RES1.
Cacheability control, for data accesses at EL2:
C | Meaning |
---|---|
0 |
All data access to Normal memory from EL2, and all accesses to the EL2 translation tables, are Non-cacheable for all levels of data and unified cache. |
1 |
All data access to Normal memory from EL2, and all accesses to the EL2 translation tables, can be cached at all levels of data and unified cache. |
This bit has no effect on the PL1&0 translation regime.
When this register has an architecturally-defined reset value, this field resets to 0.
Alignment check enable. This is the enable bit for Alignment fault checking at EL2:
A | Meaning |
---|---|
0 |
Alignment fault checking disabled when executing at EL2. Instructions that load or store one or more registers, other than load/store exclusive and load-acquire/store-release, do not check that the address being accessed is aligned to the size of the data element or data elements being accessed. |
1 |
Alignment fault checking enabled when executing at EL2. All instructions that load or store one or more registers have an alignment check that the address being accessed is aligned to the size of the data element or data elements being accessed. If this check fails it causes an Alignment fault, which is taken as a Data Abort exception. |
Load/store exclusive and load-acquire/store-release instructions have an alignment check regardless of the value of the A bit.
When this register has an architecturally-defined reset value, this field resets to a value that is architecturally UNKNOWN.
MMU enable for EL2 stage 1 address translation. Possible values of this bit are:
M | Meaning |
---|---|
0 |
EL2 stage 1 address translation disabled. See the HSCTLR.I field for the behavior of instruction accesses to Normal memory. |
1 |
EL2 stage 1 address translation enabled. |
When this register has an architecturally-defined reset value, this field resets to 0.
This register can be read using MRC with the following syntax:
MRC <syntax>
This register can be written using MCR with the following syntax:
MCR <syntax>
This syntax uses the following encoding in the System instruction encoding space:
<syntax> | opc1 | opc2 | CRn | coproc | CRm |
---|---|---|---|---|---|
p15, 4, <Rt>, c1, c0, 0 | 100 | 000 | 0001 | 1111 | 0000 |
The register is accessible as follows:
Control | Accessibility | |||||
---|---|---|---|---|---|---|
E2H | TGE | NS | EL0 | EL1 | EL2 | EL3 |
x | x | 0 | - | - | n/a | - |
x | 0 | 1 | - | - | RW | RW |
x | 1 | 1 | - | n/a | RW | RW |
This table applies to all instructions that can access this register.
For a description of the prioritization of any generated exceptions, see section G1.11.2 (Exception priority order) in the ARM® Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile for exceptions taken to AArch32 state, and section D1.13.2 (Synchronous exception prioritization) for exceptions taken to AArch64 state. Subject to the prioritization rules, the following traps and enables are applicable when accessing this register.
When EL2 is implemented and is using AArch64 and SCR_EL3.NS==1 && HCR_EL2.E2H==0 :
If HSTR_EL2.T1==1, Non-secure accesses to this register from EL1 are trapped to EL2.
When EL2 is implemented and is using AArch64 and SCR_EL3.NS==1 && HCR_EL2.E2H==1 && HCR_EL2.TGE==0 :
If HSTR_EL2.T1==1, Non-secure accesses to this register from EL1 are trapped to EL2.
When EL2 is implemented and is using AArch32 and SCR_EL3.NS==1 :
If HSTR.T1==1, Non-secure accesses to this register from EL1 are trapped to Hyp mode.
02/05/2017 15:43
Copyright © 2010-2017 ARM Limited or its affiliates. All rights reserved. This document is Non-Confidential.