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.
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./=
It's certain that without reset, its impossible to change the state at EL3.
I saw your reply and just thought that, the warm reset and the cold reset both will refer to the RVBAR_EL3.
The both reset start address cannot be different.
is this right also? or the start address after the reset is also up to chip designer?