xref: /openbmc/linux/arch/arm/lib/csumpartialcopy.S (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
1d2912cb1SThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-only */
21da177e4SLinus Torvalds/*
31da177e4SLinus Torvalds *  linux/arch/arm/lib/csumpartialcopy.S
41da177e4SLinus Torvalds *
51da177e4SLinus Torvalds *  Copyright (C) 1995-1998 Russell King
61da177e4SLinus Torvalds */
71da177e4SLinus Torvalds#include <linux/linkage.h>
81da177e4SLinus Torvalds#include <asm/assembler.h>
91da177e4SLinus Torvalds
101da177e4SLinus Torvalds		.text
111da177e4SLinus Torvalds
12*cc44c17bSAl Viro/* Function: __u32 csum_partial_copy_nocheck(const char *src, char *dst, int len)
13*cc44c17bSAl Viro * Params  : r0 = src, r1 = dst, r2 = len
141da177e4SLinus Torvalds * Returns : r0 = new checksum
151da177e4SLinus Torvalds */
161da177e4SLinus Torvalds
171da177e4SLinus Torvalds		.macro	save_regs
1822acc4e6SCatalin Marinas		stmfd	sp!, {r1, r4 - r8, lr}
191da177e4SLinus Torvalds		.endm
201da177e4SLinus Torvalds
2190303b10SCatalin Marinas		.macro	load_regs
2222acc4e6SCatalin Marinas		ldmfd	sp!, {r1, r4 - r8, pc}
231da177e4SLinus Torvalds		.endm
241da177e4SLinus Torvalds
251da177e4SLinus Torvalds		.macro	load1b, reg1
261da177e4SLinus Torvalds		ldrb	\reg1, [r0], #1
271da177e4SLinus Torvalds		.endm
281da177e4SLinus Torvalds
291da177e4SLinus Torvalds		.macro	load2b, reg1, reg2
301da177e4SLinus Torvalds		ldrb	\reg1, [r0], #1
311da177e4SLinus Torvalds		ldrb	\reg2, [r0], #1
321da177e4SLinus Torvalds		.endm
331da177e4SLinus Torvalds
341da177e4SLinus Torvalds		.macro	load1l, reg1
351da177e4SLinus Torvalds		ldr	\reg1, [r0], #4
361da177e4SLinus Torvalds		.endm
371da177e4SLinus Torvalds
381da177e4SLinus Torvalds		.macro	load2l, reg1, reg2
391da177e4SLinus Torvalds		ldr	\reg1, [r0], #4
401da177e4SLinus Torvalds		ldr	\reg2, [r0], #4
411da177e4SLinus Torvalds		.endm
421da177e4SLinus Torvalds
431da177e4SLinus Torvalds		.macro	load4l, reg1, reg2, reg3, reg4
441da177e4SLinus Torvalds		ldmia	r0!, {\reg1, \reg2, \reg3, \reg4}
451da177e4SLinus Torvalds		.endm
461da177e4SLinus Torvalds
471da177e4SLinus Torvalds#define FN_ENTRY	ENTRY(csum_partial_copy_nocheck)
4893ed3970SCatalin Marinas#define FN_EXIT		ENDPROC(csum_partial_copy_nocheck)
491da177e4SLinus Torvalds
501da177e4SLinus Torvalds#include "csumpartialcopygeneric.S"
51