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
Hmm, interesting.
A few questions then:
Hi Martin,
Not sure why my previous reply at last night was flagged by as inappropriate and doesn't appear on the site. But it's back now.
Could you kindly help to review my previous reply? thanks in advance.
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.
Thanks very much for your great help!!