1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * linux/arch/arm/lib/csumpartialcopy.S 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 1995-1998 Russell King 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun#include <linux/linkage.h> 8*4882a593Smuzhiyun#include <asm/assembler.h> 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun .text 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun/* Function: __u32 csum_partial_copy_nocheck(const char *src, char *dst, int len) 13*4882a593Smuzhiyun * Params : r0 = src, r1 = dst, r2 = len 14*4882a593Smuzhiyun * Returns : r0 = new checksum 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun .macro save_regs 18*4882a593Smuzhiyun stmfd sp!, {r1, r4 - r8, lr} 19*4882a593Smuzhiyun .endm 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun .macro load_regs 22*4882a593Smuzhiyun ldmfd sp!, {r1, r4 - r8, pc} 23*4882a593Smuzhiyun .endm 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun .macro load1b, reg1 26*4882a593Smuzhiyun ldrb \reg1, [r0], #1 27*4882a593Smuzhiyun .endm 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun .macro load2b, reg1, reg2 30*4882a593Smuzhiyun ldrb \reg1, [r0], #1 31*4882a593Smuzhiyun ldrb \reg2, [r0], #1 32*4882a593Smuzhiyun .endm 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun .macro load1l, reg1 35*4882a593Smuzhiyun ldr \reg1, [r0], #4 36*4882a593Smuzhiyun .endm 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun .macro load2l, reg1, reg2 39*4882a593Smuzhiyun ldr \reg1, [r0], #4 40*4882a593Smuzhiyun ldr \reg2, [r0], #4 41*4882a593Smuzhiyun .endm 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun .macro load4l, reg1, reg2, reg3, reg4 44*4882a593Smuzhiyun ldmia r0!, {\reg1, \reg2, \reg3, \reg4} 45*4882a593Smuzhiyun .endm 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun#define FN_ENTRY ENTRY(csum_partial_copy_nocheck) 48*4882a593Smuzhiyun#define FN_EXIT ENDPROC(csum_partial_copy_nocheck) 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun#include "csumpartialcopygeneric.S" 51