123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (C) 2013 ARM Ltd.
- * Copyright (C) 2013 Linaro.
- *
- * This code is based on glibc cortex strings work originally authored by Linaro
- * be found @
- *
- * http://bazaar.launchpad.net/~linaro-toolchain-dev/cortex-strings/trunk/
- * files/head:/src/aarch64/
- */
- #include <linux/linkage.h>
- #include <asm/assembler.h>
- #include <asm/cache.h>
- /*
- * Copy a buffer from src to dest (alignment handled by the hardware)
- *
- * Parameters:
- * x0 - dest
- * x1 - src
- * x2 - n
- * Returns:
- * x0 - dest
- */
- .macro ldrb1 reg, ptr, val
- ldrb \reg, [\ptr], \val
- .endm
- .macro strb1 reg, ptr, val
- strb \reg, [\ptr], \val
- .endm
- .macro ldrh1 reg, ptr, val
- ldrh \reg, [\ptr], \val
- .endm
- .macro strh1 reg, ptr, val
- strh \reg, [\ptr], \val
- .endm
- .macro ldr1 reg, ptr, val
- ldr \reg, [\ptr], \val
- .endm
- .macro str1 reg, ptr, val
- str \reg, [\ptr], \val
- .endm
- .macro ldp1 reg1, reg2, ptr, val
- ldp \reg1, \reg2, [\ptr], \val
- .endm
- .macro stp1 reg1, reg2, ptr, val
- stp \reg1, \reg2, [\ptr], \val
- .endm
- SYM_FUNC_START_ALIAS(__memcpy)
- SYM_FUNC_START_WEAK_PI(memcpy)
- #include "copy_template.S"
- ret
- SYM_FUNC_END_PI(memcpy)
- EXPORT_SYMBOL(memcpy)
- SYM_FUNC_END_ALIAS(__memcpy)
- EXPORT_SYMBOL(__memcpy)
|