[PATCH 4/8] arm64: Add EL2 switch to soft_restart

Geoff Levand
2015-01-30T21:47:11Z

Hi Catalin,

On Tue, 2015-01-27 at 17:57 +0000, Catalin Marinas wrote:
> On Sat, Jan 17, 2015 at 12:23:34AM +0000, Geoff Levand wrote:
> > ENTRY(cpu_reset)
> > - mrs x1, sctlr_el1
> > - bic x1, x1, #1
> > - msr sctlr_el1, x1 // disable the MMU
> > + mrs x2, sctlr_el1
> > + bic x2, x2, #1
> > + msr sctlr_el1, x2 // disable the MMU
> > isb
> > - ret x0
> > +
> > + cbz x0, 1f // el2_switch?
> > + mov x0, x1
> > + mov x1, xzr
> > + mov x2, xzr
> > + mov x3, xzr
> > + hvc #HVC_CALL_FUNC // no return
>
> If that's the only user of HVC_CALL_FUNC, why do we bother with
> arguments, calling convention?

It was intended that HVC_CALL_FUNC be a mechanism to call a generic
function in hyp mode. cpu_reset() is the only user of it now.

As Mark explained in another post, the use of x18 by the hyp stub
is to avoid the complication of setting up a stack for EL2. We
thought this solution was acceptable since there are relatively
few HVC_CALL_FUNC calls and we could assure they would do the
right thing.

-Geoff