[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 02/34] xen: clang: Disable built-in assembler



On Tue, 2014-04-01 at 15:50 +0100, Julien Grall wrote:
> On 04/01/2014 02:11 PM, Ian Campbell wrote:
> > On Sat, 2014-03-29 at 22:55 +0000, Julien Grall wrote:
> >> Hi Tim,
> >>
> >> On 27/03/14 18:01, Tim Deegan wrote:
> >>>
> >>> The patch below works for me (at least as far as building
> >>> asm-offsets.h on x86) by wrapping everything in a string.  I did try
> >>> just prefixing with '#' but clang 3.5 also strips the comments out.
> >>> That seems unhelpful, since I know some people put comments in their
> >>> inline assembler too. :(
> >>
> >> I'm able to build correctly x86 with your patch, and this patch (e.g #2) 
> >> reverted.
> >>
> >> But for ARM ... it breaks in another place :(
> >>
> >> vfp.c:8:25: error: invalid operand for instruction
> >>      v->arch.vfp.fpexc = READ_CP32(FPEXC);
> >> <inline asm>:1:6: note: instantiated into assembly here
> >>          mrc p10, 7, r1, c8, c0, 0;
> >>              ^
> >>
> >> Coprocessor p10 (and p11) are used for Neon instruction are clang 
> >> doesn't allow to use it directly. 
> >> (http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20131104/194170.html).
> >>
> >> Depends on which part of the ARM ARM you are reading, p10 and p11 should 
> >> not be used directly with mrc/mcr instruction ... but gas accept it.
> >>
> >> I guess the best solution is to use directly the VFP instructions but it 
> >> would mean to re-enable VFP at compile time in Xen (see 
> >> http://www.gossamer-threads.com/lists/xen/devel/284653?do=post_view_threaded).
> > 
> > Do the VFP instructions have different encodings? I thought this was an
> > assembler mnemonic difference only.
> 
> Strictly speaking it works only because vldm* as the same encoding as
> ldc*. But the processor will decode the instruction as vldm* (and
> execute as it is).

Are those the instructions in question though? The thing you quoted was
about reading FPEXC which is an mrc cp instruction vs vmrs I think. They
do indeed have identical encodings, so I'm not entirely sure what the
big deal is about which assembler mnemonic gets used is, the process has
no idea what we wrote in the source.

> LLVM assembly parser prevents the user to use ldc* in the assembly as
> specified by the ARM ARM.




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.