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

Commit a4aa2e86 authored by David S. Miller's avatar David S. Miller
Browse files

[SPARC64]: Don't use in/local regs for ldx/stx data in N1 memcpy.



It doesn't matter for use in 64-bit objects, but when used in
32-bit environments the top 32-bits of the local and in
registers will get chopped off on the next register window
spill/restore which leads to difficult to track down and
subtle bugs.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f778089c
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -321,11 +321,11 @@ FUNC_NAME: /* %i0=dst, %i1=src, %i2=len */
	andn		%i2, 0xf, %i4
	and		%i2, 0xf, %i2
1:	subcc		%i4, 0x10, %i4
	EX_LD(LOAD(ldx, %i1, %i5))
	EX_LD(LOAD(ldx, %i1, %o4))
	add		%i1, 0x08, %i1
	EX_LD(LOAD(ldx, %i1, %g1))
	sub		%i1, 0x08, %i1
	EX_ST(STORE(stx, %i5, %i1 + %i3))
	EX_ST(STORE(stx, %o4, %i1 + %i3))
	add		%i1, 0x8, %i1
	EX_ST(STORE(stx, %g1, %i1 + %i3))
	bgu,pt		%XCC, 1b
@@ -334,8 +334,8 @@ FUNC_NAME: /* %i0=dst, %i1=src, %i2=len */
	be,pt		%XCC, 1f
	 nop
	sub		%i2, 0x8, %i2
	EX_LD(LOAD(ldx, %i1, %i5))
	EX_ST(STORE(stx, %i5, %i1 + %i3))
	EX_LD(LOAD(ldx, %i1, %o4))
	EX_ST(STORE(stx, %o4, %i1 + %i3))
	add		%i1, 0x8, %i1
1:	andcc		%i2, 0x4, %g0
	be,pt		%XCC, 1f