aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/lib/putuser_64.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/lib/putuser_64.S')
-rw-r--r--arch/x86/lib/putuser_64.S41
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
40ENTRY(__put_user_1) 41ENTRY(__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
441: movb %al,(%rcx) 451: movb %al,(%_ASM_CX)
45 xor %eax,%eax 46 xor %eax,%eax
46 EXIT 47 EXIT
47ENDPROC(__put_user_1) 48ENDPROC(__put_user_1)
48 49
49ENTRY(__put_user_2) 50ENTRY(__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
552: movw %ax,(%rcx) 562: movw %ax,(%_ASM_CX)
56 xor %eax,%eax 57 xor %eax,%eax
57 EXIT 58 EXIT
58ENDPROC(__put_user_2) 59ENDPROC(__put_user_2)
59 60
60ENTRY(__put_user_4) 61ENTRY(__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
663: movl %eax,(%rcx) 673: movl %eax,(%_ASM_CX)
67 xor %eax,%eax 68 xor %eax,%eax
68 EXIT 69 EXIT
69ENDPROC(__put_user_4) 70ENDPROC(__put_user_4)
70 71
71ENTRY(__put_user_8) 72ENTRY(__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
774: movq %rax,(%rcx) 784: movq %_ASM_AX,(%_ASM_CX)
78 xor %eax,%eax 79 xor %eax,%eax
79 EXIT 80 EXIT
80ENDPROC(__put_user_8) 81ENDPROC(__put_user_8)
81 82
82bad_put_user: 83bad_put_user:
83 CFI_STARTPROC 84 CFI_STARTPROC
84 mov $(-EFAULT),%rax 85 mov $(-EFAULT),%eax
85 EXIT 86 EXIT
86END(bad_put_user) 87END(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