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

When are A32 state and A64 state determined?

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?

Parents
  • 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. 

Reply
  • 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. 

Children