lkml.org 
[lkml]   [2008]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 07/39] don't clobber r8 nor use rcx
    Date
    There's really no reason to clobber r8 or pass the address in rcx.
    We can safely use only two registers (which we already have to touch anyway)
    to do the job.

    Signed-off-by: Glauber Costa <gcosta@redhat.com>
    ---
    arch/x86/lib/getuser_64.S | 42 +++++++++++++++++++++---------------------
    include/asm-x86/uaccess_64.h | 3 +--
    2 files changed, 22 insertions(+), 23 deletions(-)

    diff --git a/arch/x86/lib/getuser_64.S b/arch/x86/lib/getuser_64.S
    index 5448876..2b003d3 100644
    --- a/arch/x86/lib/getuser_64.S
    +++ b/arch/x86/lib/getuser_64.S
    @@ -36,10 +36,10 @@
    .text
    ENTRY(__get_user_1)
    CFI_STARTPROC
    - GET_THREAD_INFO(%r8)
    - cmpq threadinfo_addr_limit(%r8),%rcx
    + GET_THREAD_INFO(%rdx)
    + cmpq threadinfo_addr_limit(%rdx),%rax
    jae bad_get_user
    -1: movzb (%rcx),%edx
    +1: movzb (%rax),%edx
    xorl %eax,%eax
    ret
    CFI_ENDPROC
    @@ -47,48 +47,48 @@ ENDPROC(__get_user_1)

    ENTRY(__get_user_2)
    CFI_STARTPROC
    - GET_THREAD_INFO(%r8)
    - addq $1,%rcx
    + GET_THREAD_INFO(%rdx)
    + addq $1,%rax
    jc 20f
    - cmpq threadinfo_addr_limit(%r8),%rcx
    + cmpq threadinfo_addr_limit(%rdx),%rax
    jae 20f
    - decq %rcx
    -2: movzwl (%rcx),%edx
    + decq %rax
    +2: movzwl (%rax),%edx
    xorl %eax,%eax
    ret
    -20: decq %rcx
    +20: decq %rax
    jmp bad_get_user
    CFI_ENDPROC
    ENDPROC(__get_user_2)

    ENTRY(__get_user_4)
    CFI_STARTPROC
    - GET_THREAD_INFO(%r8)
    - addq $3,%rcx
    + GET_THREAD_INFO(%rdx)
    + addq $3,%rax
    jc 30f
    - cmpq threadinfo_addr_limit(%r8),%rcx
    + cmpq threadinfo_addr_limit(%rdx),%rax
    jae 30f
    - subq $3,%rcx
    -3: movl (%rcx),%edx
    + subq $3,%rax
    +3: movl (%rax),%edx
    xorl %eax,%eax
    ret
    -30: subq $3,%rcx
    +30: subq $3,%rax
    jmp bad_get_user
    CFI_ENDPROC
    ENDPROC(__get_user_4)

    ENTRY(__get_user_8)
    CFI_STARTPROC
    - GET_THREAD_INFO(%r8)
    - addq $7,%rcx
    + GET_THREAD_INFO(%rdx)
    + addq $7,%rax
    jc 40f
    - cmpq threadinfo_addr_limit(%r8),%rcx
    + cmpq threadinfo_addr_limit(%rdx),%rax
    jae 40f
    - subq $7,%rcx
    -4: movq (%rcx),%rdx
    + subq $7,%rax
    +4: movq (%rax),%rdx
    xorl %eax,%eax
    ret
    -40: subq $7,%rcx
    +40: subq $7,%rax
    jmp bad_get_user
    CFI_ENDPROC
    ENDPROC(__get_user_8)
    diff --git a/include/asm-x86/uaccess_64.h b/include/asm-x86/uaccess_64.h
    index 83382c1..9049f4e 100644
    --- a/include/asm-x86/uaccess_64.h
    +++ b/include/asm-x86/uaccess_64.h
    @@ -90,8 +90,7 @@ extern int fixup_exception(struct pt_regs *regs);
    #define __get_user_x(size, ret, x, ptr) \
    asm volatile("call __get_user_" #size \
    : "=a" (ret),"=d" (x) \
    - : "c" (ptr) \
    - : "r8")
    + : "0" (ptr)) \

    /* Careful: we have to cast the result to the type of the pointer
    * for sign reasons */
    --
    1.5.5.1


    \
     
     \ /
      Last update: 2008-06-27 23:39    [W:0.037 / U:0.152 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site