[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 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).

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

-- 
Julien Grall

_______________________________________________
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®.