~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/sparc/lib/GENmemcpy.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/sparc/lib/GENmemcpy.S (Version linux-6.12-rc7) and /arch/sparc/lib/GENmemcpy.S (Version linux-4.10.17)


  1 /* SPDX-License-Identifier: GPL-2.0 */         << 
  2 /* GENmemcpy.S: Generic sparc64 memcpy.             1 /* GENmemcpy.S: Generic sparc64 memcpy.
  3  *                                                  2  *
  4  * Copyright (C) 2007 David S. Miller (davem@d      3  * Copyright (C) 2007 David S. Miller (davem@davemloft.net)
  5  */                                                 4  */
  6                                                     5 
  7 #ifdef __KERNEL__                                   6 #ifdef __KERNEL__
  8 #include <linux/linkage.h>                          7 #include <linux/linkage.h>
  9 #define GLOBAL_SPARE    %g7                         8 #define GLOBAL_SPARE    %g7
 10 #else                                               9 #else
 11 #define GLOBAL_SPARE    %g5                        10 #define GLOBAL_SPARE    %g5
 12 #endif                                             11 #endif
 13                                                    12 
 14 #ifndef EX_LD                                      13 #ifndef EX_LD
 15 #define EX_LD(x,y)      x                          14 #define EX_LD(x,y)      x
 16 #endif                                             15 #endif
 17                                                    16 
 18 #ifndef EX_ST                                      17 #ifndef EX_ST
 19 #define EX_ST(x,y)      x                          18 #define EX_ST(x,y)      x
 20 #endif                                             19 #endif
 21                                                    20 
 22 #ifndef LOAD                                       21 #ifndef LOAD
 23 #define LOAD(type,addr,dest)    type [addr], d     22 #define LOAD(type,addr,dest)    type [addr], dest
 24 #endif                                             23 #endif
 25                                                    24 
 26 #ifndef STORE                                      25 #ifndef STORE
 27 #define STORE(type,src,addr)    type src, [add     26 #define STORE(type,src,addr)    type src, [addr]
 28 #endif                                             27 #endif
 29                                                    28 
 30 #ifndef FUNC_NAME                                  29 #ifndef FUNC_NAME
 31 #define FUNC_NAME       GENmemcpy                  30 #define FUNC_NAME       GENmemcpy
 32 #endif                                             31 #endif
 33                                                    32 
 34 #ifndef PREAMBLE                                   33 #ifndef PREAMBLE
 35 #define PREAMBLE                                   34 #define PREAMBLE
 36 #endif                                             35 #endif
 37                                                    36 
 38 #ifndef XCC                                        37 #ifndef XCC
 39 #define XCC xcc                                    38 #define XCC xcc
 40 #endif                                             39 #endif
 41                                                    40 
 42         .register       %g2,#scratch               41         .register       %g2,#scratch
 43         .register       %g3,#scratch               42         .register       %g3,#scratch
 44                                                    43 
 45         .text                                      44         .text
 46                                                    45 
 47 #ifndef EX_RETVAL                                  46 #ifndef EX_RETVAL
 48 #define EX_RETVAL(x)    x                          47 #define EX_RETVAL(x)    x
 49 ENTRY(GEN_retl_o4_1)                               48 ENTRY(GEN_retl_o4_1)
 50         add     %o4, %o2, %o4                      49         add     %o4, %o2, %o4
 51         retl                                       50         retl
 52          add    %o4, 1, %o0                        51          add    %o4, 1, %o0
 53 ENDPROC(GEN_retl_o4_1)                             52 ENDPROC(GEN_retl_o4_1)
 54 ENTRY(GEN_retl_g1_8)                               53 ENTRY(GEN_retl_g1_8)
 55         add     %g1, %o2, %g1                      54         add     %g1, %o2, %g1
 56         retl                                       55         retl
 57          add    %g1, 8, %o0                        56          add    %g1, 8, %o0
 58 ENDPROC(GEN_retl_g1_8)                             57 ENDPROC(GEN_retl_g1_8)
 59 ENTRY(GEN_retl_o2_4)                               58 ENTRY(GEN_retl_o2_4)
 60         retl                                       59         retl
 61          add    %o2, 4, %o0                        60          add    %o2, 4, %o0
 62 ENDPROC(GEN_retl_o2_4)                             61 ENDPROC(GEN_retl_o2_4)
 63 ENTRY(GEN_retl_o2_1)                               62 ENTRY(GEN_retl_o2_1)
 64         retl                                       63         retl
 65          add    %o2, 1, %o0                        64          add    %o2, 1, %o0
 66 ENDPROC(GEN_retl_o2_1)                             65 ENDPROC(GEN_retl_o2_1)
 67 #endif                                             66 #endif
 68                                                    67 
 69         .align          64                         68         .align          64
 70                                                    69 
 71         .globl  FUNC_NAME                          70         .globl  FUNC_NAME
 72         .type   FUNC_NAME,#function                71         .type   FUNC_NAME,#function
 73 FUNC_NAME:      /* %o0=dst, %o1=src, %o2=len *     72 FUNC_NAME:      /* %o0=dst, %o1=src, %o2=len */
 74         srlx            %o2, 31, %g2               73         srlx            %o2, 31, %g2
 75         cmp             %g2, 0                     74         cmp             %g2, 0
 76         tne             %XCC, 5                    75         tne             %XCC, 5
 77         PREAMBLE                                   76         PREAMBLE
 78         mov             %o0, GLOBAL_SPARE          77         mov             %o0, GLOBAL_SPARE
 79                                                    78 
 80         cmp             %o2, 0                     79         cmp             %o2, 0
 81         be,pn           %XCC, 85f                  80         be,pn           %XCC, 85f
 82          or             %o0, %o1, %o3              81          or             %o0, %o1, %o3
 83         cmp             %o2, 16                    82         cmp             %o2, 16
 84         blu,a,pn        %XCC, 80f                  83         blu,a,pn        %XCC, 80f
 85          or             %o3, %o2, %o3              84          or             %o3, %o2, %o3
 86                                                    85 
 87         xor             %o0, %o1, %o4              86         xor             %o0, %o1, %o4
 88         andcc           %o4, 0x7, %g0              87         andcc           %o4, 0x7, %g0
 89         bne,a,pn        %XCC, 90f                  88         bne,a,pn        %XCC, 90f
 90          sub            %o0, %o1, %o3              89          sub            %o0, %o1, %o3
 91                                                    90 
 92         and             %o0, 0x7, %o4              91         and             %o0, 0x7, %o4
 93         sub             %o4, 0x8, %o4              92         sub             %o4, 0x8, %o4
 94         sub             %g0, %o4, %o4              93         sub             %g0, %o4, %o4
 95         sub             %o2, %o4, %o2              94         sub             %o2, %o4, %o2
 96 1:      subcc           %o4, 1, %o4                95 1:      subcc           %o4, 1, %o4
 97         EX_LD(LOAD(ldub, %o1, %g1),GEN_retl_o4     96         EX_LD(LOAD(ldub, %o1, %g1),GEN_retl_o4_1)
 98         EX_ST(STORE(stb, %g1, %o0),GEN_retl_o4     97         EX_ST(STORE(stb, %g1, %o0),GEN_retl_o4_1)
 99         add             %o1, 1, %o1                98         add             %o1, 1, %o1
100         bne,pt          %XCC, 1b                   99         bne,pt          %XCC, 1b
101         add             %o0, 1, %o0               100         add             %o0, 1, %o0
102                                                   101 
103         andn            %o2, 0x7, %g1             102         andn            %o2, 0x7, %g1
104         sub             %o2, %g1, %o2             103         sub             %o2, %g1, %o2
105 1:      subcc           %g1, 0x8, %g1             104 1:      subcc           %g1, 0x8, %g1
106         EX_LD(LOAD(ldx, %o1, %g2),GEN_retl_g1_    105         EX_LD(LOAD(ldx, %o1, %g2),GEN_retl_g1_8)
107         EX_ST(STORE(stx, %g2, %o0),GEN_retl_g1    106         EX_ST(STORE(stx, %g2, %o0),GEN_retl_g1_8)
108         add             %o1, 0x8, %o1             107         add             %o1, 0x8, %o1
109         bne,pt          %XCC, 1b                  108         bne,pt          %XCC, 1b
110          add            %o0, 0x8, %o0             109          add            %o0, 0x8, %o0
111                                                   110 
112         brz,pt          %o2, 85f                  111         brz,pt          %o2, 85f
113          sub            %o0, %o1, %o3             112          sub            %o0, %o1, %o3
114         ba,a,pt         %XCC, 90f                 113         ba,a,pt         %XCC, 90f
115                                                   114 
116         .align          64                        115         .align          64
117 80: /* 0 < len <= 16 */                           116 80: /* 0 < len <= 16 */
118         andcc           %o3, 0x3, %g0             117         andcc           %o3, 0x3, %g0
119         bne,pn          %XCC, 90f                 118         bne,pn          %XCC, 90f
120          sub            %o0, %o1, %o3             119          sub            %o0, %o1, %o3
121                                                   120 
122 1:                                                121 1:
123         subcc           %o2, 4, %o2               122         subcc           %o2, 4, %o2
124         EX_LD(LOAD(lduw, %o1, %g1),GEN_retl_o2    123         EX_LD(LOAD(lduw, %o1, %g1),GEN_retl_o2_4)
125         EX_ST(STORE(stw, %g1, %o1 + %o3),GEN_r    124         EX_ST(STORE(stw, %g1, %o1 + %o3),GEN_retl_o2_4)
126         bgu,pt          %XCC, 1b                  125         bgu,pt          %XCC, 1b
127          add            %o1, 4, %o1               126          add            %o1, 4, %o1
128                                                   127 
129 85:     retl                                      128 85:     retl
130          mov            EX_RETVAL(GLOBAL_SPARE    129          mov            EX_RETVAL(GLOBAL_SPARE), %o0
131                                                   130 
132         .align          32                        131         .align          32
133 90:                                               132 90:
134         subcc           %o2, 1, %o2               133         subcc           %o2, 1, %o2
135         EX_LD(LOAD(ldub, %o1, %g1),GEN_retl_o2    134         EX_LD(LOAD(ldub, %o1, %g1),GEN_retl_o2_1)
136         EX_ST(STORE(stb, %g1, %o1 + %o3),GEN_r    135         EX_ST(STORE(stb, %g1, %o1 + %o3),GEN_retl_o2_1)
137         bgu,pt          %XCC, 90b                 136         bgu,pt          %XCC, 90b
138          add            %o1, 1, %o1               137          add            %o1, 1, %o1
139         retl                                      138         retl
140          mov            EX_RETVAL(GLOBAL_SPARE    139          mov            EX_RETVAL(GLOBAL_SPARE), %o0
141                                                   140 
142         .size           FUNC_NAME, .-FUNC_NAME    141         .size           FUNC_NAME, .-FUNC_NAME
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php