Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 663aa96d authored by Glauber Costa's avatar Glauber Costa Committed by Ingo Molnar
Browse files

x86: change testing logic in putuser_64.S.



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: default avatarGlauber Costa <gcosta@redhat.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 0ada3164
Loading
Loading
Loading
Loading
+12 −21
Original line number Diff line number Diff line
@@ -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)