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_0EXC number:0x00000018EXC class: 0x00000018FaultReg: 0x00000000StatusPrg: 0x80000005PC: 0x00000000 0xA0007F78 FaultReg: 0xD538CC00StatusPrg: 0x00303019Exception class is MSR_MRS These report exceptions from MSR, MRS, or System instructions Instruction syndrome MSR/MRS: Op0: 0x00000000Op2: 0x00000000Op1: 0x00000000CRn: 0x00000000Rt : 0x00000000CRm: 0x00000018dir: 0x00000001
Ok, that makes sense. The trap was to EL3, not EL1.
UNDEFINED means you'll take a synchronous exception with a different ESR_ELx.EC code. The practical difference between a "trap" and UNDEF is that traps are (usually) expected to be recovered from. You trap the access, do something, and then either re-execute the trapped instruction or emulate it. With UNDEF, typically the program did something it shouldn't and you'd terminate it.
Hi Martin,
Thanks very much for your great help!!