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