Commit e4ab7680 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Herbert Xu
Browse files

crypto: x86/sha256 - Use RIP-relative addressing



Prefer RIP-relative addressing where possible, which removes the need
for boot time relocation fixups.

Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent c41672b9
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -589,19 +589,23 @@ last_block_enter:

.align 16
loop1:
	vpaddd	K256+0*32(SRND), X0, XFER
	leaq	K256+0*32(%rip), INP		## reuse INP as scratch reg
	vpaddd	(INP, SRND), X0, XFER
	vmovdqa XFER, 0*32+_XFER(%rsp, SRND)
	FOUR_ROUNDS_AND_SCHED	_XFER + 0*32

	vpaddd	K256+1*32(SRND), X0, XFER
	leaq	K256+1*32(%rip), INP
	vpaddd	(INP, SRND), X0, XFER
	vmovdqa XFER, 1*32+_XFER(%rsp, SRND)
	FOUR_ROUNDS_AND_SCHED	_XFER + 1*32

	vpaddd	K256+2*32(SRND), X0, XFER
	leaq	K256+2*32(%rip), INP
	vpaddd	(INP, SRND), X0, XFER
	vmovdqa XFER, 2*32+_XFER(%rsp, SRND)
	FOUR_ROUNDS_AND_SCHED	_XFER + 2*32

	vpaddd	K256+3*32(SRND), X0, XFER
	leaq	K256+3*32(%rip), INP
	vpaddd	(INP, SRND), X0, XFER
	vmovdqa XFER, 3*32+_XFER(%rsp, SRND)
	FOUR_ROUNDS_AND_SCHED	_XFER + 3*32

@@ -611,11 +615,13 @@ loop1:

loop2:
	## Do last 16 rounds with no scheduling
	vpaddd	K256+0*32(SRND), X0, XFER
	leaq	K256+0*32(%rip), INP
	vpaddd	(INP, SRND), X0, XFER
	vmovdqa XFER, 0*32+_XFER(%rsp, SRND)
	DO_4ROUNDS	_XFER + 0*32

	vpaddd	K256+1*32(SRND), X1, XFER
	leaq	K256+1*32(%rip), INP
	vpaddd	(INP, SRND), X1, XFER
	vmovdqa XFER, 1*32+_XFER(%rsp, SRND)
	DO_4ROUNDS	_XFER + 1*32
	add	$2*32, SRND