hi, expert
i study ArmV8 architecture.
On taking an exception to a higher Exception level, the Execution state either:
• Remains unchanged.
• Changes from AArch32 state to AArch64 state.
i konw that When an higher exception occurs, the execute state is changed from A32 to A64 state.
I wonder Remains unchanged and changed(from AArch32 state to AArch64) state conditions.
In ARMv7, Arm or Thum bit changes 16 bit/ 32 bit, in ARMv8 is there same decision bit?
To add to Peter and Sean's posts...
Lets say you are in EL0 (or User mode for AArch32), an exception occurs that will take you to EL1. How does the processor know whether to enter EL1 as AArch64 or AArch32? This is controlled via a bit in a system register that you have to program. For non-secure EL1 it's HCR_EL2.RW. Similarly the execution state the processor will use on taking an exception to EL2 is controlled by SCR_EL3.RW.
You'll notice that NS.EL1 is controlled by an EL2 register, and EL2 by an EL3 register. In other words, it's the next EL that controls the execution state.
my system start and in EL3 with AArch64 execution state,I set SCR_EL3=0x830,SPSR_EL3=0x1d3,ELR_EL3=0x40200000,jump into secure EL1 with AARCH32 execution state success,but i set SCR_EL3=0x35,HCR.RW=0,SPSR_EL3=0x1d3,ELR_EL3=0x42000000,I want to jump into normal world EL1,but fail,can you tell me the reason?