From: Vineet Gupta <vgu...@kernel.org> The only functional change is eliding the unaligned buffer head handling. Also cleanup macros adding argument default values.
Signed-off-by: Vineet Gupta <vgu...@kernel.org> --- arch/arc/lib/memset-archs.S | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/arch/arc/lib/memset-archs.S b/arch/arc/lib/memset-archs.S index d0a5cec4cdca..330e22f7cf3c 100644 --- a/arch/arc/lib/memset-archs.S +++ b/arch/arc/lib/memset-archs.S @@ -17,43 +17,43 @@ #if L1_CACHE_SHIFT == 6 -.macro PREALLOC_INSTR reg, off - prealloc [\reg, \off] +.macro PREALLOCR s, off=0 + prealloc [\s, \off] .endm -.macro PREFETCHW_INSTR reg, off - prefetchw [\reg, \off] +.macro PREFETCHWR s, off=0 + prefetchw [\s, \off] .endm #else -.macro PREALLOC_INSTR reg, off +.macro PREALLOCR s, off=0 .endm -.macro PREFETCHW_INSTR reg, off +.macro PREFETCHWR s, off=0 .endm #endif ENTRY_CFI(memset) + ; return if size 0 (happens lot) mov.f 0, r2 -;;; if size is zero jz.d [blink] - mov r3, r0 ; don't clobber ret val + mov r3, r0 ; make a copy of input pointer reg - PREFETCHW_INSTR r0, 0 ; Prefetch the first write location + PREFETCHWR r0 -;;; if length < 8 - brls.d.nt r2, 8, .Lsmallchunk - mov.f lp_count,r2 + ; small 1-8 byte handled in tail byte loop :-) + brlo r2, 8, .Lbyteloop - and.f r4, r0, 0x03 - rsub lp_count, r4, 4 - lpnz @.Laligndestination - ;; LOOP BEGIN +#ifndef CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS + ; handle any starting unaligned bytes (upto 3) + and.f lp_count, r0, 0x3 + lpnz 1f stb.ab r1, [r3,1] sub r2, r2, 1 -.Laligndestination: +1: +#endif ;;; Destination is aligned and r1, r1, 0xFF -- 2.25.1 _______________________________________________ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc