|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 13/15] libxc: arm64 vcpu initialisation
On Thu, 2013-10-10 at 16:54 +0100, Julien Grall wrote:
> On 10/07/2013 05:39 PM, Ian Campbell wrote:
> > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> > ---
> > tools/libxc/xc_dom_arm.c | 90
> > ++++++++++++++++++++++++++++++++++++++++++++--
> > 1 file changed, 88 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/libxc/xc_dom_arm.c b/tools/libxc/xc_dom_arm.c
> > index ecdaea9..a6d2259 100644
> > --- a/tools/libxc/xc_dom_arm.c
> > +++ b/tools/libxc/xc_dom_arm.c
> > @@ -105,7 +105,7 @@ static int shared_info_arm(struct xc_dom_image *dom,
> > void *ptr)
> >
> > /*
> > ------------------------------------------------------------------------ */
> >
> > -static int vcpu_arm(struct xc_dom_image *dom, void *ptr)
> > +static int vcpu_arm32(struct xc_dom_image *dom, void *ptr)
> > {
> > vcpu_guest_context_t *ctxt = ptr;
> >
> > @@ -143,6 +143,41 @@ static int vcpu_arm(struct xc_dom_image *dom, void
> > *ptr)
> > return 0;
> > }
> >
> > +static int vcpu_arm64(struct xc_dom_image *dom, void *ptr)
> > +{
> > + vcpu_guest_context_t *ctxt = ptr;
> > +
> > + DOMPRINTF_CALLED(dom->xch);
> > + /* clear everything */
> > + memset(ctxt, 0, sizeof(*ctxt));
> > +
> > + ctxt->user_regs.pc64 = dom->parms.virt_entry;
> > +
> > + /* Linux boot protocol. See linux.Documentation/arm/Booting. */
> > + ctxt->user_regs.x0 = dom->devicetree_blob ?
> > + dom->devicetree_seg.vstart : 0xffffffff;
> > + ctxt->user_regs.x1 = 0;
> > + ctxt->user_regs.x2 = 0;
> > + ctxt->user_regs.x3 = 0;
> > +
> > + DOMPRINTF("DTB %"PRIx64, ctxt->user_regs.x0);
> > +
> > + ctxt->sctlr = /* #define SCTLR_BASE */0x00c50078;
> > +
> > + ctxt->ttbr0 = 0;
> > + ctxt->ttbr1 = 0;
> > + ctxt->ttbcr = 0; /* Defined Reset Value */
> > +
> > + ctxt->user_regs.cpsr =
> > PSR_ABT_MASK|PSR_FIQ_MASK|PSR_IRQ_MASK|PSR_MODE_EL1h;
>
> PSR_MODE_EL1h is only defined on arm64. I think you will need to prefix
> all the code by #ifdef __aarch64__
Correct.
> BTW, can you use PSR_GUEST64_INIT here? So if we modified it in Xen, the
> behaviour will also change here.
It's a bit annoying, but PSR_GUEST*_INIT are no in the public interfaces
and libxc can't include anything else. I don't want to expose this to
guests incase it becomes ABI...
Oh, maybe I can just us #if on __XEN_TOOLS__ and/or __XEN__ as
appropaite.
I'll have a play with that.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |