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    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site