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

Re: [Xen-devel] [PATCH 4/7] x86/asm: Remove opencoded uses of altinstruction_entry



On 12/02/18 17:46, Roger Pau Monné wrote:
> On Mon, Feb 12, 2018 at 11:23:04AM +0000, Andrew Cooper wrote:
>> diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
>> index 58f652d..bd3819a 100644
>> --- a/xen/arch/x86/x86_64/entry.S
>> +++ b/xen/arch/x86/x86_64/entry.S
>> @@ -557,23 +557,9 @@ handle_exception_saved:
>>          testb $X86_EFLAGS_IF>>8,UREGS_eflags+1(%rsp)
>>          jz    exception_with_ints_disabled
>>  
>> -.Lcr4_pv32_orig:
>> -        jmp   .Lcr4_pv32_done
>> -        .skip (.Lcr4_pv32_alt_end - .Lcr4_pv32_alt) - (. - 
>> .Lcr4_pv32_orig), 0xcc
>> -        .pushsection .altinstr_replacement, "ax"
>> -.Lcr4_pv32_alt:
>> -        mov   VCPU_domain(%rbx),%rax
>> -.Lcr4_pv32_alt_end:
>> -        .section .altinstructions, "a"
>> -        altinstruction_entry .Lcr4_pv32_orig, .Lcr4_pv32_alt, \
>> -                             X86_FEATURE_XEN_SMEP, \
>> -                             (.Lcr4_pv32_alt_end - .Lcr4_pv32_alt), \
>> -                             (.Lcr4_pv32_alt_end - .Lcr4_pv32_alt)
>> -        altinstruction_entry .Lcr4_pv32_orig, .Lcr4_pv32_alt, \
>> -                             X86_FEATURE_XEN_SMAP, \
>> -                             (.Lcr4_pv32_alt_end - .Lcr4_pv32_alt), \
>> -                             (.Lcr4_pv32_alt_end - .Lcr4_pv32_alt)
>> -        .popsection
>> +        ALTERNATIVE_2 "jmp .Lcr4_pv32_done; .skip 2, 0x90", \
>> +            __stringify(mov VCPU_domain(%rbx), %rax), X86_FEATURE_XEN_SMEP, 
>> \
>> +            __stringify(mov VCPU_domain(%rbx), %rax), X86_FEATURE_XEN_SMAP
> What's the point of using __stringify here, isn't it clearer to just
> use "mov ..."?

Assembler macro parameters are miserable.  Spaces and commas are both
separators (unless you've got an integer parameter and some brackets). 
Therefore, the "right" way to do this would be:

ALTERNATIVE_2 "jmp .Lcr4_pv32_done; .skip 2, 0x90", \
    "mov VCPU_domain(%rbx), %rax", X86_FEATURE_XEN_SMEP, \
    "mov VCPU_domain(%rbx), %rax", X86_FEATURE_XEN_SMAP

Except that you also need VCPU_domain to be expanded, hence the
__stringify().

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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