|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
RE: [Xen-ia64-devel] Parameters to hypercalls
Could you explain more clearly what you are trying
to do (using C or pseudo-C to explain) both in xenlinux and
Xen? E.g. are you just passing the pointer or are
you trying to pass the struct the pointer is pointing
to or something else.?
If you are just passing the pointer, just leave it
in r32==in0 and Xen can grab it there. Note however
that there are still some issues with passing
user addresses into Xen... it basically works
for small data items but larger ones (e.g. ones
that cross a page boundary) may not work.
Eddie is working on a pass-through-memory interface
for hypercalls which you may need, depending on
what you are trying to do.
If *op can be passed by value, that will be much
easier to implement/test right now.
Dan
> -----Original Message-----
> From: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
> [mailto:xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf
> Of Haavard Bjerke
> Sent: Wednesday, May 04, 2005 3:52 AM
> To: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-ia64-devel] Parameters to hypercalls
>
> I want to pass a parameter with the evtchn_op hypercall,
> which is a pointer, *op. How do I do this? Can I just load it
> in a register, say r3, when issuing the hypercall and then
> store from r3 in the hypervisor, like this:
>
> xenlinux:
> /* load pointer to r3 */
> asm volatile("ld8 r3=%0;"
> :: "m" (op)
> : "r3");
>
> /* hypercall */
> asm volatile("mov r2=%0; break %1;"
> :: "i" (HYPERCALL_EVTCHN_OP), "i" (BREAKIMM)
> : "r2", "r8", "memory");
>
> hypervisor:
> /* get pointer from r3 */
> asm volatile("st8 %0=r3;"
> : "=m" (op)
> :: "r3");
>
> This doesn't work, why?
>
> Thanks,
> Håvard
>
> _______________________________________________
> Xen-ia64-devel mailing list
> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-ia64-devel
>
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
|
|
|
|