OSECCR_EL1, OS Lock Exception Catch Control Register
The OSECCR_EL1 characteristics are:
Purpose
Provides a mechanism for an operating system to access the contents of EDECCR that are otherwise invisible to software, so it can save/restore the contents of EDECCR over powerdown on behalf of the external debugger.
Configuration
AArch64 System register OSECCR_EL1 bits [31:0] are architecturally mapped to AArch32 System register DBGOSECCR[31:0] .
AArch64 System register OSECCR_EL1 bits [31:0] are architecturally mapped to External register EDECCR[31:0] .
If OSLSR_EL1.OSLK == 0, then OSECCR_EL1 returns an UNKNOWN value on reads and ignores writes.
Attributes
OSECCR_EL1 is a 64-bit register.
Field descriptions
The OSECCR_EL1 bit assignments are:
When DBGOSLSR.OSLK == 1:
Bits [63:32]
Reserved, RES0.
EDECCR, bits [31:0]
Used for save/restore to EDECCR over powerdown.
Reads or writes to this field are indirect accesses to EDECCR.
Accessing the OSECCR_EL1
Accesses to this register use the following encodings:
MRS <Xt>, OSECCR_EL1
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b10 | 0b000 | 0b0000 | 0b0110 | 0b010 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EL2Enabled() && !ELUsingAArch32(EL2) && MDCR_EL2.<TDE,TDA> != '00' then AArch64.SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && !ELUsingAArch32(EL3) && MDCR_EL3.TDA == '1' then AArch64.SystemAccessTrap(EL3, 0x18); else return OSECCR_EL1; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && !ELUsingAArch32(EL3) && MDCR_EL3.TDA == '1' then AArch64.SystemAccessTrap(EL3, 0x18); else return OSECCR_EL1; elsif PSTATE.EL == EL3 then return OSECCR_EL1;
MSR OSECCR_EL1, <Xt>
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b10 | 0b000 | 0b0000 | 0b0110 | 0b010 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EL2Enabled() && !ELUsingAArch32(EL2) && MDCR_EL2.<TDE,TDA> != '00' then AArch64.SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && !ELUsingAArch32(EL3) && MDCR_EL3.TDA == '1' then AArch64.SystemAccessTrap(EL3, 0x18); else OSECCR_EL1 = X[t]; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && !ELUsingAArch32(EL3) && MDCR_EL3.TDA == '1' then AArch64.SystemAccessTrap(EL3, 0x18); else OSECCR_EL1 = X[t]; elsif PSTATE.EL == EL3 then OSECCR_EL1 = X[t];