mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 12:16:20 +00:00
[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: Jiri Bohac <jbohac@suse.cz> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
f2486f2669
commit
5afe18d2f5
1 changed files with 5 additions and 3 deletions
|
@ -96,20 +96,22 @@ END(ip_fast_csum)
|
||||||
GLOBAL_ENTRY(csum_ipv6_magic)
|
GLOBAL_ENTRY(csum_ipv6_magic)
|
||||||
ld4 r20=[in0],4
|
ld4 r20=[in0],4
|
||||||
ld4 r21=[in1],4
|
ld4 r21=[in1],4
|
||||||
dep r15=in3,in2,32,16
|
zxt4 in2=in2
|
||||||
;;
|
;;
|
||||||
ld4 r22=[in0],4
|
ld4 r22=[in0],4
|
||||||
ld4 r23=[in1],4
|
ld4 r23=[in1],4
|
||||||
mux1 r15=r15,@rev
|
dep r15=in3,in2,32,16
|
||||||
;;
|
;;
|
||||||
ld4 r24=[in0],4
|
ld4 r24=[in0],4
|
||||||
ld4 r25=[in1],4
|
ld4 r25=[in1],4
|
||||||
shr.u r15=r15,16
|
mux1 r15=r15,@rev
|
||||||
add r16=r20,r21
|
add r16=r20,r21
|
||||||
add r17=r22,r23
|
add r17=r22,r23
|
||||||
|
zxt4 in4=in4
|
||||||
;;
|
;;
|
||||||
ld4 r26=[in0],4
|
ld4 r26=[in0],4
|
||||||
ld4 r27=[in1],4
|
ld4 r27=[in1],4
|
||||||
|
shr.u r15=r15,16
|
||||||
add r18=r24,r25
|
add r18=r24,r25
|
||||||
add r8=r16,r17
|
add r8=r16,r17
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Reference in a new issue