Skip to content

Commit

Permalink
x86: change testing logic in putuser_64.S.
Browse files Browse the repository at this point in the history
Instead of operating over a register we need to put back
into normal state afterwards (the memory position), just
sub from rbx, which is trashed anyway. We can save a few instructions.

Also, this is the i386 way.

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Glauber Costa authored and Ingo Molnar committed Jul 9, 2008
1 parent 0ada316 commit 663aa96
Showing 1 changed file with 12 additions and 21 deletions.
33 changes: 12 additions & 21 deletions arch/x86/lib/putuser_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -46,48 +46,39 @@ ENDPROC(__put_user_1)
ENTRY(__put_user_2)
CFI_STARTPROC
GET_THREAD_INFO(%rbx)
addq $1,%rcx
jc 20f
cmpq TI_addr_limit(%rbx),%rcx
jae 20f
decq %rcx
mov TI_addr_limit(%rbx),%rbx
sub $1, %rbx
cmpq %rbx ,%rcx
jae bad_put_user
2: movw %ax,(%rcx)
xorl %eax,%eax
ret
20: decq %rcx
jmp bad_put_user
CFI_ENDPROC
ENDPROC(__put_user_2)

ENTRY(__put_user_4)
CFI_STARTPROC
GET_THREAD_INFO(%rbx)
addq $3,%rcx
jc 30f
cmpq TI_addr_limit(%rbx),%rcx
jae 30f
subq $3,%rcx
mov TI_addr_limit(%rbx),%rbx
sub $3, %rbx
cmp %rbx, %rcx
jae bad_put_user
3: movl %eax,(%rcx)
xorl %eax,%eax
ret
30: subq $3,%rcx
jmp bad_put_user
CFI_ENDPROC
ENDPROC(__put_user_4)

ENTRY(__put_user_8)
CFI_STARTPROC
GET_THREAD_INFO(%rbx)
addq $7,%rcx
jc 40f
cmpq TI_addr_limit(%rbx),%rcx
jae 40f
subq $7,%rcx
mov TI_addr_limit(%rbx),%rbx
sub $7, %rbx
cmp %rbx, %rcx
jae bad_put_user
4: movq %rax,(%rcx)
xorl %eax,%eax
ret
40: subq $7,%rcx
jmp bad_put_user
CFI_ENDPROC
ENDPROC(__put_user_8)

Expand Down

0 comments on commit 663aa96

Please sign in to comment.