diff options
Diffstat (limited to 'arch/x86/lib/putuser_64.S')
-rw-r--r-- | arch/x86/lib/putuser_64.S | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/arch/x86/lib/putuser_64.S b/arch/x86/lib/putuser_64.S index c18fc0f5256c..d496cc8e7308 100644 --- a/arch/x86/lib/putuser_64.S +++ b/arch/x86/lib/putuser_64.S | |||
@@ -30,64 +30,65 @@ | |||
30 | #include <asm/errno.h> | 30 | #include <asm/errno.h> |
31 | #include <asm/asm-offsets.h> | 31 | #include <asm/asm-offsets.h> |
32 | #include <asm/thread_info.h> | 32 | #include <asm/thread_info.h> |
33 | #include <asm/asm.h> | ||
33 | 34 | ||
34 | #define ENTER CFI_STARTPROC ; \ | 35 | #define ENTER CFI_STARTPROC ; \ |
35 | GET_THREAD_INFO(%rbx) | 36 | GET_THREAD_INFO(%_ASM_BX) |
36 | #define EXIT ret ; \ | 37 | #define EXIT ret ; \ |
37 | CFI_ENDPROC | 38 | CFI_ENDPROC |
38 | 39 | ||
39 | .text | 40 | .text |
40 | ENTRY(__put_user_1) | 41 | ENTRY(__put_user_1) |
41 | ENTER | 42 | ENTER |
42 | cmp TI_addr_limit(%rbx),%rcx | 43 | cmp TI_addr_limit(%_ASM_BX),%_ASM_CX |
43 | jae bad_put_user | 44 | jae bad_put_user |
44 | 1: movb %al,(%rcx) | 45 | 1: movb %al,(%_ASM_CX) |
45 | xor %eax,%eax | 46 | xor %eax,%eax |
46 | EXIT | 47 | EXIT |
47 | ENDPROC(__put_user_1) | 48 | ENDPROC(__put_user_1) |
48 | 49 | ||
49 | ENTRY(__put_user_2) | 50 | ENTRY(__put_user_2) |
50 | ENTER | 51 | ENTER |
51 | mov TI_addr_limit(%rbx),%rbx | 52 | mov TI_addr_limit(%_ASM_BX),%_ASM_BX |
52 | sub $1, %rbx | 53 | sub $1, %_ASM_BX |
53 | cmp %rbx ,%rcx | 54 | cmp %_ASM_BX ,%_ASM_CX |
54 | jae bad_put_user | 55 | jae bad_put_user |
55 | 2: movw %ax,(%rcx) | 56 | 2: movw %ax,(%_ASM_CX) |
56 | xor %eax,%eax | 57 | xor %eax,%eax |
57 | EXIT | 58 | EXIT |
58 | ENDPROC(__put_user_2) | 59 | ENDPROC(__put_user_2) |
59 | 60 | ||
60 | ENTRY(__put_user_4) | 61 | ENTRY(__put_user_4) |
61 | ENTER | 62 | ENTER |
62 | mov TI_addr_limit(%rbx),%rbx | 63 | mov TI_addr_limit(%_ASM_BX),%_ASM_BX |
63 | sub $3, %rbx | 64 | sub $3, %_ASM_BX |
64 | cmp %rbx, %rcx | 65 | cmp %_ASM_BX, %_ASM_CX |
65 | jae bad_put_user | 66 | jae bad_put_user |
66 | 3: movl %eax,(%rcx) | 67 | 3: movl %eax,(%_ASM_CX) |
67 | xor %eax,%eax | 68 | xor %eax,%eax |
68 | EXIT | 69 | EXIT |
69 | ENDPROC(__put_user_4) | 70 | ENDPROC(__put_user_4) |
70 | 71 | ||
71 | ENTRY(__put_user_8) | 72 | ENTRY(__put_user_8) |
72 | ENTER | 73 | ENTER |
73 | mov TI_addr_limit(%rbx),%rbx | 74 | mov TI_addr_limit(%_ASM_BX),%_ASM_BX |
74 | sub $7, %rbx | 75 | sub $7, %_ASM_BX |
75 | cmp %rbx, %rcx | 76 | cmp %_ASM_BX, %_ASM_CX |
76 | jae bad_put_user | 77 | jae bad_put_user |
77 | 4: movq %rax,(%rcx) | 78 | 4: movq %_ASM_AX,(%_ASM_CX) |
78 | xor %eax,%eax | 79 | xor %eax,%eax |
79 | EXIT | 80 | EXIT |
80 | ENDPROC(__put_user_8) | 81 | ENDPROC(__put_user_8) |
81 | 82 | ||
82 | bad_put_user: | 83 | bad_put_user: |
83 | CFI_STARTPROC | 84 | CFI_STARTPROC |
84 | mov $(-EFAULT),%rax | 85 | mov $(-EFAULT),%eax |
85 | EXIT | 86 | EXIT |
86 | END(bad_put_user) | 87 | END(bad_put_user) |
87 | 88 | ||
88 | .section __ex_table,"a" | 89 | .section __ex_table,"a" |
89 | .quad 1b,bad_put_user | 90 | _ASM_PTR 1b,bad_put_user |
90 | .quad 2b,bad_put_user | 91 | _ASM_PTR 2b,bad_put_user |
91 | .quad 3b,bad_put_user | 92 | _ASM_PTR 3b,bad_put_user |
92 | .quad 4b,bad_put_user | 93 | _ASM_PTR 4b,bad_put_user |
93 | .previous | 94 | .previous |