diff options
author | Evan Green <evan@rivosinc.com> | 2024-02-27 14:56:43 -0800 |
---|---|---|
committer | Palmer Dabbelt <palmer@rivosinc.com> | 2024-03-01 07:15:01 -0800 |
commit | 587a1290a1af7bee6dbb40ebadb7a4d71e698baf (patch) | |
tree | 1e01dbbb28f39cc0c24653f56d9482038fa25339 /sysdeps/riscv/memcopy.h | |
parent | a2b47f7d4679a01d56827e1aff2a40de173fab23 (diff) | |
download | glibc-587a1290a1af7bee6dbb40ebadb7a4d71e698baf.tar.gz glibc-587a1290a1af7bee6dbb40ebadb7a4d71e698baf.tar.xz glibc-587a1290a1af7bee6dbb40ebadb7a4d71e698baf.zip |
riscv: Add and use alignment-ignorant memcpy
For CPU implementations that can perform unaligned accesses with little or no performance penalty, create a memcpy implementation that does not bother aligning buffers. It will use a block of integer registers, a single integer register, and fall back to bytewise copy for the remainder. Signed-off-by: Evan Green <evan@rivosinc.com> Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com> Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Diffstat (limited to 'sysdeps/riscv/memcopy.h')
-rw-r--r-- | sysdeps/riscv/memcopy.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sysdeps/riscv/memcopy.h b/sysdeps/riscv/memcopy.h new file mode 100644 index 0000000000..27675964b0 --- /dev/null +++ b/sysdeps/riscv/memcopy.h @@ -0,0 +1,26 @@ +/* memcopy.h -- definitions for memory copy functions. RISC-V version. + Copyright (C) 2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <sysdeps/generic/memcopy.h> + +/* Redefine the generic memcpy implementation to __memcpy_generic, so + the memcpy ifunc can select between generic and special versions. + In rtld, don't bother with all the ifunciness. */ +#if IS_IN (libc) +#define MEMCPY __memcpy_generic +#endif |