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

Is it possible to implement EL3 AArch64 and change it later to EL3 AArch32?

I was reading the ARM architecture reference manual... and thought

Is it possible to implement EL3 AArch64 and change it later to EL3 AArch32?

How to change is...

If I start on cold reset, it will start at EL3 AArch64.

Right after the cold reset, I set the RMR_ELx register to do warm reset AArch32.

Then the cpu will start as AArch32... right?

of course, assuming that

the AArch64 execution start location(determined by RVBAR_EL3 register) and AArch32 execution start location is different.

Parents
  • Pretty much.  The execution state (AArch32 vs AArch64) of the highest implemented EL is set at reset.  Therefore, to change EL3 from using AArch64 to AArch32 (or the other way round), you would need to reset the core.  One way to do that is to use the RMR_EL3 register.

    Writing RMR_EL3 will in practice will cause a reset request signal to be asserted.  It is up to the chip designer to connect that signal to the reset controller, and it's the reset controller that actually resets the core.  Because of this, you are relying on the behaviour of the that chip's reset controller to a certain extent./=

Reply
  • Pretty much.  The execution state (AArch32 vs AArch64) of the highest implemented EL is set at reset.  Therefore, to change EL3 from using AArch64 to AArch32 (or the other way round), you would need to reset the core.  One way to do that is to use the RMR_EL3 register.

    Writing RMR_EL3 will in practice will cause a reset request signal to be asserted.  It is up to the chip designer to connect that signal to the reset controller, and it's the reset controller that actually resets the core.  Because of this, you are relying on the behaviour of the that chip's reset controller to a certain extent./=

Children