lkml.org 
[lkml]   [2021]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v3 0/3] riscv: optimized mem* functions
    Date
    From: Matteo Croce <mcroce@microsoft.com>

    Replace the assembly mem{cpy,move,set} with C equivalent.

    Try to access RAM with the largest bit width possible, but without
    doing unaligned accesses.

    Tested on a BeagleV Starlight with a SiFive U74 core, where the
    improvement is noticeable.

    v2 -> v3:
    - alias mem* to __mem* and not viceversa
    - use __alias instead of a tail call

    v1 -> v2:
    - reduce the threshold from 64 to 16 bytes
    - fix KASAN build
    - optimize memset

    Matteo Croce (3):
    riscv: optimized memcpy
    riscv: optimized memmove
    riscv: optimized memset

    arch/riscv/include/asm/string.h | 18 ++--
    arch/riscv/kernel/Makefile | 1 -
    arch/riscv/kernel/riscv_ksyms.c | 17 ----
    arch/riscv/lib/Makefile | 4 +-
    arch/riscv/lib/memcpy.S | 108 ----------------------
    arch/riscv/lib/memmove.S | 64 -------------
    arch/riscv/lib/memset.S | 113 -----------------------
    arch/riscv/lib/string.c | 153 ++++++++++++++++++++++++++++++++
    8 files changed, 163 insertions(+), 315 deletions(-)
    delete mode 100644 arch/riscv/kernel/riscv_ksyms.c
    delete mode 100644 arch/riscv/lib/memcpy.S
    delete mode 100644 arch/riscv/lib/memmove.S
    delete mode 100644 arch/riscv/lib/memset.S
    create mode 100644 arch/riscv/lib/string.c

    --
    2.31.1

    \
     
     \ /
      Last update: 2021-06-17 17:28    [W:3.131 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site