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

Commit d0f0f63a authored by Ralf Baechle's avatar Ralf Baechle
Browse files

MIPS: Rewrite csum_fold to plain C.



This isn't only short and easier to read and fully portable but also
shrinks a Malta kernel's by 160 bytes.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent eaa27f34
Loading
Loading
Loading
Loading
+8 −14
Original line number Diff line number Diff line
@@ -103,22 +103,16 @@ __wsum csum_partial_copy_nocheck(const void *src, void *dst,
/*
 *	Fold a partial checksum without adding pseudo headers
 */
static inline __sum16 csum_fold(__wsum sum)
static inline __sum16 csum_fold(__wsum csum)
{
	__asm__(
	"	.set	push		# csum_fold\n"
	"	.set	noat		\n"
	"	sll	$1, %0, 16	\n"
	"	addu	%0, $1		\n"
	"	sltu	$1, %0, $1	\n"
	"	srl	%0, %0, 16	\n"
	"	addu	%0, $1		\n"
	"	xori	%0, 0xffff	\n"
	"	.set	pop"
	: "=r" (sum)
	: "0" (sum));
	u32 sum = (__force u32)csum;;

	sum += (sum << 16);
	csum = (sum < csum);
	sum >>= 16;
	sum += csum;

	return (__force __sum16)sum;
	return (__force __sum16)~sum;
}

/*