lkml.org 
[lkml]   [2012]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:x86/smap] x86, alternative: Use .pushsection/.popsection
    Commit-ID:  9cebed423c84a56b871327dd77e555d1d2186a6b
    Gitweb: http://git.kernel.org/tip/9cebed423c84a56b871327dd77e555d1d2186a6b
    Author: H. Peter Anvin <hpa@linux.intel.com>
    AuthorDate: Fri, 21 Sep 2012 12:43:08 -0700
    Committer: H. Peter Anvin <hpa@linux.intel.com>
    CommitDate: Fri, 21 Sep 2012 12:45:25 -0700

    x86, alternative: Use .pushsection/.popsection

    .section/.previous doesn't nest. Use .pushsection/.popsection in
    <asm/alternative.h> so that they can be properly nested.

    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Link: http://lkml.kernel.org/r/1348256595-29119-5-git-send-email-hpa@linux.intel.com
    ---
    arch/x86/include/asm/alternative-asm.h | 4 ++--
    arch/x86/include/asm/alternative.h | 32 ++++++++++++++++----------------
    2 files changed, 18 insertions(+), 18 deletions(-)

    diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h
    index 952bd01..018d29f 100644
    --- a/arch/x86/include/asm/alternative-asm.h
    +++ b/arch/x86/include/asm/alternative-asm.h
    @@ -5,10 +5,10 @@
    #ifdef CONFIG_SMP
    .macro LOCK_PREFIX
    672: lock
    - .section .smp_locks,"a"
    + .pushsection .smp_locks,"a"
    .balign 4
    .long 672b - .
    - .previous
    + .popsection
    .endm
    #else
    .macro LOCK_PREFIX
    diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h
    index 7078068..87bc00d 100644
    --- a/arch/x86/include/asm/alternative.h
    +++ b/arch/x86/include/asm/alternative.h
    @@ -29,10 +29,10 @@

    #ifdef CONFIG_SMP
    #define LOCK_PREFIX_HERE \
    - ".section .smp_locks,\"a\"\n" \
    - ".balign 4\n" \
    - ".long 671f - .\n" /* offset */ \
    - ".previous\n" \
    + ".pushsection .smp_locks,\"a\"\n" \
    + ".balign 4\n" \
    + ".long 671f - .\n" /* offset */ \
    + ".popsection\n" \
    "671:"

    #define LOCK_PREFIX LOCK_PREFIX_HERE "\n\tlock; "
    @@ -99,30 +99,30 @@ static inline int alternatives_text_reserved(void *start, void *end)
    /* alternative assembly primitive: */
    #define ALTERNATIVE(oldinstr, newinstr, feature) \
    OLDINSTR(oldinstr) \
    - ".section .altinstructions,\"a\"\n" \
    + ".pushsection .altinstructions,\"a\"\n" \
    ALTINSTR_ENTRY(feature, 1) \
    - ".previous\n" \
    - ".section .discard,\"aw\",@progbits\n" \
    + ".popsection\n" \
    + ".pushsection .discard,\"aw\",@progbits\n" \
    DISCARD_ENTRY(1) \
    - ".previous\n" \
    - ".section .altinstr_replacement, \"ax\"\n" \
    + ".popsection\n" \
    + ".pushsection .altinstr_replacement, \"ax\"\n" \
    ALTINSTR_REPLACEMENT(newinstr, feature, 1) \
    - ".previous"
    + ".popsection"

    #define ALTERNATIVE_2(oldinstr, newinstr1, feature1, newinstr2, feature2)\
    OLDINSTR(oldinstr) \
    - ".section .altinstructions,\"a\"\n" \
    + ".pushsection .altinstructions,\"a\"\n" \
    ALTINSTR_ENTRY(feature1, 1) \
    ALTINSTR_ENTRY(feature2, 2) \
    - ".previous\n" \
    - ".section .discard,\"aw\",@progbits\n" \
    + ".popsection\n" \
    + ".pushsection .discard,\"aw\",@progbits\n" \
    DISCARD_ENTRY(1) \
    DISCARD_ENTRY(2) \
    - ".previous\n" \
    - ".section .altinstr_replacement, \"ax\"\n" \
    + ".popsection\n" \
    + ".pushsection .altinstr_replacement, \"ax\"\n" \
    ALTINSTR_REPLACEMENT(newinstr1, feature1, 1) \
    ALTINSTR_REPLACEMENT(newinstr2, feature2, 2) \
    - ".previous"
    + ".popsection"

    /*
    * This must be included *after* the definition of ALTERNATIVE due to

    \
     
     \ /
      Last update: 2012-09-21 22:21    [W:2.106 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site