arch/s390/lib/csum-partial.c

Source file repositories/reference/linux-study-clean/arch/s390/lib/csum-partial.c

File Facts

System
Linux kernel
Corpus path
arch/s390/lib/csum-partial.c
Extension
.c
Size
2018 bytes
Lines
92
Domain
Architecture Layer
Bucket
arch/s390
Inferred role
Architecture Layer: exported/initcall integration point
Status
integration implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

if (copy) {
			fpu_vstm(20, 23, dst);
			dst += 64;
		}
		fpu_vcksm(16, 20, 16);
		fpu_vcksm(17, 21, 17);
		fpu_vcksm(18, 22, 18);
		fpu_vcksm(19, 23, 19);
		src += 64;
		len -= 64;
	}
	while (len >= 32) {
		fpu_vlm(20, 21, src);
		if (copy) {
			fpu_vstm(20, 21, dst);
			dst += 32;
		}
		fpu_vcksm(16, 20, 16);
		fpu_vcksm(17, 21, 17);
		src += 32;
		len -= 32;
	}
	while (len >= 16) {
		fpu_vl(20, src);
		if (copy) {
			fpu_vst(20, dst);
			dst += 16;
		}
		fpu_vcksm(16, 20, 16);
		src += 16;
		len -= 16;
	}
	if (len) {
		fpu_vll(20, len - 1, src);
		if (copy)
			fpu_vstl(20, len - 1, dst);
		fpu_vcksm(16, 20, 16);
	}
	fpu_vcksm(18, 19, 18);
	fpu_vcksm(16, 17, 16);
	fpu_vcksm(16, 18, 16);
	sum = (__force __wsum)fpu_vlgvf(16, 1);
	kernel_fpu_end(&vxstate, KERNEL_VXR_V16V23);
	return sum;
}

__wsum csum_partial(const void *buff, int len, __wsum sum)
{
	return csum_copy(NULL, buff, len, sum, false);
}
EXPORT_SYMBOL(csum_partial);

__wsum csum_partial_copy_nocheck(const void *src, void *dst, int len)
{
	return csum_copy(dst, src, len, 0, true);
}
EXPORT_SYMBOL(csum_partial_copy_nocheck);

Annotation

Implementation Notes