This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

CA72 can't access ICC_IAR1_EL1 at EL1

I can access ICC_IAR1_EL1 at EL3 using SP_EL0, however, after I switch EL3 to EL1 non-secure, I can't read IIC_IAR1_EL1 anymore, which doesn't make sense. 

Can anybody help here? much appreciated.  

__func__011000 EC=MSR, MRS, or System instruction, that isn't reported using EC 0x00/0x01/0x07Unhandled exception 0x18(24) from CA72_0 to CA72_0
EXC number:0x00000018
EXC class: 0x00000018
FaultReg: 0x00000000
StatusPrg: 0x80000005
PC: 0x00000000 0xA0007F78
FaultReg: 0xD538CC00
StatusPrg: 0x00303019
Exception class is MSR_MRS
These report exceptions from MSR, MRS, or System instructions
Instruction syndrome MSR/MRS:
Op0: 0x00000000
Op2: 0x00000000
Op1: 0x00000000
CRn: 0x00000000
Rt : 0x00000000
CRm: 0x00000018
dir: 0x00000001

Parents
  • Hi Martin,

    Thanks very much for your always help!! Your answer always help me a lot.

    Following you suggestion, I tried to check ICC_SRE_EL1_S and ICC_SRE_EL1_NS at EL3 by changing SCR_EL3.NS.

    Seems both of ICC_SRE_EL1_S and ICC_SRE_EL1_NS are set to 0x7 already. 

    My Test Log is showed below. 

    icc_sre_el1 is 0x7  // checking ICC_SRE_EL1_S
    SCR_EL3 is 0xc0e  // checking SCR_EL3.NS, which is 0x0 by default after initialization

    SCR_EL3 is 0xc0f   // setting SCR_EL3.NS to 0x1
    icc_sre_el1 is 0x7   // checking ICC_SRE_EL1_NS

    HCR_EL2 is 0x0   // Got HCR_EL2 0x0, cause I read it at EL3
    ICC IAR1 EL1 is 0x3ff    // checking ICC_IAR1_EL1

    enter non-secure world
    transition_to_lower_el :Current EL is EL2
    transition_to_lower_el :Current EL is EL1

    current EL is 0x4

    Try to read ICC_IAR1_EL1 again, but got error below:

    __func__011000 EC=MSR, MRS, or System instruction, that isn't reported using EC 0x00/0x01/0x07Unhandled exception 0x18(24) from CA72_0 to CA72_0
    EXC number:0x00000018
    EXC class: 0x00000018
    FaultReg: 0x00000000
    StatusPrg: 0x60000004
    PC: 0x00000000 0xA0007DCC
    FaultReg: 0xD538CC00
    StatusPrg: 0x00303019
    Exception class is MSR_MRS
    These report exceptions from MSR, MRS, or System instructions
    Instruction syndrome MSR/MRS:
    Op0: 0x00000000
    Op2: 0x00000000
    Op1: 0x00000000
    CRn: 0x00000000
    Rt : 0x00000000
    CRm: 0x00000018
    dir: 0x00000001

Reply
  • Hi Martin,

    Thanks very much for your always help!! Your answer always help me a lot.

    Following you suggestion, I tried to check ICC_SRE_EL1_S and ICC_SRE_EL1_NS at EL3 by changing SCR_EL3.NS.

    Seems both of ICC_SRE_EL1_S and ICC_SRE_EL1_NS are set to 0x7 already. 

    My Test Log is showed below. 

    icc_sre_el1 is 0x7  // checking ICC_SRE_EL1_S
    SCR_EL3 is 0xc0e  // checking SCR_EL3.NS, which is 0x0 by default after initialization

    SCR_EL3 is 0xc0f   // setting SCR_EL3.NS to 0x1
    icc_sre_el1 is 0x7   // checking ICC_SRE_EL1_NS

    HCR_EL2 is 0x0   // Got HCR_EL2 0x0, cause I read it at EL3
    ICC IAR1 EL1 is 0x3ff    // checking ICC_IAR1_EL1

    enter non-secure world
    transition_to_lower_el :Current EL is EL2
    transition_to_lower_el :Current EL is EL1

    current EL is 0x4

    Try to read ICC_IAR1_EL1 again, but got error below:

    __func__011000 EC=MSR, MRS, or System instruction, that isn't reported using EC 0x00/0x01/0x07Unhandled exception 0x18(24) from CA72_0 to CA72_0
    EXC number:0x00000018
    EXC class: 0x00000018
    FaultReg: 0x00000000
    StatusPrg: 0x60000004
    PC: 0x00000000 0xA0007DCC
    FaultReg: 0xD538CC00
    StatusPrg: 0x00303019
    Exception class is MSR_MRS
    These report exceptions from MSR, MRS, or System instructions
    Instruction syndrome MSR/MRS:
    Op0: 0x00000000
    Op2: 0x00000000
    Op1: 0x00000000
    CRn: 0x00000000
    Rt : 0x00000000
    CRm: 0x00000018
    dir: 0x00000001

Children
No data