[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 08/12] x86/hyperv: provide Hyper-V hypercall functions
On 29.01.2020 21:20, Wei Liu wrote: > I tried using the asm(".equ ..") trick but hit a problem with %c again. > > mm.c:5736:5: error: invalid 'asm': operand is not a condition code, invalid > operand code 'c' > asm ( ".equ HV_HCALL_PAGE, %c0; .global HV_HCALL_PAGE" Would you mind also indicating what the input operand actually was? According to my looking at gcc sources when you first mentioned this (on irc iirc), much depends on it actually be recognizable as a constant by the compiler. > +static inline uint64_t hv_do_hypercall(uint64_t control, paddr_t input_addr, > + paddr_t output_addr) > +{ > + uint64_t status; > + register unsigned long r8 asm("r8") = output_addr; I guess strictly speaking this wants to be asm ( "r8" ), albeit I now realize that I've similarly not played by style in alternative_callN(). In the end I guess - either way. > + asm volatile ( "call hv_hcall_page" > + : "=a" (status), "+c" (control), > + "+d" (input_addr) ASM_CALL_CONSTRAINT > + : "r" (r8) Why "+c" and "+d" but just "r"? If r8 gets treated differently from rcx and rdx, please attach a brief comment. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |