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

Commit 5afe18d2 authored by Jiri Bohac's avatar Jiri Bohac Committed by Tony Luck
Browse files

[IA64] fix csum_ipv6_magic()



The 32-bit parameters (len and csum) of csum_ipv6_magic() are passed in 64-bit
registers in2 and in4. The high order 32 bits of the registers were never
cleared, and garbage was sometimes calculated into the checksum.

Fix this by clearing the high order 32 bits of these registers.

Signed-off-by: default avatarJiri Bohac <jbohac@suse.cz>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent f2486f26
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -96,20 +96,22 @@ END(ip_fast_csum)
GLOBAL_ENTRY(csum_ipv6_magic)
	ld4	r20=[in0],4
	ld4	r21=[in1],4
	dep	r15=in3,in2,32,16
	zxt4	in2=in2
	;;
	ld4	r22=[in0],4
	ld4	r23=[in1],4
	mux1	r15=r15,@rev
	dep	r15=in3,in2,32,16
	;;
	ld4	r24=[in0],4
	ld4	r25=[in1],4
	shr.u	r15=r15,16
	mux1	r15=r15,@rev
	add	r16=r20,r21
	add	r17=r22,r23
	zxt4	in4=in4
	;;
	ld4	r26=[in0],4
	ld4	r27=[in1],4
	shr.u	r15=r15,16
	add	r18=r24,r25
	add	r8=r16,r17
	;;