[PATCH 4/8] arm64: Add EL2 switch to soft_restart
Geoff Levand
geoff at infradead.org
Fri Jan 30 13:47:11 PST 2015
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
More information about the kexec
mailing list