Skip to content

Commit

Permalink
MIPS: IP checksums: Optimize adjust of sum on buffers of odd alignment.
Browse files Browse the repository at this point in the history
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Ralf Baechle committed Oct 11, 2008
1 parent 60724ca commit b65a75b
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions arch/mips/lib/csum_partial.S
Original file line number Diff line number Diff line change
Expand Up @@ -270,13 +270,20 @@ LEAF(csum_partial)
#endif

/* odd buffer alignment? */
beqz t7, 1f
nop
sll v1, sum, 8
#ifdef CPU_MIPSR2
wsbh v1, sum
movn sum, v1, t7
#else
beqz t7, 1f /* odd buffer alignment? */
lui v1, 0x00ff
addu v1, 0x00ff
and t0, sum, v1
sll t0, t0, 8
srl sum, sum, 8
or sum, v1
andi sum, 0xffff
and sum, sum, v1
or sum, sum, t0
1:
#endif
.set reorder
/* Add the passed partial csum. */
ADDC32(sum, a2)
Expand Down Expand Up @@ -663,14 +670,20 @@ EXC( sb t0, NBYTES-2(dst), .Ls_exc)
addu sum, v1
#endif

/* odd buffer alignment? */
beqz odd, 1f
nop
sll v1, sum, 8
#ifdef CPU_MIPSR2
wsbh v1, sum
movn sum, v1, odd
#else
beqz odd, 1f /* odd buffer alignment? */
lui v1, 0x00ff
addu v1, 0x00ff
and t0, sum, v1
sll t0, t0, 8
srl sum, sum, 8
or sum, v1
andi sum, 0xffff
and sum, sum, v1
or sum, sum, t0
1:
#endif
.set reorder
ADDC32(sum, psum)
jr ra
Expand Down

0 comments on commit b65a75b

Please sign in to comment.