root/arch/c6x/lib/memcpy_64plus.S

/* [<][>][^][v][top][bottom][index][help] */
   1 ; SPDX-License-Identifier: GPL-2.0-only
   2 ;  Port on Texas Instruments TMS320C6x architecture
   3 ;
   4 ;  Copyright (C) 2006, 2009, 2010 Texas Instruments Incorporated
   5 ;  Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com)
   6 ;
   7 
   8 #include <linux/linkage.h>
   9 
  10         .text
  11 
  12 ENTRY(memcpy)
  13         AND     .L1     0x1,A6,A0
  14  ||     AND     .S1     0x2,A6,A1
  15  ||     AND     .L2X    0x4,A6,B0
  16  ||     MV      .D1     A4,A3
  17  ||     MVC     .S2     ILC,B2
  18 
  19    [A0] LDB     .D2T1   *B4++,A5
  20    [A1] LDB     .D2T1   *B4++,A7
  21    [A1] LDB     .D2T1   *B4++,A8
  22    [B0] LDNW    .D2T1   *B4++,A9
  23  ||     SHRU    .S2X    A6,0x3,B1
  24   [!B1] BNOP    .S2     B3,1
  25 
  26    [A0] STB     .D1T1   A5,*A3++
  27  ||[B1] MVC     .S2     B1,ILC
  28    [A1] STB     .D1T1   A7,*A3++
  29    [A1] STB     .D1T1   A8,*A3++
  30    [B0] STNW    .D1T1   A9,*A3++        ; return when len < 8
  31 
  32         SPLOOP  2
  33 
  34         LDNDW   .D2T1   *B4++,A9:A8
  35         NOP     3
  36 
  37         NOP
  38         SPKERNEL        0,0
  39  ||     STNDW   .D1T1   A9:A8,*A3++
  40 
  41         BNOP    .S2     B3,4
  42         MVC     .S2     B2,ILC
  43 ENDPROC(memcpy)

/* [<][>][^][v][top][bottom][index][help] */