[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |